mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Compare commits
175 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
138b7699d9 | ||
|
|
d7202b12bf | ||
|
|
7e7c90d4fb | ||
|
|
50503e126e | ||
|
|
2f2d64135a | ||
|
|
dea88f87df | ||
|
|
819207c4f1 | ||
|
|
63d3393b7b | ||
|
|
960ebf3bbb | ||
|
|
dba6b1a24f | ||
|
|
5968788105 | ||
|
|
819f750591 | ||
|
|
be3e15cd6e | ||
|
|
871f80f654 | ||
|
|
c2c5d2a0c5 | ||
|
|
86e08bc3f5 | ||
|
|
c63c64967f | ||
|
|
468ed27390 | ||
|
|
c6ea0b0e3e | ||
|
|
000162b989 | ||
|
|
df5bdfde33 | ||
|
|
815d033a56 | ||
|
|
857d858987 | ||
|
|
9d130ca540 | ||
|
|
0a503d286a | ||
|
|
f72e3a69dd | ||
|
|
35867a434c | ||
|
|
5570513eeb | ||
|
|
ceb1c9a250 | ||
|
|
e942d3fd49 | ||
|
|
482fe00014 | ||
|
|
54fdf9231c | ||
|
|
b9be9a9c97 | ||
|
|
501d0a1666 | ||
|
|
a7e50f89ca | ||
|
|
083e918086 | ||
|
|
e6a547dbfd | ||
|
|
1321b2eb31 | ||
|
|
5e96e3e9bc | ||
|
|
5e4bd13aa9 | ||
|
|
f320da9245 | ||
|
|
a024c05bc1 | ||
|
|
15501c7845 | ||
|
|
011fdeeb36 | ||
|
|
3df0aa04de | ||
|
|
9f364a331c | ||
|
|
08af10afef | ||
|
|
4ea59d2669 | ||
|
|
5eb0c1d095 | ||
|
|
a8c32470b3 | ||
|
|
45709eb7d6 | ||
|
|
ecbd926d81 | ||
|
|
1cca7a5881 | ||
|
|
0d3332faf3 | ||
|
|
aa74730e12 | ||
|
|
9b5e2acf90 | ||
|
|
3fafe63c42 | ||
|
|
6c0252156c | ||
|
|
3a750c08b5 | ||
|
|
e28f51cce6 | ||
|
|
b0c48b9e63 | ||
|
|
ec17d8cb80 | ||
|
|
42ac2d627c | ||
|
|
3c241cafba | ||
|
|
873fcc0591 | ||
|
|
73d5a0bb90 | ||
|
|
ff5ac7de7e | ||
|
|
917fe112b8 | ||
|
|
4855733274 | ||
|
|
740a34fa9c | ||
|
|
534dc3d344 | ||
|
|
a52a87bcfd | ||
|
|
cdeb4951dc | ||
|
|
77d89505b3 | ||
|
|
4be790dce0 | ||
|
|
c9698a1613 | ||
|
|
819506e7ee | ||
|
|
489616d255 | ||
|
|
1103ab70f6 | ||
|
|
dbf0cbc3ac | ||
|
|
a45d693937 | ||
|
|
0db49af310 | ||
|
|
28daaf9a4c | ||
|
|
38d02ee7f9 | ||
|
|
c6d1b29a49 | ||
|
|
79cd773632 | ||
|
|
897de4ed27 | ||
|
|
afa6dbb542 | ||
|
|
80fbee2609 | ||
|
|
e1c83da19b | ||
|
|
59b5888632 | ||
|
|
cd74c62908 | ||
|
|
000fbe466f | ||
|
|
ab08bd8ab4 | ||
|
|
9f157d323e | ||
|
|
9c236ca17b | ||
|
|
ba8effcaad | ||
|
|
28f8cc95fd | ||
|
|
07f1edb02f | ||
|
|
6758d9224d | ||
|
|
5e51511df0 | ||
|
|
e71d283474 | ||
|
|
d0f0bd9155 | ||
|
|
ef769982e0 | ||
|
|
68fb3b10a6 | ||
|
|
0a89062b52 | ||
|
|
fa4b614bb0 | ||
|
|
6f526c1e82 | ||
|
|
389ee0d132 | ||
|
|
ffd9bf6673 | ||
|
|
80f61912f3 | ||
|
|
2833373f9e | ||
|
|
cf94973419 | ||
|
|
421dc0c05c | ||
|
|
38965bad9f | ||
|
|
d0f1b70c9f | ||
|
|
2e025edeb5 | ||
|
|
c69150f4ef | ||
|
|
0a419ac1f6 | ||
|
|
47dcf2a980 | ||
|
|
1ea3725568 | ||
|
|
7f44ba0195 | ||
|
|
ce01d72db0 | ||
|
|
451f290c34 | ||
|
|
2c6d8b86a9 | ||
|
|
5c7ba8593f | ||
|
|
3cb5f3de0e | ||
|
|
c8a6e79144 | ||
|
|
6b97bc1eaf | ||
|
|
0d2fefb8c4 | ||
|
|
acfce9867e | ||
|
|
d1e1b6704d | ||
|
|
5913d4fdd7 | ||
|
|
0fd6693434 | ||
|
|
e96e37a573 | ||
|
|
58b5221b3c | ||
|
|
0192d59524 | ||
|
|
01cede58b5 | ||
|
|
3dbbddfa58 | ||
|
|
1b898b44d2 | ||
|
|
dc7362dab1 | ||
|
|
cbd4a5e27c | ||
|
|
5e9b002013 | ||
|
|
5077c30704 | ||
|
|
d6363dee85 | ||
|
|
359575d00d | ||
|
|
9dc444fd33 | ||
|
|
a5b8885ff6 | ||
|
|
56676005a5 | ||
|
|
0e59f9318e | ||
|
|
21a2dca271 | ||
|
|
e265a78b4f | ||
|
|
18b6dd794f | ||
|
|
9fd9506177 | ||
|
|
a30b202022 | ||
|
|
b9534fdfe5 | ||
|
|
cb3bf3ea90 | ||
|
|
5b64f89351 | ||
|
|
de10360224 | ||
|
|
63828e3db7 | ||
|
|
8b66e95b8b | ||
|
|
cd930cebf9 | ||
|
|
7bdaca93d5 | ||
|
|
ef6990c528 | ||
|
|
72f01321ae | ||
|
|
e6767126c9 | ||
|
|
50f0c82b70 | ||
|
|
12587e222f | ||
|
|
dfb51b897e | ||
|
|
cc36184834 | ||
|
|
338a5e85f4 | ||
|
|
632ed073a1 | ||
|
|
07a1ea46c7 | ||
|
|
8e0bea59aa | ||
|
|
0deccfa47a |
2
.github/FUNDING.yml
vendored
Normal file
2
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# These are supported funding model platforms
|
||||||
|
custom: https://g-helper.com/support
|
||||||
@@ -347,6 +347,7 @@ namespace GHelper.Ally
|
|||||||
if (!autoTDP && _mode != ControllerMode.Auto) return;
|
if (!autoTDP && _mode != ControllerMode.Auto) return;
|
||||||
|
|
||||||
float fps = amdControl.GetFPS();
|
float fps = amdControl.GetFPS();
|
||||||
|
int? usage = 0;
|
||||||
|
|
||||||
if (autoTDP && fpsLimit > 0 && fpsLimit <= 120)
|
if (autoTDP && fpsLimit > 0 && fpsLimit <= 120)
|
||||||
{
|
{
|
||||||
@@ -377,7 +378,8 @@ namespace GHelper.Ally
|
|||||||
|
|
||||||
if (_mode == ControllerMode.Auto)
|
if (_mode == ControllerMode.Auto)
|
||||||
{
|
{
|
||||||
ControllerMode newMode = (fps > 0) ? ControllerMode.Gamepad : ControllerMode.Mouse;
|
if (fps > 0) usage = amdControl.GetiGpuUse();
|
||||||
|
ControllerMode newMode = (fps > 0 && usage > 15) ? ControllerMode.Gamepad : ControllerMode.Mouse;
|
||||||
|
|
||||||
if (_applyMode != newMode) _autoCount++;
|
if (_applyMode != newMode) _autoCount++;
|
||||||
else _autoCount = 0;
|
else _autoCount = 0;
|
||||||
@@ -386,7 +388,7 @@ namespace GHelper.Ally
|
|||||||
{
|
{
|
||||||
_autoCount = 0;
|
_autoCount = 0;
|
||||||
ApplyMode(newMode);
|
ApplyMode(newMode);
|
||||||
Logger.WriteLine($"Controller Mode {fps}: {newMode}");
|
Logger.WriteLine($"Controller Mode (FPS={fps}, USAGE={usage}%): {newMode}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -614,9 +616,9 @@ namespace GHelper.Ally
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ApplyXBoxStatus()
|
public static void DisableXBoxController(bool disabled)
|
||||||
{
|
{
|
||||||
AsusHid.WriteInput(new byte[] { AsusHid.INPUT_ID, 0xD1, 0x0B, 0x01, AppConfig.Is("controller_disabled") ? (byte)0x02 : (byte)0x01 }, "Status");
|
AsusHid.WriteInput([AsusHid.INPUT_ID, 0xD1, 0x0B, 0x01, disabled ? (byte)0x02 : (byte)0x01], $"ControllerDisabled: {disabled}");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ApplyMode(ControllerMode applyMode = ControllerMode.Auto, bool init = false)
|
public static void ApplyMode(ControllerMode applyMode = ControllerMode.Auto, bool init = false)
|
||||||
@@ -646,10 +648,10 @@ namespace GHelper.Ally
|
|||||||
if (init)
|
if (init)
|
||||||
{
|
{
|
||||||
WakeUp();
|
WakeUp();
|
||||||
InputDispatcher.SetBacklightAuto(true);
|
InputDispatcher.SetBacklightAuto();
|
||||||
}
|
}
|
||||||
|
|
||||||
AsusHid.WriteInput(new byte[] { AsusHid.INPUT_ID, 0xD1, 0x01, 0x01, (byte)_applyMode }, "Controller");
|
AsusHid.WriteInput([AsusHid.INPUT_ID, 0xD1, 0x01, 0x01, (byte)_applyMode], "Controller");
|
||||||
//AsusHid.WriteInput(CommandSave, null);
|
//AsusHid.WriteInput(CommandSave, null);
|
||||||
|
|
||||||
BindZone(BindingZone.M1M2);
|
BindZone(BindingZone.M1M2);
|
||||||
@@ -666,6 +668,13 @@ namespace GHelper.Ally
|
|||||||
|
|
||||||
SetDeadzones();
|
SetDeadzones();
|
||||||
|
|
||||||
|
if (init && AppConfig.Is("controller_disabled"))
|
||||||
|
{
|
||||||
|
Thread.Sleep(500);
|
||||||
|
DisableXBoxController(false);
|
||||||
|
DisableXBoxController(true);
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,8 @@ namespace GHelper.AnimeMatrix
|
|||||||
public AniMatrixControl(SettingsForm settingsForm)
|
public AniMatrixControl(SettingsForm settingsForm)
|
||||||
{
|
{
|
||||||
settings = settingsForm;
|
settings = settingsForm;
|
||||||
|
if (!AppConfig.IsSlash() && !AppConfig.IsAnimeMatrix()) return;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (AppConfig.IsSlash())
|
if (AppConfig.IsSlash())
|
||||||
@@ -114,6 +115,7 @@ namespace GHelper.AnimeMatrix
|
|||||||
switch ((SlashMode)running)
|
switch ((SlashMode)running)
|
||||||
{
|
{
|
||||||
case SlashMode.Static:
|
case SlashMode.Static:
|
||||||
|
Logger.WriteLine("Slash: Static");
|
||||||
var custom = AppConfig.GetString("slash_custom");
|
var custom = AppConfig.GetString("slash_custom");
|
||||||
if (custom is not null && custom.Length > 0)
|
if (custom is not null && custom.Length > 0)
|
||||||
{
|
{
|
||||||
@@ -126,6 +128,7 @@ namespace GHelper.AnimeMatrix
|
|||||||
break;
|
break;
|
||||||
case SlashMode.BatteryLevel:
|
case SlashMode.BatteryLevel:
|
||||||
// call tick to immediately update the pattern
|
// call tick to immediately update the pattern
|
||||||
|
Logger.WriteLine("Slash: Battery Level");
|
||||||
SlashTimer_start();
|
SlashTimer_start();
|
||||||
SlashTimer_tick();
|
SlashTimer_tick();
|
||||||
break;
|
break;
|
||||||
@@ -148,7 +151,7 @@ namespace GHelper.AnimeMatrix
|
|||||||
|
|
||||||
if (deviceSlash is not null)
|
if (deviceSlash is not null)
|
||||||
{
|
{
|
||||||
deviceSlash.SetLidMode(true);
|
deviceSlash.SetLidMode(!matrixLid && AppConfig.Is("slash_sleep"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (matrixLid || force)
|
if (matrixLid || force)
|
||||||
@@ -211,7 +214,7 @@ namespace GHelper.AnimeMatrix
|
|||||||
switch (running)
|
switch (running)
|
||||||
{
|
{
|
||||||
case 2:
|
case 2:
|
||||||
SetMatrixPicture(AppConfig.GetString("matrix_picture"));
|
SetMatrixPicture(AppConfig.GetString("matrix_picture"), false);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
SetMatrixClock();
|
SetMatrixClock();
|
||||||
@@ -278,7 +281,7 @@ namespace GHelper.AnimeMatrix
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void SlashTimer_start(int interval = 60000)
|
private void SlashTimer_start(int interval = 180000)
|
||||||
{
|
{
|
||||||
// 100% to 0% in 1hr = 1% every 36 seconds
|
// 100% to 0% in 1hr = 1% every 36 seconds
|
||||||
// 1 bracket every 14.2857 * 36s = 514s ~ 8m 30s
|
// 1 bracket every 14.2857 * 36s = 514s ~ 8m 30s
|
||||||
|
|||||||
@@ -410,7 +410,7 @@ namespace GHelper.AnimeMatrix
|
|||||||
if (DateTime.Now.Second % 2 != 0) timeFormat = timeFormat.Replace(":", " ");
|
if (DateTime.Now.Second % 2 != 0) timeFormat = timeFormat.Replace(":", " ");
|
||||||
|
|
||||||
Clear();
|
Clear();
|
||||||
Text(DateTime.Now.ToString(timeFormat), 15, 2, 25);
|
Text(DateTime.Now.ToString(timeFormat), 15, 7 - FullRows / 2, 25);
|
||||||
Text(DateTime.Now.ToString(dateFormat), 11.5F, 0, 14);
|
Text(DateTime.Now.ToString(dateFormat), 11.5F, 0, 14);
|
||||||
Present();
|
Present();
|
||||||
|
|
||||||
|
|||||||
@@ -182,17 +182,17 @@ namespace GHelper.AnimeMatrix
|
|||||||
|
|
||||||
public void SetBatteryPattern(int brightness)
|
public void SetBatteryPattern(int brightness)
|
||||||
{
|
{
|
||||||
SetCustom(GetBatteryPattern(brightness, 100 * (GetBatteryChargePercentage() / AppConfig.Get("charge_limit", 100))));
|
SetCustom(GetBatteryPattern(brightness, 100 * (GetBatteryChargePercentage() / AppConfig.Get("charge_limit", 100))), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetCustom(byte[] data)
|
public void SetCustom(byte[] data, string? log = "Static Data")
|
||||||
{
|
{
|
||||||
Set(CreatePacket([0xD2, 0x02, 0x01, 0x08, 0xAC]), "Static");
|
Set(CreatePacket([0xD2, 0x02, 0x01, 0x08, 0xAC]), null);
|
||||||
Set(CreatePacket([0xD3, 0x03, 0x01, 0x08, 0xAC, 0xFF, 0xFF, 0x01, 0x05, 0xFF, 0xFF]), "StaticSettings");
|
Set(CreatePacket([0xD3, 0x03, 0x01, 0x08, 0xAC, 0xFF, 0xFF, 0x01, 0x05, 0xFF, 0xFF]), null);
|
||||||
Set(CreatePacket([0xD4, 0x00, 0x00, 0x01, 0xAC]), "StaticSave");
|
Set(CreatePacket([0xD4, 0x00, 0x00, 0x01, 0xAC]), null);
|
||||||
|
|
||||||
byte[] payload = new byte[] { 0xD3, 0x00, 0x00, 0x07 };
|
byte[] payload = new byte[] { 0xD3, 0x00, 0x00, 0x07 };
|
||||||
Set(CreatePacket(payload.Concat(data.Take(7)).ToArray()), "Static Data");
|
Set(CreatePacket(payload.Concat(data.Take(7)).ToArray()), log);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetOptions(bool status, int brightness = 0, int interval = 0)
|
public void SetOptions(bool status, int brightness = 0, int interval = 0)
|
||||||
@@ -209,7 +209,7 @@ namespace GHelper.AnimeMatrix
|
|||||||
|
|
||||||
public void SetLidMode(bool status)
|
public void SetLidMode(bool status)
|
||||||
{
|
{
|
||||||
Set(CreatePacket([0xD8, 0x00, 0x00, 0x02, 0xA5, status ? (byte)0x80 : (byte)0x00]), $"DisableLidClose {status}");
|
Set(CreatePacket([0xD8, 0x00, 0x00, 0x02, 0xA5, status ? (byte)0x80 : (byte)0x00]), $"SlashLidCloseAnimation {status}");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetSleepActive(bool status)
|
public void SetSleepActive(bool status)
|
||||||
|
|||||||
116
app/AppConfig.cs
116
app/AppConfig.cs
@@ -12,7 +12,7 @@ public static class AppConfig
|
|||||||
private static string? _bios;
|
private static string? _bios;
|
||||||
|
|
||||||
private static Dictionary<string, object> config = new Dictionary<string, object>();
|
private static Dictionary<string, object> config = new Dictionary<string, object>();
|
||||||
private static System.Timers.Timer timer = new System.Timers.Timer(1000);
|
private static System.Timers.Timer timer = new System.Timers.Timer(2000);
|
||||||
|
|
||||||
static AppConfig()
|
static AppConfig()
|
||||||
{
|
{
|
||||||
@@ -41,10 +41,19 @@ public static class AppConfig
|
|||||||
{
|
{
|
||||||
config = JsonSerializer.Deserialize<Dictionary<string, object>>(text);
|
config = JsonSerializer.Deserialize<Dictionary<string, object>>(text);
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.WriteLine("Broken config: " + text);
|
Logger.WriteLine($"Broken config: {ex.Message} {text}");
|
||||||
Init();
|
try
|
||||||
|
{
|
||||||
|
text = File.ReadAllText(configFile + ".bak");
|
||||||
|
config = JsonSerializer.Deserialize<Dictionary<string, object>>(text);
|
||||||
|
}
|
||||||
|
catch (Exception exb)
|
||||||
|
{
|
||||||
|
Logger.WriteLine($"Broken backup config: {exb.Message} {text}");
|
||||||
|
Init();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -83,7 +92,9 @@ public static class AppConfig
|
|||||||
|
|
||||||
Thread.Sleep(500);
|
Thread.Sleep(500);
|
||||||
|
|
||||||
if (File.ReadAllText(backup).Contains("}"))
|
var backupText = File.ReadAllText(backup);
|
||||||
|
|
||||||
|
if (backupText.Contains("{") && backupText.Contains("}"))
|
||||||
{
|
{
|
||||||
File.Copy(backup, configFile, true);
|
File.Copy(backup, configFile, true);
|
||||||
}
|
}
|
||||||
@@ -210,6 +221,7 @@ public static class AppConfig
|
|||||||
|
|
||||||
private static void Write()
|
private static void Write()
|
||||||
{
|
{
|
||||||
|
timer.Stop();
|
||||||
timer.Start();
|
timer.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -293,27 +305,32 @@ public static class AppConfig
|
|||||||
|
|
||||||
switch (mode)
|
switch (mode)
|
||||||
{
|
{
|
||||||
case 1:
|
case AsusACPI.PerformanceTurbo:
|
||||||
if (device == AsusFan.GPU)
|
switch (device)
|
||||||
curve = StringToBytes("14-3F-44-48-4C-50-54-62-16-1F-26-2D-39-47-55-5F");
|
{
|
||||||
else
|
case AsusFan.GPU:
|
||||||
curve = StringToBytes("14-3F-44-48-4C-50-54-62-11-1A-22-29-34-43-51-5A");
|
return StringToBytes("14-3F-44-48-4C-50-54-62-16-1F-26-2D-39-47-55-5F");
|
||||||
break;
|
default:
|
||||||
case 2:
|
return StringToBytes("14-3F-44-48-4C-50-54-62-11-1A-22-29-34-43-51-5A");
|
||||||
if (device == AsusFan.GPU)
|
}
|
||||||
curve = StringToBytes("3C-41-42-46-47-4B-4C-62-08-11-11-1D-1D-26-26-2D");
|
case AsusACPI.PerformanceSilent:
|
||||||
else
|
switch (device)
|
||||||
curve = StringToBytes("3C-41-42-46-47-4B-4C-62-03-0C-0C-16-16-22-22-29");
|
{
|
||||||
break;
|
case AsusFan.GPU:
|
||||||
|
return StringToBytes("3C-41-42-46-47-4B-4C-62-08-11-11-1D-1D-26-26-2D");
|
||||||
|
default:
|
||||||
|
return StringToBytes("3C-41-42-46-47-4B-4C-62-03-0C-0C-16-16-22-22-29");
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
if (device == AsusFan.GPU)
|
switch (device)
|
||||||
curve = StringToBytes("3A-3D-40-44-48-4D-51-62-0C-16-1D-1F-26-2D-34-4A");
|
{
|
||||||
else
|
case AsusFan.GPU:
|
||||||
curve = StringToBytes("3A-3D-40-44-48-4D-51-62-08-11-16-1A-22-29-30-45");
|
return StringToBytes("3A-3D-40-44-48-4D-51-62-0C-16-1D-1F-26-2D-34-4A");
|
||||||
break;
|
default:
|
||||||
|
return StringToBytes("3A-3D-40-44-48-4D-51-62-08-11-16-1A-22-29-30-45");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return curve;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetModeString(string name)
|
public static string GetModeString(string name)
|
||||||
@@ -382,34 +399,44 @@ public static class AppConfig
|
|||||||
return ContainsModel("Vivobook") || ContainsModel("Zenbook") || ContainsModel("ProArt");
|
return ContainsModel("Vivobook") || ContainsModel("Zenbook") || ContainsModel("ProArt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool IsHardwareFnLock()
|
||||||
|
{
|
||||||
|
return IsVivoZenPro();
|
||||||
|
}
|
||||||
|
|
||||||
// Devices with bugged bios command to change brightness
|
// Devices with bugged bios command to change brightness
|
||||||
public static bool SwappedBrightness()
|
public static bool SwappedBrightness()
|
||||||
{
|
{
|
||||||
return ContainsModel("FA506IH") || ContainsModel("FA506IC") || ContainsModel("FX506LU") || ContainsModel("FX506IC") || ContainsModel("FX506LH") || ContainsModel("FA506IV") || ContainsModel("FA706IC");
|
return ContainsModel("FA506IH") || ContainsModel("FA506IC") || ContainsModel("FX506LU") || ContainsModel("FX506IC") || ContainsModel("FX506LH") || ContainsModel("FA506IV") || ContainsModel("FA706IC") || ContainsModel("FA706IH");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static bool IsDUO()
|
public static bool IsDUO()
|
||||||
{
|
{
|
||||||
return ContainsModel("Duo") || ContainsModel("GX550") || ContainsModel("GX650");
|
return ContainsModel("Duo") || ContainsModel("GX550") || ContainsModel("GX650") || ContainsModel("UX840");
|
||||||
}
|
}
|
||||||
|
|
||||||
// G14 2020 has no aura, but media keys instead
|
// G14 2020 has no aura, but media keys instead
|
||||||
public static bool NoAura()
|
public static bool NoAura()
|
||||||
{
|
{
|
||||||
return ContainsModel("GA401I") && !ContainsModel("GA401IHR");
|
return (ContainsModel("GA401I") && !ContainsModel("GA401IHR")) || ContainsModel("GA502IU") || ContainsModel("HN7306");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool MediaKeys()
|
public static bool MediaKeys()
|
||||||
{
|
{
|
||||||
return NoAura() || ContainsModel("G712L");
|
return (ContainsModel("GA401I") && !ContainsModel("GA401IHR")) || ContainsModel("G712L");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsSingleColor()
|
public static bool IsSingleColor()
|
||||||
{
|
{
|
||||||
return ContainsModel("GA401") || ContainsModel("FX517Z") || ContainsModel("FX516P") || ContainsModel("X13") || IsARCNM() || ContainsModel("GA502IU") || ContainsModel("FA617N") || ContainsModel("FA617X");
|
return ContainsModel("GA401") || ContainsModel("FX517Z") || ContainsModel("FX516P") || ContainsModel("X13") || IsARCNM() || ContainsModel("FA617N") || ContainsModel("FA617X") || NoAura();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool IsAnimeMatrix()
|
||||||
|
{
|
||||||
|
return ContainsModel("GA401") || ContainsModel("GA402") || ContainsModel("GU604V");
|
||||||
|
}
|
||||||
|
|
||||||
public static bool IsSlash()
|
public static bool IsSlash()
|
||||||
{
|
{
|
||||||
return ContainsModel("GA403") || ContainsModel("GU605") || ContainsModel("GA605");
|
return ContainsModel("GA403") || ContainsModel("GU605") || ContainsModel("GA605");
|
||||||
@@ -422,7 +449,7 @@ public static class AppConfig
|
|||||||
|
|
||||||
public static bool IsInputBacklight()
|
public static bool IsInputBacklight()
|
||||||
{
|
{
|
||||||
return ContainsModel("GA503") || IsSlash();
|
return ContainsModel("GA503") || IsSlash() || IsVivoZenPro();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsInvertedFNLock()
|
public static bool IsInvertedFNLock()
|
||||||
@@ -432,7 +459,7 @@ public static class AppConfig
|
|||||||
|
|
||||||
public static bool IsOLED()
|
public static bool IsOLED()
|
||||||
{
|
{
|
||||||
return ContainsModel("OLED") || IsSlash() || ContainsModel("M7600") || ContainsModel("UX64") || ContainsModel("UX34") || ContainsModel("UX53") || ContainsModel("K360") || ContainsModel("X150") || ContainsModel("M350") || ContainsModel("K650") || ContainsModel("UM53") || ContainsModel("K660") || ContainsModel("UX84") || ContainsModel("M650") || ContainsModel("K340") || ContainsModel("K350") || ContainsModel("M140") || ContainsModel("UM340") || ContainsModel("S540") || ContainsModel("M7400") || ContainsModel("N650");
|
return ContainsModel("OLED") || IsSlash() || ContainsModel("M7600") || ContainsModel("UX64") || ContainsModel("UX34") || ContainsModel("UX53") || ContainsModel("K360") || ContainsModel("X150") || ContainsModel("M350") || ContainsModel("K650") || ContainsModel("UM53") || ContainsModel("K660") || ContainsModel("UX84") || ContainsModel("M650") || ContainsModel("M550") || ContainsModel("K340") || ContainsModel("K350") || ContainsModel("M140") || ContainsModel("UM340") || ContainsModel("S540") || ContainsModel("M7400") || ContainsModel("N650") || ContainsModel("HN7306") || ContainsModel("H7606") || ContainsModel("UX5406") || ContainsModel("M5606");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsNoOverdrive()
|
public static bool IsNoOverdrive()
|
||||||
@@ -482,12 +509,12 @@ public static class AppConfig
|
|||||||
|
|
||||||
public static bool NoWMI()
|
public static bool NoWMI()
|
||||||
{
|
{
|
||||||
return ContainsModel("GL704G") || ContainsModel("GM501G");
|
return ContainsModel("GL704G") || ContainsModel("GM501G") || ContainsModel("GX501G");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsNoDirectRGB()
|
public static bool IsNoDirectRGB()
|
||||||
{
|
{
|
||||||
return ContainsModel("GA503") || ContainsModel("G533Q") || ContainsModel("GU502") || IsSlash();
|
return ContainsModel("GA503") || ContainsModel("G533Q") || ContainsModel("GU502") || ContainsModel("GU603") || IsSlash();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsStrixNumpad()
|
public static bool IsStrixNumpad()
|
||||||
@@ -598,12 +625,12 @@ public static class AppConfig
|
|||||||
|
|
||||||
public static bool IsFanRequired()
|
public static bool IsFanRequired()
|
||||||
{
|
{
|
||||||
return ContainsModel("GA402X") || ContainsModel("G513") || ContainsModel("G713R") || ContainsModel("G713P") || ContainsModel("GU605") || ContainsModel("GA403") || ContainsModel("G634J") || ContainsModel("G834J") || ContainsModel("G614J") || ContainsModel("G814J") || ContainsModel("FX507V");
|
return ContainsModel("GA402X") || ContainsModel("G513") || ContainsModel("G713R") || ContainsModel("G713P") || ContainsModel("GU605") || ContainsModel("GA605") || ContainsModel("GA403") || ContainsModel("G634J") || ContainsModel("G834J") || ContainsModel("G614J") || ContainsModel("G814J") || ContainsModel("FX507V");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsAMDLight()
|
public static bool IsAMDLight()
|
||||||
{
|
{
|
||||||
return ContainsModel("GA402X") || ContainsModel("GA403") || ContainsModel("FA507N") || ContainsModel("FA507X") || ContainsModel("FA707N") || ContainsModel("FA707X");
|
return ContainsModel("GA402X") || ContainsModel("GA605") || ContainsModel("GA403") || ContainsModel("FA507N") || ContainsModel("FA507X") || ContainsModel("FA707N") || ContainsModel("FA707X");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsPowerRequired()
|
public static bool IsPowerRequired()
|
||||||
@@ -618,7 +645,7 @@ public static class AppConfig
|
|||||||
|
|
||||||
public static bool IsForceSetGPUMode()
|
public static bool IsForceSetGPUMode()
|
||||||
{
|
{
|
||||||
return Is("gpu_mode_force_set") || ContainsModel("503");
|
return Is("gpu_mode_force_set") || (ContainsModel("503") && IsNotFalse("gpu_mode_force_set"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsNoGPUModes()
|
public static bool IsNoGPUModes()
|
||||||
@@ -626,6 +653,11 @@ public static class AppConfig
|
|||||||
return ContainsModel("GV301RA") || ContainsModel("GV302XA") || IsAlly();
|
return ContainsModel("GV301RA") || ContainsModel("GV302XA") || IsAlly();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool NoGpu()
|
||||||
|
{
|
||||||
|
return Is("no_gpu") || ContainsModel("UX540");
|
||||||
|
}
|
||||||
|
|
||||||
public static bool IsHardwareTouchpadToggle()
|
public static bool IsHardwareTouchpadToggle()
|
||||||
{
|
{
|
||||||
return ContainsModel("FA507");
|
return ContainsModel("FA507");
|
||||||
@@ -669,12 +701,22 @@ public static class AppConfig
|
|||||||
// 2024 Models support Dynamic Lighting
|
// 2024 Models support Dynamic Lighting
|
||||||
public static bool IsDynamicLighting()
|
public static bool IsDynamicLighting()
|
||||||
{
|
{
|
||||||
return IsSlash() || IsIntelHX() || ContainsModel("FA607P") || ContainsModel("FX607J") || ContainsModel("FA507U");
|
return IsSlash() || IsIntelHX() || IsTUF();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsForceMiniled()
|
public static bool IsForceMiniled()
|
||||||
{
|
{
|
||||||
return ContainsModel("G834JYR") || Is("force_miniled");
|
return ContainsModel("G834JYR") || ContainsModel("G834JZR") || Is("force_miniled");
|
||||||
|
}
|
||||||
|
public static bool SaveDimming()
|
||||||
|
{
|
||||||
|
return Is("save_dimming");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool IsAutoStatusLed()
|
||||||
|
{
|
||||||
|
return Is("auto_status_led");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -114,8 +114,11 @@ public class AsusACPI
|
|||||||
public const int APU_MEM = 0x000600C1;
|
public const int APU_MEM = 0x000600C1;
|
||||||
|
|
||||||
public const int TUF_KB_BRIGHTNESS = 0x00050021;
|
public const int TUF_KB_BRIGHTNESS = 0x00050021;
|
||||||
|
public const int KBD_BACKLIGHT_OOBE = 0x0005002F;
|
||||||
|
|
||||||
public const int TUF_KB = 0x00100056;
|
public const int TUF_KB = 0x00100056;
|
||||||
public const int TUF_KB2 = 0x0010005a;
|
public const int TUF_KB2 = 0x0010005a;
|
||||||
|
|
||||||
public const int TUF_KB_STATE = 0x00100057;
|
public const int TUF_KB_STATE = 0x00100057;
|
||||||
|
|
||||||
public const int MicMuteLed = 0x00040017;
|
public const int MicMuteLed = 0x00040017;
|
||||||
@@ -126,6 +129,7 @@ public class AsusACPI
|
|||||||
public const int ScreenPadToggle = 0x00050031;
|
public const int ScreenPadToggle = 0x00050031;
|
||||||
public const int ScreenPadBrightness = 0x00050032;
|
public const int ScreenPadBrightness = 0x00050032;
|
||||||
|
|
||||||
|
public const int CameraShutter = 0x00060078;
|
||||||
public const int CameraLed = 0x00060079;
|
public const int CameraLed = 0x00060079;
|
||||||
public const int StatusLed = 0x000600C2;
|
public const int StatusLed = 0x000600C2;
|
||||||
|
|
||||||
@@ -785,6 +789,7 @@ public class AsusACPI
|
|||||||
{
|
{
|
||||||
int param = 0x80 | (brightness & 0x7F);
|
int param = 0x80 | (brightness & 0x7F);
|
||||||
DeviceSet(TUF_KB_BRIGHTNESS, param, "TUF Brightness");
|
DeviceSet(TUF_KB_BRIGHTNESS, param, "TUF Brightness");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void TUFKeyboardRGB(AuraMode mode, Color color, int speed, string? log = "TUF RGB")
|
public void TUFKeyboardRGB(AuraMode mode, Color color, int speed, string? log = "TUF RGB")
|
||||||
@@ -800,7 +805,13 @@ public class AsusACPI
|
|||||||
setting[5] = (byte)speed;
|
setting[5] = (byte)speed;
|
||||||
|
|
||||||
int result = DeviceSet(TUF_KB, setting, log);
|
int result = DeviceSet(TUF_KB, setting, log);
|
||||||
if (result != 1) DeviceSet(TUF_KB2, setting, log);
|
if (result != 1)
|
||||||
|
{
|
||||||
|
setting[0] = (byte)0xb3;
|
||||||
|
DeviceSet(TUF_KB2, setting, log);
|
||||||
|
setting[0] = (byte)0xb4;
|
||||||
|
DeviceSet(TUF_KB2, setting, log);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -820,6 +831,7 @@ public class AsusACPI
|
|||||||
state = state | 0x01 << 8;
|
state = state | 0x01 << 8;
|
||||||
|
|
||||||
DeviceSet(TUF_KB_STATE, state, "TUF_KB");
|
DeviceSet(TUF_KB_STATE, state, "TUF_KB");
|
||||||
|
if (AppConfig.IsVivoZenPro() && DeviceGet(KBD_BACKLIGHT_OOBE) >= 0) DeviceSet(KBD_BACKLIGHT_OOBE, 1, "VIVO OOBE");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SubscribeToEvents(Action<object, EventArrivedEventArgs> EventHandler)
|
public void SubscribeToEvents(Action<object, EventArrivedEventArgs> EventHandler)
|
||||||
|
|||||||
@@ -326,7 +326,8 @@ namespace GHelper
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
LightingMode lm = supportedLightingModes[comboBoxLightingMode.SelectedIndex];
|
var index = comboBoxLightingMode.SelectedIndex;
|
||||||
|
LightingMode lm = supportedLightingModes[index < supportedLightingModes.Count ? index : 0 ];
|
||||||
|
|
||||||
LightingSetting? ls = mouse.LightingSettingForZone(visibleZone);
|
LightingSetting? ls = mouse.LightingSettingForZone(visibleZone);
|
||||||
if (ls.LightingMode == lm)
|
if (ls.LightingMode == lm)
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ namespace GHelper.AutoUpdate
|
|||||||
Logger.WriteLine(ex.Message);
|
Logger.WriteLine(ex.Message);
|
||||||
}
|
}
|
||||||
|
|
||||||
Environment.Exit(0);
|
Application.Exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,31 +2,46 @@
|
|||||||
|
|
||||||
namespace GHelper.Battery
|
namespace GHelper.Battery
|
||||||
{
|
{
|
||||||
internal class BatteryControl
|
public static class BatteryControl
|
||||||
{
|
{
|
||||||
|
|
||||||
|
static bool _chargeFull = AppConfig.Is("charge_full");
|
||||||
|
public static bool chargeFull
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _chargeFull;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
AppConfig.Set("charge_full", value ? 1 : 0);
|
||||||
|
_chargeFull = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void ToggleBatteryLimitFull()
|
public static void ToggleBatteryLimitFull()
|
||||||
{
|
{
|
||||||
if (AppConfig.Is("charge_full")) SetBatteryChargeLimit();
|
if (chargeFull) SetBatteryChargeLimit();
|
||||||
else SetBatteryLimitFull();
|
else SetBatteryLimitFull();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SetBatteryLimitFull()
|
public static void SetBatteryLimitFull()
|
||||||
{
|
{
|
||||||
AppConfig.Set("charge_full", 1);
|
chargeFull = true;
|
||||||
Program.acpi.DeviceSet(AsusACPI.BatteryLimit, 100, "BatteryLimit");
|
Program.acpi.DeviceSet(AsusACPI.BatteryLimit, 100, "BatteryLimit");
|
||||||
Program.settingsForm.VisualiseBatteryFull();
|
Program.settingsForm.VisualiseBatteryFull();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void UnSetBatteryLimitFull()
|
public static void UnSetBatteryLimitFull()
|
||||||
{
|
{
|
||||||
AppConfig.Set("charge_full", 0);
|
chargeFull = false;
|
||||||
|
Logger.WriteLine("Battery fully charged");
|
||||||
Program.settingsForm.Invoke(Program.settingsForm.VisualiseBatteryFull);
|
Program.settingsForm.Invoke(Program.settingsForm.VisualiseBatteryFull);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void AutoBattery(bool init = false)
|
public static void AutoBattery(bool init = false)
|
||||||
{
|
{
|
||||||
if (AppConfig.Is("charge_full") && !init) SetBatteryLimitFull();
|
if (chargeFull && !init) SetBatteryLimitFull();
|
||||||
else SetBatteryChargeLimit();
|
else SetBatteryChargeLimit();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -38,14 +53,15 @@ namespace GHelper.Battery
|
|||||||
|
|
||||||
if (AppConfig.IsChargeLimit6080())
|
if (AppConfig.IsChargeLimit6080())
|
||||||
{
|
{
|
||||||
if (limit > 80) limit = 100;
|
if (limit > 85) limit = 100;
|
||||||
|
else if (limit >= 80) limit = 80;
|
||||||
else if (limit < 60) limit = 60;
|
else if (limit < 60) limit = 60;
|
||||||
}
|
}
|
||||||
|
|
||||||
Program.acpi.DeviceSet(AsusACPI.BatteryLimit, limit, "BatteryLimit");
|
Program.acpi.DeviceSet(AsusACPI.BatteryLimit, limit, "BatteryLimit");
|
||||||
|
|
||||||
AppConfig.Set("charge_limit", limit);
|
AppConfig.Set("charge_limit", limit);
|
||||||
AppConfig.Set("charge_full", 0);
|
chargeFull = false;
|
||||||
|
|
||||||
Program.settingsForm.VisualiseBattery(limit);
|
Program.settingsForm.VisualiseBattery(limit);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,19 +13,28 @@ namespace GHelper.Display
|
|||||||
var profiles = new Dictionary<string, string>()
|
var profiles = new Dictionary<string, string>()
|
||||||
{
|
{
|
||||||
{"FA_Series", "2177-APOR41-de476ec68578c865e886ef6872aa56ee.zip"},
|
{"FA_Series", "2177-APOR41-de476ec68578c865e886ef6872aa56ee.zip"},
|
||||||
|
{"FA401UI", "19767-N39QWK-05990dae2bf601e9db8b998bfad49f57.zip"},
|
||||||
|
{"FA401UU", "19768-K9LFCV-5224d6f68051d884a3adaa588e6300c3.zip"},
|
||||||
|
{"FA401UV", "19769-8MSQD6-d06ff0a176407b4eaeed468a3bff2bc1.zip"},
|
||||||
|
{"FA401WI", "19937-J3GRCD-e37d8c1557b9f11d8fb493a78b50fe2d.zip"},
|
||||||
|
{"FA401WU", "19938-5PIL7F-a3c8522c89e03fc25e2f7290ee5c5f22.zip"},
|
||||||
|
{"FA401WV", "19939-KIX4CK-3462e49f2c6388228b427b85332538b7.zip"},
|
||||||
{"FA506IC", "7822-ZGQ1KC-bc80be3be7ca585bef60f526b6461c86.zip"},
|
{"FA506IC", "7822-ZGQ1KC-bc80be3be7ca585bef60f526b6461c86.zip"},
|
||||||
{"FA506ICB", "13914-2HYCD7-95fabfe5669a204620517f0158c0cea1.zip"},
|
{"FA506ICB", "13914-2HYCD7-95fabfe5669a204620517f0158c0cea1.zip"},
|
||||||
{"FA506IE", "7828-57N8GH-9fe07a7e4ebde12a8d4682d3ffa66fe4.zip"},
|
{"FA506IE", "7828-57N8GH-9fe07a7e4ebde12a8d4682d3ffa66fe4.zip"},
|
||||||
{"FA506IEB", "14661-ZYWH5T-3b45ebeb7fca81d98796d5960e11226c.zip"},
|
{"FA506IEB", "14661-ZYWH5T-3b45ebeb7fca81d98796d5960e11226c.zip"},
|
||||||
{"FA506IH", "3407-VZBOUN-8a12385fa46e077010677d330e9320d5.zip"},
|
{"FA506IH", "3407-VZBOUN-8a12385fa46e077010677d330e9320d5.zip"},
|
||||||
{"FA506IHR", "7823-15HGA0-44d621a3c0f0dd2c407f67d262871be0.zip"},
|
{"FA506IHR", "7823-15HGA0-44d621a3c0f0dd2c407f67d262871be0.zip"},
|
||||||
|
{"FA506IHRB", "19343-MBMUPH-190cdb28402ba8efd3e11561c9b2eeb9.zip"},
|
||||||
{"FA506II", "3410-9ZXQO2-aa08794537699c5dbfcca49b63fb7f8d.zip"},
|
{"FA506II", "3410-9ZXQO2-aa08794537699c5dbfcca49b63fb7f8d.zip"},
|
||||||
{"FA506IM", "7824-EKKW9A-21c7e073a81fc868b78e605b17290839.zip"},
|
{"FA506IM", "7824-EKKW9A-21c7e073a81fc868b78e605b17290839.zip"},
|
||||||
{"FA506IR", "7825-G6XND9-c16ea7e98b58e878c61d1071b100ee60.zip"},
|
{"FA506IR", "7825-G6XND9-c16ea7e98b58e878c61d1071b100ee60.zip"},
|
||||||
{"FA506IU", "3413-AMCR39-2a8b889a8810da4e8692f87e1ae3ea2c.zip"},
|
{"FA506IU", "3413-AMCR39-2a8b889a8810da4e8692f87e1ae3ea2c.zip"},
|
||||||
{"FA506IV", "3415-VA0CJ6-266febe84bcecc5ed89fdc286f444ce2.zip"},
|
{"FA506IV", "3415-VA0CJ6-266febe84bcecc5ed89fdc286f444ce2.zip"},
|
||||||
{"FA506NC", "18359-BM2XCN-3ca9de427310b05afa92dcbe1babf947.zip"},
|
{"FA506NC", "18359-BM2XCN-3ca9de427310b05afa92dcbe1babf947.zip"},
|
||||||
|
{"FA506NCR", "19230-KJ866Z-1980e6f6a843b6b31111e38973fa1cda.zip"},
|
||||||
{"FA506NF", "18361-CU7H6I-55beba8445b9aa0fe9cbeb8ec9a47ccf.zip"},
|
{"FA506NF", "18361-CU7H6I-55beba8445b9aa0fe9cbeb8ec9a47ccf.zip"},
|
||||||
|
{"FA506NFR", "19231-GARR16-f7052f6be62ddce2048ebcd6ba808563.zip"},
|
||||||
{"FA506QC", "7829-LBYY5U-b14343c260b738563b69ad0e4f4b88d1.zip"},
|
{"FA506QC", "7829-LBYY5U-b14343c260b738563b69ad0e4f4b88d1.zip"},
|
||||||
{"FA506QE", "7827-75P3DP-b664f4da04e77ed1faa722bf0c781d82.zip"},
|
{"FA506QE", "7827-75P3DP-b664f4da04e77ed1faa722bf0c781d82.zip"},
|
||||||
{"FA506QM", "9440-87VQKP-48357026f1f3099cfed1161a320587f0.zip"},
|
{"FA506QM", "9440-87VQKP-48357026f1f3099cfed1161a320587f0.zip"},
|
||||||
@@ -33,9 +42,9 @@ namespace GHelper.Display
|
|||||||
{"FA507NI", "14451-N6AX9R-0bc8e15be5cf889c755aaa7052f6fee8.zip"},
|
{"FA507NI", "14451-N6AX9R-0bc8e15be5cf889c755aaa7052f6fee8.zip"},
|
||||||
{"FA507NJ", "14454-QXKHOE-d28f2eb001f9b7ce0582cbe33961a6ad.zip"},
|
{"FA507NJ", "14454-QXKHOE-d28f2eb001f9b7ce0582cbe33961a6ad.zip"},
|
||||||
{"FA507NU", "14452-EZXLVF-c64dd3d7efede78df653b029888d9d04.zip"},
|
{"FA507NU", "14452-EZXLVF-c64dd3d7efede78df653b029888d9d04.zip"},
|
||||||
{"FA507NUR", "18871-WR3YMP-6cbcd0502eb9bf200465e36c4de8c9fd.zip"},
|
{"FA507NUR", "19358-JYO79G-f8bc53beeadfdfef80dc6a4eb85c69e2.zip"},
|
||||||
{"FA507NV", "14453-VC333P-41549f64788d59c9711eccec892fa8c1.zip"},
|
{"FA507NV", "14453-VC333P-41549f64788d59c9711eccec892fa8c1.zip"},
|
||||||
{"FA507NVR", "18872-HVR4UY-220dc7f3f73cf12b2af2505db6ce67ab.zip"},
|
{"FA507NVR", "19359-YWEAES-37feeb146db89c3549bac528d67ae209.zip"},
|
||||||
{"FA507RC", "11448-0TRT8V-7712eb9302300dd82815027efbbe4787.zip"},
|
{"FA507RC", "11448-0TRT8V-7712eb9302300dd82815027efbbe4787.zip"},
|
||||||
{"FA507RE", "11449-ONC7VG-a7ac70468292336f63532c21204d69d4.zip"},
|
{"FA507RE", "11449-ONC7VG-a7ac70468292336f63532c21204d69d4.zip"},
|
||||||
{"FA507RF", "14311-X72FIU-66bf16069a82bdf2cc09f8b92cb25c67.zip"},
|
{"FA507RF", "14311-X72FIU-66bf16069a82bdf2cc09f8b92cb25c67.zip"},
|
||||||
@@ -50,17 +59,24 @@ namespace GHelper.Display
|
|||||||
{"FA507XJ", "14820-8RT0TF-9d341fae2a290494206deb5fcf1fd427.zip"},
|
{"FA507XJ", "14820-8RT0TF-9d341fae2a290494206deb5fcf1fd427.zip"},
|
||||||
{"FA507XU", "14818-3PA2GD-2d1e2d035309ec7282a1c47e27f7c7fd.zip"},
|
{"FA507XU", "14818-3PA2GD-2d1e2d035309ec7282a1c47e27f7c7fd.zip"},
|
||||||
{"FA507XV", "14819-ET4L73-daf905274776ae9c92a7b74e687dc63d.zip"},
|
{"FA507XV", "14819-ET4L73-daf905274776ae9c92a7b74e687dc63d.zip"},
|
||||||
{"FA607PI", "17579-FL63B4-df08bf92fe3c156ce738e43de7824d65.zip"},
|
{"FA607NU", "20567-VB45RR-ceeec88490fec992f2f8948ece38952e.zip"},
|
||||||
{"FA607PU", "17580-WM413K-eff7721ca9ec5b633ef196dbfcd58ff2.zip"},
|
{"FA607NUR", "20570-XEDISK-5e1220f6a19492a3e6319697497deaa3.zip"},
|
||||||
{"FA607PV", "17581-JNXO2Q-15d026a4ae630d44b28c18aee0a99e51.zip"},
|
{"FA607PI", "19157-PL5PW6-2fde4880a46a6b7357d96eaa7a4ec946.zip"},
|
||||||
|
{"FA607PU", "19158-AWQ1FA-f1ed2d008bef71741a9b09b35730b9e7.zip"},
|
||||||
|
{"FA607PV", "19159-V6UKPP-92f56a3aa89b834d1ab12f229a8ae1a7.zip"},
|
||||||
{"FA607RC", "10190-XHDRTQ-0e6c248e3dab6bb07e052edd963c5218.zip"},
|
{"FA607RC", "10190-XHDRTQ-0e6c248e3dab6bb07e052edd963c5218.zip"},
|
||||||
{"FA607RE", "10194-AF495K-23a4d74be5132e4babc64bb13237a12b.zip"},
|
{"FA607RE", "10194-AF495K-23a4d74be5132e4babc64bb13237a12b.zip"},
|
||||||
{"FA607RH", "10191-9BS333-c6deb5f9fd5a37d446d2722da54c0ec3.zip"},
|
{"FA607RH", "10191-9BS333-c6deb5f9fd5a37d446d2722da54c0ec3.zip"},
|
||||||
{"FA607RM", "10195-4U5EEF-cf98d168cacdd5a60782e881a9c143be.zip"},
|
{"FA607RM", "10195-4U5EEF-cf98d168cacdd5a60782e881a9c143be.zip"},
|
||||||
{"FA607RR", "10193-FYX2N7-730c76e49ef71a6164804eafd2621dab.zip"},
|
{"FA607RR", "10193-FYX2N7-730c76e49ef71a6164804eafd2621dab.zip"},
|
||||||
{"FA607RW", "10192-UFOOP3-f52a50dac189ffa96560f73e04c53a6c.zip"},
|
{"FA607RW", "10192-UFOOP3-f52a50dac189ffa96560f73e04c53a6c.zip"},
|
||||||
{"FA617NS", "15967-YKHJ0B-89095e43578e64c160d2952bb14513f2.zip"},
|
{"FA608WI", "20103-UE0O65-d6707b2a2f666d671d728661c981883a.zip"},
|
||||||
{"FA617NT", "15970-C1BW39-2ef1c5d5d9a967cf2fc1f511d3db3a43.zip"},
|
{"FA608WU", "20102-IQVJL2-edc900ffe25635856729d26dbeac272f.zip"},
|
||||||
|
{"FA608WV", "20104-EE3Q5U-a7695b4d1668b1a8dda2576f64bffad2.zip"},
|
||||||
|
{"FA617NS", "20225-0J8FEF-cb6ef3732560ed38542d5047e78596f0.zip"},
|
||||||
|
{"FA617NSR", "20226-B5TAVP-f153443e85ccad055fa12d58eec69c5c.zip"},
|
||||||
|
{"FA617NT", "20224-YN6NKP-1d0e927ae5c1bb7d15e36b63176460e2.zip"},
|
||||||
|
{"FA617NTR", "20227-KL8UNI-2b4063b7a52b142fb75e9136570afbf9.zip"},
|
||||||
{"FA617XS", "15968-Y9NFXN-cb420fe6e177fc1cf675e9d42a6fd0ea.zip"},
|
{"FA617XS", "15968-Y9NFXN-cb420fe6e177fc1cf675e9d42a6fd0ea.zip"},
|
||||||
{"FA617XT", "15969-UKYP5L-ad54051ebbad4b17693b65f5bceda799.zip"},
|
{"FA617XT", "15969-UKYP5L-ad54051ebbad4b17693b65f5bceda799.zip"},
|
||||||
{"FA706IC", "5215-5J3H5Y-d2cdc2f5e03d68e5e5e562581a77c8e6.zip"},
|
{"FA706IC", "5215-5J3H5Y-d2cdc2f5e03d68e5e5e562581a77c8e6.zip"},
|
||||||
@@ -72,6 +88,7 @@ namespace GHelper.Display
|
|||||||
{"FA706IR", "8825-63J2NY-2496ecf21b5fa71e65671531b670cdac.zip"},
|
{"FA706IR", "8825-63J2NY-2496ecf21b5fa71e65671531b670cdac.zip"},
|
||||||
{"FA706IU", "2608-EI64MF-64c35bda7789e6e71298e22d793b78d4.zip"},
|
{"FA706IU", "2608-EI64MF-64c35bda7789e6e71298e22d793b78d4.zip"},
|
||||||
{"FA706NF", "18362-1V7Z1Z-0bc79f01bdfadc5b39342fba622a5b8d.zip"},
|
{"FA706NF", "18362-1V7Z1Z-0bc79f01bdfadc5b39342fba622a5b8d.zip"},
|
||||||
|
{"FA706NFR", "19232-FE6TXN-d062445db610ce901453145ebc518efe.zip"},
|
||||||
{"FA706QC", "8826-032S4E-868933565b1a7d762bda8cafc1e77458.zip"},
|
{"FA706QC", "8826-032S4E-868933565b1a7d762bda8cafc1e77458.zip"},
|
||||||
{"FA706QE", "8824-KZNJL9-9d827f4973d4c9787ff050dc1bf35eef.zip"},
|
{"FA706QE", "8824-KZNJL9-9d827f4973d4c9787ff050dc1bf35eef.zip"},
|
||||||
{"FA706QM", "8830-6NX7U4-b7bbfe663aa954534d33d2f822181728.zip"},
|
{"FA706QM", "8830-6NX7U4-b7bbfe663aa954534d33d2f822181728.zip"},
|
||||||
@@ -79,7 +96,9 @@ namespace GHelper.Display
|
|||||||
{"FA707NI", "14455-19J6WZ-10282c6083ee018a614e75bc809ecf1f.zip"},
|
{"FA707NI", "14455-19J6WZ-10282c6083ee018a614e75bc809ecf1f.zip"},
|
||||||
{"FA707NJ", "14457-BGJD0K-d963ff94009c9a2a5b99606eac711a95.zip"},
|
{"FA707NJ", "14457-BGJD0K-d963ff94009c9a2a5b99606eac711a95.zip"},
|
||||||
{"FA707NU", "14456-VAZ4LS-1d798d3873c55e9d10b43a3f2b12cd15.zip"},
|
{"FA707NU", "14456-VAZ4LS-1d798d3873c55e9d10b43a3f2b12cd15.zip"},
|
||||||
|
{"FA707NUR", "20568-IPF4CY-f7bd11b80ffa20b77b75e6a89213db48.zip"},
|
||||||
{"FA707NV", "14458-7G8B40-08117ddb45ed3c6978aa4ad60e3d2c96.zip"},
|
{"FA707NV", "14458-7G8B40-08117ddb45ed3c6978aa4ad60e3d2c96.zip"},
|
||||||
|
{"FA707NVR", "20569-1MFNC4-e41979f29c26628eacf1e9067dd3544d.zip"},
|
||||||
{"FA707RC", "10196-81D3O0-94ccf4d908c9bcb44f8f9092ef9fa2e2.zip"},
|
{"FA707RC", "10196-81D3O0-94ccf4d908c9bcb44f8f9092ef9fa2e2.zip"},
|
||||||
{"FA707RE", "10200-AUS9AW-7f366055be2ae2b4c659aa9590bb4d5e.zip"},
|
{"FA707RE", "10200-AUS9AW-7f366055be2ae2b4c659aa9590bb4d5e.zip"},
|
||||||
{"FA707RF", "14312-6KGU80-09ba6d3e3b490c3d1dce3d16df62cd8a.zip"},
|
{"FA707RF", "14312-6KGU80-09ba6d3e3b490c3d1dce3d16df62cd8a.zip"},
|
||||||
@@ -92,6 +111,9 @@ namespace GHelper.Display
|
|||||||
{"FA707XJ", "14823-MX6CGK-0d0862cd441f96a72b1c8baeaa8aa3b4.zip"},
|
{"FA707XJ", "14823-MX6CGK-0d0862cd441f96a72b1c8baeaa8aa3b4.zip"},
|
||||||
{"FA707XU", "14824-O2LZZA-f0ea2bf54bbc4fd4e7391048f4a083e4.zip"},
|
{"FA707XU", "14824-O2LZZA-f0ea2bf54bbc4fd4e7391048f4a083e4.zip"},
|
||||||
{"FA707XV", "14825-DUSKD1-7d0a055d869a7366105380c44788724b.zip"},
|
{"FA707XV", "14825-DUSKD1-7d0a055d869a7366105380c44788724b.zip"},
|
||||||
|
{"FA808WI", "19512-TZ3G4D-60c6849ce49cca1d2177f31ead77df5a.zip"},
|
||||||
|
{"FA808WU", "19510-ASGCD8-0558641c1b976b901c52d1d72f0bddd7.zip"},
|
||||||
|
{"FA808WV", "19511-QDVPAJ-f3990996e7a9c0d472b46af286d529f1.zip"},
|
||||||
{"FX_Series", "2174-J1XJKV-bd932ade5eebb0b2f1a36eac85bc5c7d.zip"},
|
{"FX_Series", "2174-J1XJKV-bd932ade5eebb0b2f1a36eac85bc5c7d.zip"},
|
||||||
{"FX505DD", "3439-CJLCNE-3df3a90619c571de2917a35a402fe6cb.zip"},
|
{"FX505DD", "3439-CJLCNE-3df3a90619c571de2917a35a402fe6cb.zip"},
|
||||||
{"FX505DT", "3427-H77L9I-2f3f50fbbb1dc4ac6e703b2820acb491.zip"},
|
{"FX505DT", "3427-H77L9I-2f3f50fbbb1dc4ac6e703b2820acb491.zip"},
|
||||||
@@ -143,15 +165,18 @@ namespace GHelper.Display
|
|||||||
{"FX517ZM", "13759-694BOG-7b8f61a1d8a387715721fd2b8e0bd766.zip"},
|
{"FX517ZM", "13759-694BOG-7b8f61a1d8a387715721fd2b8e0bd766.zip"},
|
||||||
{"FX517ZR", "11463-MCHEWS-7a732705aea49eb663fe1e8930c463de.zip"},
|
{"FX517ZR", "11463-MCHEWS-7a732705aea49eb663fe1e8930c463de.zip"},
|
||||||
{"FX517ZW", "11464-S41ORA-d99633ecf421ba4ab73800bc9ebf2e5b.zip"},
|
{"FX517ZW", "11464-S41ORA-d99633ecf421ba4ab73800bc9ebf2e5b.zip"},
|
||||||
{"FX607JI", "17739-YJBJMA-59c984b28eeb6c02498190f768b12b52.zip"},
|
{"FX607JI", "19085-6NMHTY-9137eab4a853f284c0ac1f8890735c7b.zip"},
|
||||||
{"FX607JIR", "17740-78V0QP-43bf1ea30f94d3d3a286f42dd90a1816.zip"},
|
{"FX607JIR", "19088-H9SUHL-c75a1547f17e7c69e0a870425d3592b8.zip"},
|
||||||
{"FX607JU", "17744-JEFX0I-f1ee2104c17a5cc511efefa3dc7b9601.zip"},
|
{"FX607JU", "19086-N1S5J4-c4fc8458bcbefa107fc1c2e1dbe44255.zip"},
|
||||||
{"FX607JUR", "17743-A2JS5H-224a1f32f7dbfecb0d6b91fdb6ffac8e.zip"},
|
{"FX607JUR", "19087-ZBS95F-bc3055487fdc07870c12341042a37222.zip"},
|
||||||
{"FX607JV", "17741-OWALZC-eb293a03c7b4595270939bccfe891656.zip"},
|
{"FX607JV", "19089-LLP8ZE-c52cc4765390eba2eae3c798a367df25.zip"},
|
||||||
{"FX607JVR", "17742-3OOC7N-f28635b55ce56f9e32672b2e409a075c.zip"},
|
{"FX607JVR", "19090-XQYJEH-a5aaa078def637077c4d1d3a619ae198.zip"},
|
||||||
|
{"FX607VB", "20704-FGKI8R-ac8a18cb35a009bcdb6d18ec7537879a.zip"},
|
||||||
|
{"FX607VF", "20706-OMC7L2-e66289430eb7decd16fe4c6353edb8c4.zip"},
|
||||||
{"FX607VI", "14072-0Z0LX5-c3145816b5c9b045a3e829e194425624.zip"},
|
{"FX607VI", "14072-0Z0LX5-c3145816b5c9b045a3e829e194425624.zip"},
|
||||||
{"FX607VJ", "14073-H1KA78-95472184994955393ebf635af4a55c71.zip"},
|
{"FX607VJ", "14073-H1KA78-95472184994955393ebf635af4a55c71.zip"},
|
||||||
{"FX607VU", "14074-RCMD10-b606bf5fd03bdf6a8aef412202de86ff.zip"},
|
{"FX607VU", "20707-N1HJ0V-31f1da0a565763c625714c39b7bb5bae.zip"},
|
||||||
|
{"FX607VUR", "20705-ON83H2-dd9e78d43fb57f06d0e8ef0d9d1e849e.zip"},
|
||||||
{"FX607VV", "14075-BX4NJX-a9e24be091f08e6cc3885397f143bdc5.zip"},
|
{"FX607VV", "14075-BX4NJX-a9e24be091f08e6cc3885397f143bdc5.zip"},
|
||||||
{"FX607ZC", "9267-SQXQMT-edf1ee77d7f276d9b2f14fbe80e86459.zip"},
|
{"FX607ZC", "9267-SQXQMT-edf1ee77d7f276d9b2f14fbe80e86459.zip"},
|
||||||
{"FX607ZE", "9268-MI06A0-5f60b76f497adb2c80dc5d34e7ca00ef.zip"},
|
{"FX607ZE", "9268-MI06A0-5f60b76f497adb2c80dc5d34e7ca00ef.zip"},
|
||||||
@@ -237,14 +262,14 @@ namespace GHelper.Display
|
|||||||
{"G533ZX", "11729-XNFMPR-e0aad4e4d4956dba8629f419b1f86026.zip"},
|
{"G533ZX", "11729-XNFMPR-e0aad4e4d4956dba8629f419b1f86026.zip"},
|
||||||
{"G614JF", "14496-NAATJZ-a3847e890e57aa749645b854b28ead79.zip"},
|
{"G614JF", "14496-NAATJZ-a3847e890e57aa749645b854b28ead79.zip"},
|
||||||
{"G614JI", "14168-4VTU0U-37decb2df809672eccf1156769eda929.zip"},
|
{"G614JI", "14168-4VTU0U-37decb2df809672eccf1156769eda929.zip"},
|
||||||
{"G614JIR", "18120-52TT5M-28a5c8e138ed1660e9eadc81121f789a.zip"},
|
{"G614JIR", "19126-IMXGO5-4cce9f45ad28fa60d016f8d212c50b10.zip"},
|
||||||
{"G614JJ", "14497-P0D5PL-abe178509e0316da9ee56b24e15d0384.zip"},
|
{"G614JJ", "14497-P0D5PL-abe178509e0316da9ee56b24e15d0384.zip"},
|
||||||
{"G614JU", "14498-5D71EB-2300be03087494ee34356470ca022b7c.zip"},
|
{"G614JU", "14498-5D71EB-2300be03087494ee34356470ca022b7c.zip"},
|
||||||
{"G614JV", "14500-SPJCAL-a8e2e223857c334ba4c20c8122151bb7.zip"},
|
{"G614JV", "14500-SPJCAL-a8e2e223857c334ba4c20c8122151bb7.zip"},
|
||||||
{"G614JVR", "18121-2WOF0H-4e7045c7a210693fef2b99b8e032316b.zip"},
|
{"G614JVR", "19129-EA1WB4-4666564ee013c4df53be44bcdd20bec0.zip"},
|
||||||
{"G614JZ", "18199-P9WWOH-093d361358629a2bddd5bff7b5fb7a5f.zip"},
|
{"G614JZ", "18199-P9WWOH-093d361358629a2bddd5bff7b5fb7a5f.zip"},
|
||||||
{"G634JY", "14163-JLRBOO-8ea519425efe56cc144e38d22cebd3f0.zip"},
|
{"G634JY", "14163-JLRBOO-8ea519425efe56cc144e38d22cebd3f0.zip"},
|
||||||
{"G634JYR", "18087-6Z1W8Q-cd92004b6b9392e2cf07317db8ca9c6d.zip"},
|
{"G634JYR", "19130-MUAT65-0eced7ca55a61cc41341faa3a48d34f3.zip"},
|
||||||
{"G634JZ", "15827-MSW5I1-0f39e92313e54afe3e35f5636dc37fd5.zip"},
|
{"G634JZ", "15827-MSW5I1-0f39e92313e54afe3e35f5636dc37fd5.zip"},
|
||||||
{"G634JZR", "17891-O7PAGL-5c6e6d059ff7bc1b9245fdf8a8066263.zip"},
|
{"G634JZR", "17891-O7PAGL-5c6e6d059ff7bc1b9245fdf8a8066263.zip"},
|
||||||
{"G703GX", "105-NMT9XG-76a0810ddf16ee376fa049bd179377fc.zip"},
|
{"G703GX", "105-NMT9XG-76a0810ddf16ee376fa049bd179377fc.zip"},
|
||||||
@@ -297,15 +322,15 @@ namespace GHelper.Display
|
|||||||
{"G733ZW", "10080-HY42QH-aa285046069cfe113953b91f1a28d101.zip"},
|
{"G733ZW", "10080-HY42QH-aa285046069cfe113953b91f1a28d101.zip"},
|
||||||
{"G733ZX", "10082-JS5F1Y-41bccc831aec7bf1c0a59a309bc607c7.zip"},
|
{"G733ZX", "10082-JS5F1Y-41bccc831aec7bf1c0a59a309bc607c7.zip"},
|
||||||
{"G814JI", "18243-BAU912-671afb033d3b1c44f9852ff608910f42.zip"},
|
{"G814JI", "18243-BAU912-671afb033d3b1c44f9852ff608910f42.zip"},
|
||||||
{"G814JIR", "17315-02XE3O-7a00ed5b91bc305aade5a1830691d0d6.zip"},
|
{"G814JIR", "19802-1CGBPH-f1d31bab157b36d109e1e10591d49f4b.zip"},
|
||||||
{"G814JU", "18193-Y5GMF0-843cee9ed982a3d5aba21e99efbc396c.zip"},
|
{"G814JU", "18193-Y5GMF0-843cee9ed982a3d5aba21e99efbc396c.zip"},
|
||||||
{"G814JV", "18194-9Q537I-c5c2ca782d26dcd5346c110767347903.zip"},
|
{"G814JV", "18194-9Q537I-c5c2ca782d26dcd5346c110767347903.zip"},
|
||||||
{"G814JVR", "17313-P6P61Y-5960dc1d0bd8ba2057bc22aaa8bf89e5.zip"},
|
{"G814JVR", "19801-JK7M4V-617e0c975bf6e2a6f67802d825fa6aa4.zip"},
|
||||||
{"G814JZ", "18195-V98WBX-19d4c2e52916bf9c96fcaed6f1d9bdda.zip"},
|
{"G814JZ", "18195-V98WBX-19d4c2e52916bf9c96fcaed6f1d9bdda.zip"},
|
||||||
{"G834JY", "15954-HAV3KR-d219c43750d485279e12cf76f5b2569b.zip"},
|
{"G834JY", "15954-HAV3KR-d219c43750d485279e12cf76f5b2569b.zip"},
|
||||||
{"G834JYR", "17314-YYBQF3-a65b1bc3fd1e8de145dc9d606e8c45c8.zip"},
|
{"G834JYR", "19121-GX7FZU-7c449cf7db0033db75da0f4a464ee4d9.zip"},
|
||||||
{"G834JZ", "15953-C7XC62-a987058c0a26fa3c929b300d099296a5.zip"},
|
{"G834JZ", "15953-C7XC62-a987058c0a26fa3c929b300d099296a5.zip"},
|
||||||
{"G834JZR", "17316-AFT379-743360d9b36031d91a72fe03e3fafca0.zip"},
|
{"G834JZR", "19122-CAYURL-f71108b839d923ae92f3f83451ddfa69.zip"},
|
||||||
{"GA401IC", "5864-KC8TTP-082f9a62dda322ccaed82ff3e3466bf8.zip"},
|
{"GA401IC", "5864-KC8TTP-082f9a62dda322ccaed82ff3e3466bf8.zip"},
|
||||||
{"GA401IE", "5866-JO8504-dde5402bdecafc1cef55a7dc3d6167ec.zip"},
|
{"GA401IE", "5866-JO8504-dde5402bdecafc1cef55a7dc3d6167ec.zip"},
|
||||||
{"GA401IHR", "5865-7DV6TB-9833a54c7334dc3aef1b9e99f56b9e95.zip"},
|
{"GA401IHR", "5865-7DV6TB-9833a54c7334dc3aef1b9e99f56b9e95.zip"},
|
||||||
@@ -333,9 +358,9 @@ namespace GHelper.Display
|
|||||||
{"GA402XV", "14902-EL34M9-731ba1cc0d27d2db9a79d872673e7958.zip"},
|
{"GA402XV", "14902-EL34M9-731ba1cc0d27d2db9a79d872673e7958.zip"},
|
||||||
{"GA402XY", "14903-ICC56W-0456739d8ba5ee543dfba99eb6ad217a.zip"},
|
{"GA402XY", "14903-ICC56W-0456739d8ba5ee543dfba99eb6ad217a.zip"},
|
||||||
{"GA402XZ", "14904-B3K2NR-928b7272790e7da0079c549cd4885d5d.zip"},
|
{"GA402XZ", "14904-B3K2NR-928b7272790e7da0079c549cd4885d5d.zip"},
|
||||||
{"GA403UI", "18084-XTMSW5-6cad333378f3b1059688a419a8422fc1.zip"},
|
{"GA403UI", "19112-NB8TJ1-e1de0121e30431cc5520ea6eccb6e46f.zip"},
|
||||||
{"GA403UU", "18086-WXV037-ad90bc3f20ff056c45dbbb848fa72a67.zip"},
|
{"GA403UU", "19113-C86SAH-4338dac48ad593c4079515b7599b8943.zip"},
|
||||||
{"GA403UV", "18085-G56QVI-3f24b5bd1eaa8dd9086b86092cb62ffb.zip"},
|
{"GA403UV", "19114-6KR0FP-4740ed98a2ca06bc26c363de380a037d.zip"},
|
||||||
{"GA502II", "3554-REAPZQ-5f94c7ecd52ae2cad50aaac4341bec7b.zip"},
|
{"GA502II", "3554-REAPZQ-5f94c7ecd52ae2cad50aaac4341bec7b.zip"},
|
||||||
{"GA502IU", "3555-15UWZ4-d1cd040265773efd61bdfd146140a990.zip"},
|
{"GA502IU", "3555-15UWZ4-d1cd040265773efd61bdfd146140a990.zip"},
|
||||||
{"GA502IV", "3556-ULLH3K-1f56134e43e1ffa353256fbeb9840d3f.zip"},
|
{"GA502IV", "3556-ULLH3K-1f56134e43e1ffa353256fbeb9840d3f.zip"},
|
||||||
@@ -356,6 +381,9 @@ namespace GHelper.Display
|
|||||||
{"GA503RS", "11745-689QTC-6c441a7161a34b871918fce5997c4e2e.zip"},
|
{"GA503RS", "11745-689QTC-6c441a7161a34b871918fce5997c4e2e.zip"},
|
||||||
{"GA503RW", "12055-SG6VTH-91cc5782da63cf3dcc16804a47db25a2.zip"},
|
{"GA503RW", "12055-SG6VTH-91cc5782da63cf3dcc16804a47db25a2.zip"},
|
||||||
{"GA503RX", "12056-MR9J0D-b7dad63f751d2e53aeee479524986bdd.zip"},
|
{"GA503RX", "12056-MR9J0D-b7dad63f751d2e53aeee479524986bdd.zip"},
|
||||||
|
{"GA605WI", "20014-K4K912-2a2e5a66fac3cc97fb13394a189bd75e.zip"},
|
||||||
|
{"GA605WU", "20015-HJM11B-a724c1fe216b73c0b3b24475047f4615.zip"},
|
||||||
|
{"GA605WV", "20016-BWVQPK-01624c1cdd5a3c05252bad472fab1240.zip"},
|
||||||
{"GL_Series", "2167-P7ELNB-44d357ee720a0c48c2eb37eee785316c.zip"},
|
{"GL_Series", "2167-P7ELNB-44d357ee720a0c48c2eb37eee785316c.zip"},
|
||||||
{"GL503GE", "57-YI7HPS-9ed36ba45ff6398f3648a44ced4e5e61.zip"},
|
{"GL503GE", "57-YI7HPS-9ed36ba45ff6398f3648a44ced4e5e61.zip"},
|
||||||
{"GL504GM", "58-JOZ3S5-998677afd41375cb8fd60ace8d11a788.zip"},
|
{"GL504GM", "58-JOZ3S5-998677afd41375cb8fd60ace8d11a788.zip"},
|
||||||
@@ -395,11 +423,11 @@ namespace GHelper.Display
|
|||||||
{"GU604VI", "14284-R38BM3-e2591bfa2582ce68b2c8aba63beac5e3.zip"},
|
{"GU604VI", "14284-R38BM3-e2591bfa2582ce68b2c8aba63beac5e3.zip"},
|
||||||
{"GU604VY", "14282-78N7V4-25e76896744c53317fa41a80788a2241.zip"},
|
{"GU604VY", "14282-78N7V4-25e76896744c53317fa41a80788a2241.zip"},
|
||||||
{"GU604VZ", "14283-U4JX5C-f31dff75d52f48ceca0102fd1bc76e31.zip"},
|
{"GU604VZ", "14283-U4JX5C-f31dff75d52f48ceca0102fd1bc76e31.zip"},
|
||||||
{"GU605MI", "17935-R3OAJH-55a4fbb2be67a37226accd279357268b.zip"},
|
{"GU605MI", "19271-93QRMU-eab4115ee09fb9bbd86facec08a822a1.zip"},
|
||||||
{"GU605MU", "17936-VBZ5PL-ad3a380f62bc87ee738c09c8e5255f91.zip"},
|
{"GU605MU", "19272-RDZDEJ-4380e52eab6a3742613c2f694a19da1e.zip"},
|
||||||
{"GU605MV", "17938-7DGM0T-caed792b162e94846167888f36fc632e.zip"},
|
{"GU605MV", "19274-1T9PKS-d05273f430d255ad1779cf6a7eb57db3.zip"},
|
||||||
{"GU605MY", "17937-HZWNQ4-72d9c4fed1b31f188874cd6461ffba83.zip"},
|
{"GU605MY", "19273-F4A493-2bc9083d99e7827b4580311d34f8998b.zip"},
|
||||||
{"GU605MZ", "17939-IEJ2X5-fe077100dc4eafbae46d7eb831a791a8.zip"},
|
{"GU605MZ", "19275-52DG5X-1072d6f4fdc5b9cbb304da7146f05a79.zip"},
|
||||||
{"GV301QC", "5128-RN42GR-9a6049e7adabd1ff2aeed24293fe03a8.zip"},
|
{"GV301QC", "5128-RN42GR-9a6049e7adabd1ff2aeed24293fe03a8.zip"},
|
||||||
{"GV301QCZ", "6778-152PHS-7a9ad124aef1059471542dfc8912ed7b.zip"},
|
{"GV301QCZ", "6778-152PHS-7a9ad124aef1059471542dfc8912ed7b.zip"},
|
||||||
{"GV301QE", "5125-PD15GR-9a7f72cbf5bd97d283464d8e407f0231.zip"},
|
{"GV301QE", "5125-PD15GR-9a7f72cbf5bd97d283464d8e407f0231.zip"},
|
||||||
@@ -486,6 +514,7 @@ namespace GHelper.Display
|
|||||||
{"NR2301L", "14736-3DM4T5-41c1b0b5c2d726da7c66e0c39ea08017.zip"},
|
{"NR2301L", "14736-3DM4T5-41c1b0b5c2d726da7c66e0c39ea08017.zip"},
|
||||||
{"RC71L", "17126-IIDPFS-718c077a118724bb0045b35e30d5ac4e.zip"},
|
{"RC71L", "17126-IIDPFS-718c077a118724bb0045b35e30d5ac4e.zip"},
|
||||||
{"RC71X", "15182-KWVC62-c754d9ea39f9160df7e21e4538ce60df.zip"},
|
{"RC71X", "15182-KWVC62-c754d9ea39f9160df7e21e4538ce60df.zip"},
|
||||||
|
{"RC72LA", "19770-DOSUSI-85f700513af330af6e20fcfdabaeb87f.zip"},
|
||||||
};
|
};
|
||||||
|
|
||||||
if (profiles.ContainsKey(model))
|
if (profiles.ContainsKey(model))
|
||||||
|
|||||||
@@ -16,7 +16,10 @@ namespace GHelper.Display
|
|||||||
var modes = new DISPLAYCONFIG_MODE_INFO[modeCount];
|
var modes = new DISPLAYCONFIG_MODE_INFO[modeCount];
|
||||||
err = QueryDisplayConfig(QDC.QDC_ONLY_ACTIVE_PATHS, ref pathCount, paths, ref modeCount, modes, IntPtr.Zero);
|
err = QueryDisplayConfig(QDC.QDC_ONLY_ACTIVE_PATHS, ref pathCount, paths, ref modeCount, modes, IntPtr.Zero);
|
||||||
if (err != 0)
|
if (err != 0)
|
||||||
throw new Win32Exception(err);
|
{
|
||||||
|
Logger.WriteLine("HDR Detection Error: " + new Win32Exception(err).Message);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
string internalName = AppConfig.GetString("internal_display");
|
string internalName = AppConfig.GetString("internal_display");
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,14 @@ namespace GHelper.Display
|
|||||||
{
|
{
|
||||||
|
|
||||||
public const int MAX_REFRESH = 1000;
|
public const int MAX_REFRESH = 1000;
|
||||||
|
public static int MIN_RATE = AppConfig.Get("min_rate", 60);
|
||||||
|
public static int MAX_RATE = AppConfig.Get("max_rate");
|
||||||
|
|
||||||
|
public static int GetMaxRate(string? laptopScreen)
|
||||||
|
{
|
||||||
|
if (MAX_RATE > 0) return MAX_RATE;
|
||||||
|
else return ScreenNative.GetMaxRefreshRate(laptopScreen);
|
||||||
|
}
|
||||||
|
|
||||||
public void AutoScreen(bool force = false)
|
public void AutoScreen(bool force = false)
|
||||||
{
|
{
|
||||||
@@ -15,7 +22,7 @@ namespace GHelper.Display
|
|||||||
if (SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online)
|
if (SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online)
|
||||||
SetScreen(MAX_REFRESH, 1);
|
SetScreen(MAX_REFRESH, 1);
|
||||||
else
|
else
|
||||||
SetScreen(60, 0);
|
SetScreen(MIN_RATE, 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -29,7 +36,7 @@ namespace GHelper.Display
|
|||||||
var refreshRate = ScreenNative.GetRefreshRate(laptopScreen);
|
var refreshRate = ScreenNative.GetRefreshRate(laptopScreen);
|
||||||
if (refreshRate < 0) return;
|
if (refreshRate < 0) return;
|
||||||
|
|
||||||
ScreenNative.SetRefreshRate(laptopScreen, refreshRate > 60 ? 60 : ScreenNative.GetMaxRefreshRate(laptopScreen));
|
ScreenNative.SetRefreshRate(laptopScreen, refreshRate > MIN_RATE ? MIN_RATE : GetMaxRate(laptopScreen));
|
||||||
InitScreen();
|
InitScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,7 +50,7 @@ namespace GHelper.Display
|
|||||||
|
|
||||||
if (frequency >= MAX_REFRESH)
|
if (frequency >= MAX_REFRESH)
|
||||||
{
|
{
|
||||||
frequency = ScreenNative.GetMaxRefreshRate(laptopScreen);
|
frequency = GetMaxRate(laptopScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (frequency > 0 && frequency != refreshRate)
|
if (frequency > 0 && frequency != refreshRate)
|
||||||
@@ -151,7 +158,7 @@ namespace GHelper.Display
|
|||||||
{
|
{
|
||||||
var laptopScreen = ScreenNative.FindLaptopScreen();
|
var laptopScreen = ScreenNative.FindLaptopScreen();
|
||||||
int frequency = ScreenNative.GetRefreshRate(laptopScreen);
|
int frequency = ScreenNative.GetRefreshRate(laptopScreen);
|
||||||
int maxFrequency = ScreenNative.GetMaxRefreshRate(laptopScreen);
|
int maxFrequency = GetMaxRate(laptopScreen);
|
||||||
|
|
||||||
if (maxFrequency > 0) AppConfig.Set("max_frequency", maxFrequency);
|
if (maxFrequency > 0) AppConfig.Set("max_frequency", maxFrequency);
|
||||||
else maxFrequency = AppConfig.Get("max_frequency");
|
else maxFrequency = AppConfig.Get("max_frequency");
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using GHelper.Helpers;
|
using GHelper.Helpers;
|
||||||
|
using Microsoft.Win32;
|
||||||
using System.Management;
|
using System.Management;
|
||||||
|
|
||||||
namespace GHelper.Display
|
namespace GHelper.Display
|
||||||
@@ -37,6 +38,7 @@ namespace GHelper.Display
|
|||||||
Cinema = 25,
|
Cinema = 25,
|
||||||
Vivid = 13,
|
Vivid = 13,
|
||||||
Eyecare = 17,
|
Eyecare = 17,
|
||||||
|
Disabled = 18,
|
||||||
}
|
}
|
||||||
public static class VisualControl
|
public static class VisualControl
|
||||||
{
|
{
|
||||||
@@ -44,6 +46,7 @@ namespace GHelper.Display
|
|||||||
|
|
||||||
private static int _brightness = 100;
|
private static int _brightness = 100;
|
||||||
private static bool _init = true;
|
private static bool _init = true;
|
||||||
|
private static bool _download = true;
|
||||||
private static string? _splendidPath = null;
|
private static string? _splendidPath = null;
|
||||||
|
|
||||||
private static System.Timers.Timer brightnessTimer = new System.Timers.Timer(200);
|
private static System.Timers.Timer brightnessTimer = new System.Timers.Timer(200);
|
||||||
@@ -98,7 +101,7 @@ namespace GHelper.Display
|
|||||||
foreach (FileInfo icm in icms)
|
foreach (FileInfo icm in icms)
|
||||||
{
|
{
|
||||||
//Logger.WriteLine(icm.FullName);
|
//Logger.WriteLine(icm.FullName);
|
||||||
|
|
||||||
if (icm.Name.Contains("sRGB"))
|
if (icm.Name.Contains("sRGB"))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -106,7 +109,7 @@ namespace GHelper.Display
|
|||||||
_modes.Add(isVivo ? SplendidGamut.VivoSRGB : SplendidGamut.sRGB, "Gamut: sRGB");
|
_modes.Add(isVivo ? SplendidGamut.VivoSRGB : SplendidGamut.sRGB, "Gamut: sRGB");
|
||||||
Logger.WriteLine(icm.FullName + " sRGB");
|
Logger.WriteLine(icm.FullName + " sRGB");
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -174,7 +177,8 @@ namespace GHelper.Display
|
|||||||
{ SplendidCommand.FPS, "FPS"},
|
{ SplendidCommand.FPS, "FPS"},
|
||||||
{ SplendidCommand.Cinema, "Cinema"},
|
{ SplendidCommand.Cinema, "Cinema"},
|
||||||
{ SplendidCommand.Vivid, "Vivid" },
|
{ SplendidCommand.Vivid, "Vivid" },
|
||||||
{ SplendidCommand.Eyecare, "Eyecare"}
|
{ SplendidCommand.Eyecare, "Eyecare"},
|
||||||
|
{ SplendidCommand.Disabled, "Disabled"}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -204,6 +208,20 @@ namespace GHelper.Display
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const string GameVisualKey = @"HKEY_CURRENT_USER\Software\ASUS\ARMOURY CRATE Service\GameVisual";
|
||||||
|
const string GameVisualValue = "ActiveGVStatus";
|
||||||
|
|
||||||
|
public static bool IsEnabled()
|
||||||
|
{
|
||||||
|
var status = (int?)Registry.GetValue(GameVisualKey, GameVisualValue, 1);
|
||||||
|
return status > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void SetRegStatus(int status = 1)
|
||||||
|
{
|
||||||
|
Registry.SetValue(GameVisualKey, GameVisualValue, status, RegistryValueKind.DWord);
|
||||||
|
}
|
||||||
|
|
||||||
public static void SetGamut(int mode = -1)
|
public static void SetGamut(int mode = -1)
|
||||||
{
|
{
|
||||||
if (skipGamut) return;
|
if (skipGamut) return;
|
||||||
@@ -211,9 +229,19 @@ namespace GHelper.Display
|
|||||||
|
|
||||||
AppConfig.Set("gamut", mode);
|
AppConfig.Set("gamut", mode);
|
||||||
|
|
||||||
if (RunSplendid(SplendidCommand.GamutMode, 0, mode)) return;
|
var result = RunSplendid(SplendidCommand.GamutMode, 0, mode);
|
||||||
|
if (result == 0) return;
|
||||||
if (_init)
|
if (result == -1)
|
||||||
|
{
|
||||||
|
Logger.WriteLine("Gamut setting refused, reverting.");
|
||||||
|
RunSplendid(SplendidCommand.GamutMode, 0, (int)GetDefaultGamut());
|
||||||
|
if (ProcessHelper.IsUserAdministrator() && _download)
|
||||||
|
{
|
||||||
|
_download = false;
|
||||||
|
ColorProfileHelper.InstallProfile();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (result == 1 && _init)
|
||||||
{
|
{
|
||||||
_init = false;
|
_init = false;
|
||||||
RunSplendid(SplendidCommand.Init);
|
RunSplendid(SplendidCommand.Init);
|
||||||
@@ -224,7 +252,7 @@ namespace GHelper.Display
|
|||||||
public static void SetVisual(SplendidCommand mode = SplendidCommand.Default, int whiteBalance = DefaultColorTemp, bool init = false)
|
public static void SetVisual(SplendidCommand mode = SplendidCommand.Default, int whiteBalance = DefaultColorTemp, bool init = false)
|
||||||
{
|
{
|
||||||
if (mode == SplendidCommand.None) return;
|
if (mode == SplendidCommand.None) return;
|
||||||
if (mode == SplendidCommand.Default && init) return; // Skip default setting on init
|
if ((mode == SplendidCommand.Disabled || mode == SplendidCommand.Default || mode == SplendidCommand.VivoNormal) && init) return; // Skip default setting on init
|
||||||
|
|
||||||
if (!forceVisual && ScreenCCD.GetHDRStatus(true)) return;
|
if (!forceVisual && ScreenCCD.GetHDRStatus(true)) return;
|
||||||
if (!forceVisual && ScreenNative.GetRefreshRate(ScreenNative.FindLaptopScreen(true)) < 0) return;
|
if (!forceVisual && ScreenNative.GetRefreshRate(ScreenNative.FindLaptopScreen(true)) < 0) return;
|
||||||
@@ -234,12 +262,16 @@ namespace GHelper.Display
|
|||||||
|
|
||||||
if (whiteBalance != DefaultColorTemp && !init) ProcessHelper.RunAsAdmin();
|
if (whiteBalance != DefaultColorTemp && !init) ProcessHelper.RunAsAdmin();
|
||||||
|
|
||||||
int? balance;
|
int? balance = null;
|
||||||
|
int command = 0;
|
||||||
|
|
||||||
switch (mode)
|
switch (mode)
|
||||||
{
|
{
|
||||||
|
case SplendidCommand.Disabled:
|
||||||
|
command = 2;
|
||||||
|
break;
|
||||||
case SplendidCommand.Eyecare:
|
case SplendidCommand.Eyecare:
|
||||||
balance = 2;
|
balance = 4;
|
||||||
break;
|
break;
|
||||||
case SplendidCommand.VivoNormal:
|
case SplendidCommand.VivoNormal:
|
||||||
case SplendidCommand.VivoVivid:
|
case SplendidCommand.VivoVivid:
|
||||||
@@ -253,9 +285,19 @@ namespace GHelper.Display
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RunSplendid(mode, 0, balance)) return;
|
int result = RunSplendid(mode, command, balance);
|
||||||
|
if (result == 0) return;
|
||||||
if (_init)
|
if (result == -1)
|
||||||
|
{
|
||||||
|
Logger.WriteLine("Visual mode setting refused, reverting.");
|
||||||
|
RunSplendid(SplendidCommand.Default, 0, DefaultColorTemp);
|
||||||
|
if (ProcessHelper.IsUserAdministrator() && _download)
|
||||||
|
{
|
||||||
|
_download = false;
|
||||||
|
ColorProfileHelper.InstallProfile();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (result == 1 && _init)
|
||||||
{
|
{
|
||||||
_init = false;
|
_init = false;
|
||||||
RunSplendid(SplendidCommand.Init);
|
RunSplendid(SplendidCommand.Init);
|
||||||
@@ -288,7 +330,7 @@ namespace GHelper.Display
|
|||||||
return _splendidPath;
|
return _splendidPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool RunSplendid(SplendidCommand command, int? param1 = null, int? param2 = null)
|
private static int RunSplendid(SplendidCommand command, int? param1 = null, int? param2 = null)
|
||||||
{
|
{
|
||||||
var splendid = GetSplendidPath();
|
var splendid = GetSplendidPath();
|
||||||
bool isVivo = AppConfig.IsVivoZenPro();
|
bool isVivo = AppConfig.IsVivoZenPro();
|
||||||
@@ -298,10 +340,16 @@ namespace GHelper.Display
|
|||||||
{
|
{
|
||||||
if (command == SplendidCommand.DimmingVisual && isVivo) command = SplendidCommand.DimmingVivo;
|
if (command == SplendidCommand.DimmingVisual && isVivo) command = SplendidCommand.DimmingVivo;
|
||||||
var result = ProcessHelper.RunCMD(splendid, (int)command + " " + param1 + " " + param2);
|
var result = ProcessHelper.RunCMD(splendid, (int)command + " " + param1 + " " + param2);
|
||||||
if (result.Contains("file not exist") || (result.Length == 0 && !isVivo)) return false;
|
if (result.Contains("file not exist") || (result.Length == 0 && !isVivo)) return 1;
|
||||||
|
if (result.Contains("return code: -1")) return -1;
|
||||||
|
if (result.Contains("Visual is disabled"))
|
||||||
|
{
|
||||||
|
SetRegStatus(1);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void BrightnessTimerTimer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
|
private static void BrightnessTimerTimer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
|
||||||
@@ -309,28 +357,46 @@ namespace GHelper.Display
|
|||||||
brightnessTimer.Stop();
|
brightnessTimer.Stop();
|
||||||
|
|
||||||
|
|
||||||
if (RunSplendid(SplendidCommand.DimmingVisual, 0, (int)(40 + _brightness * 0.6))) return;
|
if (RunSplendid(SplendidCommand.DimmingVisual, 0, (int)(40 + _brightness * 0.6)) == 0) return;
|
||||||
|
|
||||||
if (_init)
|
if (_init)
|
||||||
{
|
{
|
||||||
_init = false;
|
_init = false;
|
||||||
RunSplendid(SplendidCommand.Init);
|
RunSplendid(SplendidCommand.Init);
|
||||||
RunSplendid(SplendidCommand.Init, 4);
|
RunSplendid(SplendidCommand.Init, 4);
|
||||||
if (RunSplendid(SplendidCommand.DimmingVisual, 0, (int)(40 + _brightness * 0.6))) return;
|
if (RunSplendid(SplendidCommand.DimmingVisual, 0, (int)(40 + _brightness * 0.6)) == 0) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// GammaRamp Fallback
|
// GammaRamp Fallback
|
||||||
SetGamma(_brightness);
|
SetGamma(_brightness);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void InitBrightness()
|
||||||
|
{
|
||||||
|
if (!AppConfig.IsOLED()) return;
|
||||||
|
if (!AppConfig.SaveDimming()) return;
|
||||||
|
|
||||||
|
int brightness = GetBrightness();
|
||||||
|
if (brightness >= 0) SetBrightness(brightness);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool IsOnBattery()
|
||||||
|
{
|
||||||
|
return AppConfig.SaveDimming() && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int GetBrightness()
|
||||||
|
{
|
||||||
|
return AppConfig.Get(IsOnBattery() ? "brightness_battery" : "brightness", 100);
|
||||||
|
}
|
||||||
|
|
||||||
public static int SetBrightness(int brightness = -1, int delta = 0)
|
public static int SetBrightness(int brightness = -1, int delta = 0)
|
||||||
{
|
{
|
||||||
if (!AppConfig.IsOLED()) return -1;
|
if (!AppConfig.IsOLED()) return -1;
|
||||||
|
if (brightness < 0) brightness = GetBrightness();
|
||||||
if (brightness < 0) brightness = AppConfig.Get("brightness", 100);
|
|
||||||
|
|
||||||
_brightness = Math.Max(0, Math.Min(100, brightness + delta));
|
_brightness = Math.Max(0, Math.Min(100, brightness + delta));
|
||||||
AppConfig.Set("brightness", _brightness);
|
AppConfig.Set(IsOnBattery() ? "brightness_battery" : "brightness", _brightness);
|
||||||
|
|
||||||
brightnessTimer.Start();
|
brightnessTimer.Start();
|
||||||
|
|
||||||
|
|||||||
628
app/Extra.Designer.cs
generated
628
app/Extra.Designer.cs
generated
File diff suppressed because it is too large
Load Diff
19
app/Extra.cs
19
app/Extra.cs
@@ -37,6 +37,7 @@ namespace GHelper
|
|||||||
{"brightness_up", Properties.Strings.BrightnessUp},
|
{"brightness_up", Properties.Strings.BrightnessUp},
|
||||||
{"visual", Properties.Strings.VisualMode},
|
{"visual", Properties.Strings.VisualMode},
|
||||||
{"touchscreen", Properties.Strings.ToggleTouchscreen },
|
{"touchscreen", Properties.Strings.ToggleTouchscreen },
|
||||||
|
{"micmute", Properties.Strings.MuteMic},
|
||||||
{"ghelper", Properties.Strings.OpenGHelper},
|
{"ghelper", Properties.Strings.OpenGHelper},
|
||||||
{"custom", Properties.Strings.Custom}
|
{"custom", Properties.Strings.Custom}
|
||||||
};
|
};
|
||||||
@@ -62,6 +63,7 @@ namespace GHelper
|
|||||||
break;
|
break;
|
||||||
case "m3":
|
case "m3":
|
||||||
customActions[""] = Properties.Strings.MuteMic;
|
customActions[""] = Properties.Strings.MuteMic;
|
||||||
|
customActions.Remove("micmute");
|
||||||
break;
|
break;
|
||||||
case "m4":
|
case "m4":
|
||||||
customActions[""] = Properties.Strings.OpenGHelper;
|
customActions[""] = Properties.Strings.OpenGHelper;
|
||||||
@@ -76,7 +78,8 @@ namespace GHelper
|
|||||||
customActions.Remove("fnlock");
|
customActions.Remove("fnlock");
|
||||||
break;
|
break;
|
||||||
case "fnv":
|
case "fnv":
|
||||||
customActions[""] = EMPTY;
|
customActions[""] = Properties.Strings.VisualMode;
|
||||||
|
customActions.Remove("visual");
|
||||||
break;
|
break;
|
||||||
case "fne":
|
case "fne":
|
||||||
customActions[""] = "Calculator";
|
customActions[""] = "Calculator";
|
||||||
@@ -420,7 +423,7 @@ namespace GHelper
|
|||||||
var statusLed = Program.acpi.DeviceGet(AsusACPI.StatusLed);
|
var statusLed = Program.acpi.DeviceGet(AsusACPI.StatusLed);
|
||||||
checkStatusLed.Visible = statusLed >= 0;
|
checkStatusLed.Visible = statusLed >= 0;
|
||||||
checkStatusLed.Checked = (statusLed > 0);
|
checkStatusLed.Checked = (statusLed > 0);
|
||||||
checkStatusLed.CheckedChanged += CheckLEDStatus_CheckedChanged; ;
|
checkStatusLed.CheckedChanged += CheckLEDStatus_CheckedChanged;
|
||||||
|
|
||||||
|
|
||||||
checkBWIcon.Checked = AppConfig.IsBWIcon();
|
checkBWIcon.Checked = AppConfig.IsBWIcon();
|
||||||
@@ -457,7 +460,7 @@ namespace GHelper
|
|||||||
|
|
||||||
private void CheckLEDStatus_CheckedChanged(object? sender, EventArgs e)
|
private void CheckLEDStatus_CheckedChanged(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Program.acpi.DeviceSet(AsusACPI.StatusLed, (checkStatusLed.Checked ? 7 : 0), "StatusLED");
|
InputDispatcher.SetStatusLED(checkStatusLed.Checked);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CheckBWIcon_CheckedChanged(object? sender, EventArgs e)
|
private void CheckBWIcon_CheckedChanged(object? sender, EventArgs e)
|
||||||
@@ -504,7 +507,10 @@ namespace GHelper
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
eCoresMax = Math.Max(8, eCoresMax);
|
if (eCoresMax == 0) eCoresMax = 8;
|
||||||
|
if (pCoresMax == 0) pCoresMax = 6;
|
||||||
|
|
||||||
|
eCoresMax = Math.Max(4, eCoresMax);
|
||||||
pCoresMax = Math.Max(6, pCoresMax);
|
pCoresMax = Math.Max(6, pCoresMax);
|
||||||
|
|
||||||
panelCores.Visible = true;
|
panelCores.Visible = true;
|
||||||
@@ -709,7 +715,10 @@ namespace GHelper
|
|||||||
{
|
{
|
||||||
using (var amdControl = new AmdGpuControl())
|
using (var amdControl = new AmdGpuControl())
|
||||||
{
|
{
|
||||||
amdControl.SetVariBright(checkVariBright.Checked ? 1 : 0);
|
if (NvidiaSmi.GetDisplayActiveStatus()) return; // Skip if Nvidia GPU is active
|
||||||
|
var status = checkVariBright.Checked ? 1 : 0;
|
||||||
|
var result = amdControl.SetVariBright(status);
|
||||||
|
Logger.WriteLine($"VariBright {status}: {result}");
|
||||||
ProcessHelper.KillByName("RadeonSoftware");
|
ProcessHelper.KillByName("RadeonSoftware");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<root>
|
<root>
|
||||||
<!--
|
<!--
|
||||||
Microsoft ResX Schema
|
Microsoft ResX Schema
|
||||||
|
|
||||||
Version 2.0
|
Version 2.0
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
value : The object must be serialized with
|
value : The object must be serialized with
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
value : The object must be serialized with
|
value : The object must be serialized with
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
||||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||||
<AssemblyVersion>0.184</AssemblyVersion>
|
<AssemblyVersion>0.199</AssemblyVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||||
@@ -63,8 +63,8 @@
|
|||||||
<PackageReference Include="NAudio" Version="2.1.0" />
|
<PackageReference Include="NAudio" Version="2.1.0" />
|
||||||
<PackageReference Include="NvAPIWrapper.Net" Version="0.8.1.101" />
|
<PackageReference Include="NvAPIWrapper.Net" Version="0.8.1.101" />
|
||||||
<PackageReference Include="System.Management" Version="8.0.0" />
|
<PackageReference Include="System.Management" Version="8.0.0" />
|
||||||
<PackageReference Include="TaskScheduler" Version="2.10.1" />
|
<PackageReference Include="TaskScheduler" Version="2.11.0" />
|
||||||
<PackageReference Include="WinForms.DataVisualization" Version="1.8.0" />
|
<PackageReference Include="WinForms.DataVisualization" Version="1.9.2" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -62,8 +62,7 @@ public class AmdGpuControl : IGpuControl
|
|||||||
|
|
||||||
public AmdGpuControl()
|
public AmdGpuControl()
|
||||||
{
|
{
|
||||||
if (!Adl2.Load())
|
if (AppConfig.NoGpu() || !Adl2.Load()) return;
|
||||||
return;
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -119,6 +118,18 @@ public class AmdGpuControl : IGpuControl
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int? GetiGpuUse()
|
||||||
|
{
|
||||||
|
if (_adlContextHandle == nint.Zero || _iGPU == null) return null;
|
||||||
|
if (ADL2_New_QueryPMLogData_Get(_adlContextHandle, ((ADLAdapterInfo)_iGPU).AdapterIndex, out ADLPMLogDataOutput adlpmLogDataOutput) != Adl2.ADL_SUCCESS) return null;
|
||||||
|
|
||||||
|
ADLSingleSensorData gpuUsage = adlpmLogDataOutput.Sensors[(int)ADLSensorType.PMLOG_INFO_ACTIVITY_GFX];
|
||||||
|
if (gpuUsage.Supported == 0) return null;
|
||||||
|
|
||||||
|
return gpuUsage.Value;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public int? GetGpuPower()
|
public int? GetGpuPower()
|
||||||
{
|
{
|
||||||
if (_adlContextHandle == nint.Zero || _iGPU == null) return null;
|
if (_adlContextHandle == nint.Zero || _iGPU == null) return null;
|
||||||
|
|||||||
@@ -22,6 +22,12 @@ namespace GHelper.Gpu
|
|||||||
|
|
||||||
public void InitGPUMode()
|
public void InitGPUMode()
|
||||||
{
|
{
|
||||||
|
if (AppConfig.NoGpu())
|
||||||
|
{
|
||||||
|
settings.HideGPUModes(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int eco = Program.acpi.DeviceGet(AsusACPI.GPUEco);
|
int eco = Program.acpi.DeviceGet(AsusACPI.GPUEco);
|
||||||
int mux = Program.acpi.DeviceGet(AsusACPI.GPUMux);
|
int mux = Program.acpi.DeviceGet(AsusACPI.GPUMux);
|
||||||
|
|
||||||
@@ -93,7 +99,15 @@ namespace GHelper.Gpu
|
|||||||
if (AppConfig.NoAutoUltimate())
|
if (AppConfig.NoAutoUltimate())
|
||||||
{
|
{
|
||||||
Program.acpi.SetGPUEco(0);
|
Program.acpi.SetGPUEco(0);
|
||||||
Thread.Sleep(100);
|
Thread.Sleep(500);
|
||||||
|
|
||||||
|
int eco = Program.acpi.DeviceGet(AsusACPI.GPUEco);
|
||||||
|
Logger.WriteLine("Eco flag : " + eco);
|
||||||
|
if (eco == 1)
|
||||||
|
{
|
||||||
|
settings.VisualiseGPUMode();
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
status = Program.acpi.DeviceSet(AsusACPI.GPUMux, 0, "GPUMux");
|
status = Program.acpi.DeviceSet(AsusACPI.GPUMux, 0, "GPUMux");
|
||||||
restart = true;
|
restart = true;
|
||||||
@@ -222,6 +236,7 @@ namespace GHelper.Gpu
|
|||||||
if ((GpuAuto && !IsPlugged()) || (ForceGPU && GpuMode == AsusACPI.GPUModeEco))
|
if ((GpuAuto && !IsPlugged()) || (ForceGPU && GpuMode == AsusACPI.GPUModeEco))
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if (Program.acpi.IsXGConnected()) return false;
|
||||||
if (HardwareControl.IsUsedGPU())
|
if (HardwareControl.IsUsedGPU())
|
||||||
{
|
{
|
||||||
DialogResult dialogResult = MessageBox.Show(Properties.Strings.AlertDGPU, Properties.Strings.AlertDGPUTitle, MessageBoxButtons.YesNo);
|
DialogResult dialogResult = MessageBox.Show(Properties.Strings.AlertDGPU, Properties.Strings.AlertDGPUTitle, MessageBoxButtons.YesNo);
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ public static class NvidiaSmi
|
|||||||
|
|
||||||
public static int GetDefaultMaxGPUPower()
|
public static int GetDefaultMaxGPUPower()
|
||||||
{
|
{
|
||||||
if (AppConfig.ContainsModel("GU605")) return 125;
|
if (AppConfig.ContainsModel("GU605") || AppConfig.ContainsModel("GA605")) return 125;
|
||||||
if (AppConfig.ContainsModel("GA403")) return 90;
|
if (AppConfig.ContainsModel("GA403")) return 90;
|
||||||
if (AppConfig.ContainsModel("FA607")) return 140;
|
if (AppConfig.ContainsModel("FA607")) return 140;
|
||||||
else return 175;
|
else return 175;
|
||||||
@@ -41,7 +41,7 @@ public static class NvidiaSmi
|
|||||||
public static int GetMaxGPUPower()
|
public static int GetMaxGPUPower()
|
||||||
{
|
{
|
||||||
string output = RunNvidiaSmiCommand("--query-gpu=power.max_limit --format csv,noheader,nounits");
|
string output = RunNvidiaSmiCommand("--query-gpu=power.max_limit --format csv,noheader,nounits");
|
||||||
output = output.Trim().Trim('\n', '\r');
|
output = output.Trim().Trim('\n', '\r').Replace(".00","").Replace(",00", "");
|
||||||
|
|
||||||
if (float.TryParse(output, out float floatValue))
|
if (float.TryParse(output, out float floatValue))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ namespace GHelper
|
|||||||
private void CheckController_CheckedChanged(object? sender, EventArgs e)
|
private void CheckController_CheckedChanged(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
AppConfig.Set("controller_disabled", checkController.Checked ? 1 : 0);
|
AppConfig.Set("controller_disabled", checkController.Checked ? 1 : 0);
|
||||||
AllyControl.ApplyXBoxStatus();
|
AllyControl.DisableXBoxController(checkController.Checked);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ComboBinding(RComboBox combo)
|
private void ComboBinding(RComboBox combo)
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ public static class HardwareControl
|
|||||||
public static decimal? fullCapacity;
|
public static decimal? fullCapacity;
|
||||||
public static decimal? chargeCapacity;
|
public static decimal? chargeCapacity;
|
||||||
|
|
||||||
|
public static string? batteryCharge;
|
||||||
|
|
||||||
public static string? cpuFan;
|
public static string? cpuFan;
|
||||||
public static string? gpuFan;
|
public static string? gpuFan;
|
||||||
@@ -34,6 +34,20 @@ public static class HardwareControl
|
|||||||
|
|
||||||
static long lastUpdate;
|
static long lastUpdate;
|
||||||
|
|
||||||
|
static bool _chargeWatt = AppConfig.Is("charge_watt");
|
||||||
|
public static bool chargeWatt
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _chargeWatt;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
AppConfig.Set("charge_watt", value ? 1 : 0);
|
||||||
|
_chargeWatt = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static int GetGpuUse()
|
private static int GetGpuUse()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -226,11 +240,17 @@ public static class HardwareControl
|
|||||||
|
|
||||||
if (fullCapacity > 0 && chargeCapacity > 0)
|
if (fullCapacity > 0 && chargeCapacity > 0)
|
||||||
{
|
{
|
||||||
batteryCapacity = Math.Min(100, ((decimal)chargeCapacity / (decimal)fullCapacity) * 100);
|
batteryCapacity = Math.Min(100, (decimal)chargeCapacity / (decimal)fullCapacity * 100);
|
||||||
if (batteryCapacity > 99) BatteryControl.UnSetBatteryLimitFull();
|
if (batteryCapacity > 99 && BatteryControl.chargeFull) BatteryControl.UnSetBatteryLimitFull();
|
||||||
|
if (chargeWatt)
|
||||||
|
{
|
||||||
|
batteryCharge = Math.Round((decimal)chargeCapacity / 1000, 1).ToString() + "Wh";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
batteryCharge = Math.Round(batteryCapacity, 1) + "%";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsUsedGPU(int threshold = 10)
|
public static bool IsUsedGPU(int threshold = 10)
|
||||||
@@ -265,6 +285,7 @@ public static class HardwareControl
|
|||||||
|
|
||||||
public static void RecreateGpuControl()
|
public static void RecreateGpuControl()
|
||||||
{
|
{
|
||||||
|
if (AppConfig.NoGpu()) return;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
GpuControl?.Dispose();
|
GpuControl?.Dispose();
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ namespace GHelper.Helpers
|
|||||||
|
|
||||||
public static bool IsEnabled()
|
public static bool IsEnabled()
|
||||||
{
|
{
|
||||||
|
if (Environment.OSVersion.Version.Build < 22000) return false;
|
||||||
|
|
||||||
using var key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Lighting");
|
using var key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Lighting");
|
||||||
var registryValueObject = key?.GetValue("AmbientLightingEnabled");
|
var registryValueObject = key?.GetValue("AmbientLightingEnabled");
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ namespace GHelper.Helpers
|
|||||||
"AsusCertService"
|
"AsusCertService"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//"AsusPTPService",
|
||||||
|
|
||||||
static List<string> processesAC = new() {
|
static List<string> processesAC = new() {
|
||||||
"ArmouryCrateSE.Service",
|
"ArmouryCrateSE.Service",
|
||||||
"ArmouryCrate.Service",
|
"ArmouryCrate.Service",
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
using GHelper.Helpers;
|
using GHelper.Helpers;
|
||||||
using Microsoft.Win32.TaskScheduler;
|
using Microsoft.Win32.TaskScheduler;
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Security.Principal;
|
using System.Security.Principal;
|
||||||
|
|
||||||
public class Startup
|
public class Startup
|
||||||
{
|
{
|
||||||
|
|
||||||
static string taskName = "GHelper";
|
static string taskName = "GHelper";
|
||||||
|
static string chargeTaskName = taskName + "Charge";
|
||||||
|
static string strExeFilePath = Application.ExecutablePath.Trim();
|
||||||
|
|
||||||
public static bool IsScheduled()
|
public static bool IsScheduled()
|
||||||
{
|
{
|
||||||
@@ -32,7 +33,6 @@ public class Startup
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string strExeFilePath = Application.ExecutablePath.Trim();
|
|
||||||
string action = task.Definition.Actions.FirstOrDefault()!.ToString().Trim();
|
string action = task.Definition.Actions.FirstOrDefault()!.ToString().Trim();
|
||||||
if (!strExeFilePath.Equals(action, StringComparison.OrdinalIgnoreCase) && !File.Exists(action))
|
if (!strExeFilePath.Equals(action, StringComparison.OrdinalIgnoreCase) && !File.Exists(action))
|
||||||
{
|
{
|
||||||
@@ -41,11 +41,60 @@ public class Startup
|
|||||||
UnSchedule();
|
UnSchedule();
|
||||||
Schedule();
|
Schedule();
|
||||||
}
|
}
|
||||||
} catch (Exception ex)
|
}
|
||||||
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.WriteLine($"Can't check startup task: {ex.Message}");
|
Logger.WriteLine($"Can't check startup task: {ex.Message}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (taskService.RootFolder.AllTasks.FirstOrDefault(t => t.Name == chargeTaskName) == null) ScheduleCharge();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void UnscheduleCharge()
|
||||||
|
{
|
||||||
|
using (TaskService taskService = new TaskService())
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
taskService.RootFolder.DeleteTask(chargeTaskName);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Logger.WriteLine("Can't remove charge limit task: " + e.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ScheduleCharge()
|
||||||
|
{
|
||||||
|
|
||||||
|
if (strExeFilePath is null) return;
|
||||||
|
|
||||||
|
using (TaskDefinition td = TaskService.Instance.NewTask())
|
||||||
|
{
|
||||||
|
td.RegistrationInfo.Description = "G-Helper Charge Limit";
|
||||||
|
td.Triggers.Add(new BootTrigger());
|
||||||
|
td.Actions.Add(strExeFilePath, "charge");
|
||||||
|
|
||||||
|
td.Principal.RunLevel = TaskRunLevel.LUA;
|
||||||
|
td.Principal.LogonType = TaskLogonType.S4U;
|
||||||
|
td.Principal.UserId = WindowsIdentity.GetCurrent().Name;
|
||||||
|
|
||||||
|
td.Settings.StopIfGoingOnBatteries = false;
|
||||||
|
td.Settings.DisallowStartIfOnBatteries = false;
|
||||||
|
td.Settings.ExecutionTimeLimit = TimeSpan.Zero;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
TaskService.Instance.RootFolder.RegisterTaskDefinition(chargeTaskName, td);
|
||||||
|
Logger.WriteLine("Charge limit task scheduled: " + strExeFilePath);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Logger.WriteLine("Can't create a charge limit task: " + e.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -53,29 +102,20 @@ public class Startup
|
|||||||
public static void Schedule()
|
public static void Schedule()
|
||||||
{
|
{
|
||||||
|
|
||||||
string strExeFilePath = Application.ExecutablePath;
|
|
||||||
|
|
||||||
if (strExeFilePath is null) return;
|
|
||||||
|
|
||||||
var userId = WindowsIdentity.GetCurrent().Name;
|
|
||||||
|
|
||||||
using (TaskDefinition td = TaskService.Instance.NewTask())
|
using (TaskDefinition td = TaskService.Instance.NewTask())
|
||||||
{
|
{
|
||||||
|
|
||||||
td.RegistrationInfo.Description = "G-Helper Auto Start";
|
td.RegistrationInfo.Description = "G-Helper Auto Start";
|
||||||
td.Triggers.Add(new LogonTrigger { UserId = userId, Delay = TimeSpan.FromSeconds(1) });
|
td.Triggers.Add(new LogonTrigger { UserId = WindowsIdentity.GetCurrent().Name, Delay = TimeSpan.FromSeconds(2) });
|
||||||
td.Actions.Add(strExeFilePath);
|
td.Actions.Add(strExeFilePath);
|
||||||
|
|
||||||
if (ProcessHelper.IsUserAdministrator())
|
if (ProcessHelper.IsUserAdministrator())
|
||||||
td.Principal.RunLevel = TaskRunLevel.Highest;
|
td.Principal.RunLevel = TaskRunLevel.Highest;
|
||||||
|
|
||||||
td.Settings.StopIfGoingOnBatteries = false;
|
td.Settings.StopIfGoingOnBatteries = false;
|
||||||
td.Settings.DisallowStartIfOnBatteries = false;
|
td.Settings.DisallowStartIfOnBatteries = false;
|
||||||
td.Settings.ExecutionTimeLimit = TimeSpan.Zero;
|
td.Settings.ExecutionTimeLimit = TimeSpan.Zero;
|
||||||
|
|
||||||
Debug.WriteLine(strExeFilePath);
|
|
||||||
Debug.WriteLine(userId);
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
TaskService.Instance.RootFolder.RegisterTaskDefinition(taskName, td);
|
TaskService.Instance.RootFolder.RegisterTaskDefinition(taskName, td);
|
||||||
@@ -87,8 +127,12 @@ public class Startup
|
|||||||
else
|
else
|
||||||
ProcessHelper.RunAsAdmin();
|
ProcessHelper.RunAsAdmin();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Logger.WriteLine("Startup task scheduled: " + strExeFilePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ScheduleCharge();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void UnSchedule()
|
public static void UnSchedule()
|
||||||
@@ -107,5 +151,7 @@ public class Startup
|
|||||||
ProcessHelper.RunAsAdmin();
|
ProcessHelper.RunAsAdmin();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UnscheduleCharge();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,21 +2,31 @@
|
|||||||
|
|
||||||
public static class TouchscreenHelper
|
public static class TouchscreenHelper
|
||||||
{
|
{
|
||||||
public static bool? ToggleTouchscreen()
|
|
||||||
|
public static bool? GetStatus()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ProcessHelper.RunAsAdmin();
|
ProcessHelper.RunAsAdmin();
|
||||||
|
return ProcessHelper.RunCMD("powershell", "(Get-PnpDevice -FriendlyName '*touch*screen*').Status").Contains("OK");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.WriteLine($"Can't get touchscreen status: {ex.Message}");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var status = !ProcessHelper.RunCMD("powershell", "(Get-PnpDevice -FriendlyName '*touch*screen*').Status").Contains("OK");
|
public static void ToggleTouchscreen(bool status)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ProcessHelper.RunAsAdmin();
|
||||||
ProcessHelper.RunCMD("powershell", (status ? "Enable-PnpDevice" : "Disable-PnpDevice") + " -InstanceId (Get-PnpDevice -FriendlyName '*touch*screen*').InstanceId -Confirm:$false");
|
ProcessHelper.RunCMD("powershell", (status ? "Enable-PnpDevice" : "Disable-PnpDevice") + " -InstanceId (Get-PnpDevice -FriendlyName '*touch*screen*').InstanceId -Confirm:$false");
|
||||||
|
|
||||||
return status;
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.WriteLine($"Can't toggle touchscreen: {ex.Message}");
|
Logger.WriteLine($"Can't toggle touchscreen: {ex.Message}");
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,9 +14,16 @@ namespace GHelper.Input
|
|||||||
{
|
{
|
||||||
System.Timers.Timer timer = new System.Timers.Timer(1000);
|
System.Timers.Timer timer = new System.Timers.Timer(1000);
|
||||||
public static bool backlightActivity = true;
|
public static bool backlightActivity = true;
|
||||||
|
public static bool lidClose = false;
|
||||||
|
|
||||||
public static Keys keyProfile = Keys.F5;
|
public static Keys keyProfile = (Keys)AppConfig.Get("keybind_profile", (int)Keys.F5);
|
||||||
public static Keys keyApp = Keys.F12;
|
public static Keys keyApp = (Keys)AppConfig.Get("keybind_app", (int)Keys.F12);
|
||||||
|
|
||||||
|
public static Keys keyProfile0 = (Keys)AppConfig.Get("keybind_profile_0", (int)Keys.F17);
|
||||||
|
public static Keys keyProfile1 = (Keys)AppConfig.Get("keybind_profile_1", (int)Keys.F18);
|
||||||
|
public static Keys keyProfile2 = (Keys)AppConfig.Get("keybind_profile_2", (int)Keys.F16);
|
||||||
|
public static Keys keyProfile3 = (Keys)AppConfig.Get("keybind_profile_3", (int)Keys.F19);
|
||||||
|
public static Keys keyProfile4 = (Keys)AppConfig.Get("keybind_profile_4", (int)Keys.F20);
|
||||||
|
|
||||||
static ModeControl modeControl = Program.modeControl;
|
static ModeControl modeControl = Program.modeControl;
|
||||||
static ScreenControl screenControl = new ScreenControl();
|
static ScreenControl screenControl = new ScreenControl();
|
||||||
@@ -79,14 +86,18 @@ namespace GHelper.Input
|
|||||||
Program.acpi.DeviceInit();
|
Program.acpi.DeviceInit();
|
||||||
|
|
||||||
if (!OptimizationService.IsRunning())
|
if (!OptimizationService.IsRunning())
|
||||||
|
{
|
||||||
|
Program.acpi.DeviceGet(AsusACPI.CameraShutter);
|
||||||
listener = new KeyboardListener(HandleEvent);
|
listener = new KeyboardListener(HandleEvent);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
Logger.WriteLine("Optimization service is running");
|
Logger.WriteLine("Optimization service is running");
|
||||||
|
}
|
||||||
|
|
||||||
InitBacklightTimer();
|
InitBacklightTimer();
|
||||||
|
|
||||||
if (AppConfig.IsVivoZenbook())
|
if (AppConfig.IsHardwareFnLock()) HardwareFnLock(AppConfig.Is("fn_lock"));
|
||||||
Program.acpi.DeviceSet(AsusACPI.FnLock, AppConfig.Is("fn_lock") ^ AppConfig.IsInvertedFNLock() ? 1 : 0, "FnLock");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -102,10 +113,6 @@ namespace GHelper.Input
|
|||||||
{
|
{
|
||||||
hook.UnregisterAll();
|
hook.UnregisterAll();
|
||||||
|
|
||||||
// CTRL + SHIFT + F5 to cycle profiles
|
|
||||||
if (AppConfig.Get("keybind_profile") != -1) keyProfile = (Keys)AppConfig.Get("keybind_profile");
|
|
||||||
if (AppConfig.Get("keybind_app") != -1) keyApp = (Keys)AppConfig.Get("keybind_app");
|
|
||||||
|
|
||||||
string actionM1 = AppConfig.GetString("m1");
|
string actionM1 = AppConfig.GetString("m1");
|
||||||
string actionM2 = AppConfig.GetString("m2");
|
string actionM2 = AppConfig.GetString("m2");
|
||||||
|
|
||||||
@@ -119,18 +126,24 @@ namespace GHelper.Input
|
|||||||
|
|
||||||
if (!AppConfig.Is("skip_hotkeys"))
|
if (!AppConfig.Is("skip_hotkeys"))
|
||||||
{
|
{
|
||||||
|
if (AppConfig.IsDUO())
|
||||||
|
{
|
||||||
|
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F7);
|
||||||
|
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F8);
|
||||||
|
}
|
||||||
|
|
||||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F13);
|
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F13);
|
||||||
|
|
||||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F14);
|
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F14);
|
||||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F15);
|
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F15);
|
||||||
|
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F21);
|
||||||
|
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F22);
|
||||||
|
|
||||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F16);
|
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, keyProfile0);
|
||||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F17);
|
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, keyProfile1);
|
||||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F18);
|
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, keyProfile2);
|
||||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F19);
|
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, keyProfile3);
|
||||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F20);
|
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, keyProfile4);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
hook.RegisterHotKey(ModifierKeys.Control, Keys.VolumeDown);
|
hook.RegisterHotKey(ModifierKeys.Control, Keys.VolumeDown);
|
||||||
hook.RegisterHotKey(ModifierKeys.Control, Keys.VolumeUp);
|
hook.RegisterHotKey(ModifierKeys.Control, Keys.VolumeUp);
|
||||||
@@ -155,7 +168,7 @@ namespace GHelper.Input
|
|||||||
|
|
||||||
// FN-Lock group
|
// FN-Lock group
|
||||||
|
|
||||||
if (AppConfig.Is("fn_lock") && !AppConfig.IsVivoZenbook())
|
if (AppConfig.Is("fn_lock") && !AppConfig.IsHardwareFnLock())
|
||||||
for (Keys i = Keys.F1; i <= Keys.F11; i++) hook.RegisterHotKey(ModifierKeys.None, i);
|
for (Keys i = Keys.F1; i <= Keys.F11; i++) hook.RegisterHotKey(ModifierKeys.None, i);
|
||||||
|
|
||||||
// Arrow-lock group
|
// Arrow-lock group
|
||||||
@@ -229,24 +242,31 @@ namespace GHelper.Input
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void SetBrightness(int delta)
|
static void SetBrightness(bool up, bool hotkey = false)
|
||||||
{
|
{
|
||||||
int brightness = -1;
|
int brightness = -1;
|
||||||
|
|
||||||
if (isTUF) brightness = ScreenBrightness.Get();
|
if (isTUF) brightness = ScreenBrightness.Get();
|
||||||
if (AppConfig.SwappedBrightness()) delta = -delta;
|
if (AppConfig.SwappedBrightness() && !hotkey) up = !up;
|
||||||
|
|
||||||
Program.acpi.DeviceSet(AsusACPI.UniversalControl, delta > 0 ? AsusACPI.Brightness_Up : AsusACPI.Brightness_Down, "Brightness");
|
int step = AppConfig.Get("brightness_step", 10);
|
||||||
|
if (step != 10)
|
||||||
|
{
|
||||||
|
Program.toast.RunToast(ScreenBrightness.Adjust(up ? step : -step) + "%", up ? ToastIcon.BrightnessUp : ToastIcon.BrightnessDown);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Program.acpi.DeviceSet(AsusACPI.UniversalControl, up ? AsusACPI.Brightness_Up : AsusACPI.Brightness_Down, "Brightness");
|
||||||
|
|
||||||
if (isTUF)
|
if (isTUF)
|
||||||
{
|
{
|
||||||
if (AppConfig.SwappedBrightness()) return;
|
if (AppConfig.SwappedBrightness()) return;
|
||||||
if (delta < 0 && brightness <= 0) return;
|
if (!up && brightness <= 0) return;
|
||||||
if (delta > 0 && brightness >= 100) return;
|
if (up && brightness >= 100) return;
|
||||||
|
|
||||||
Thread.Sleep(100);
|
Thread.Sleep(100);
|
||||||
if (brightness == ScreenBrightness.Get())
|
if (brightness == ScreenBrightness.Get())
|
||||||
Program.toast.RunToast(ScreenBrightness.Adjust(delta) + "%", (delta < 0) ? ToastIcon.BrightnessDown : ToastIcon.BrightnessUp);
|
Program.toast.RunToast(ScreenBrightness.Adjust(up ? step : -step) + "%", up ? ToastIcon.BrightnessUp : ToastIcon.BrightnessDown);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -276,7 +296,7 @@ namespace GHelper.Input
|
|||||||
KeyboardHook.KeyPress(Keys.VolumeUp);
|
KeyboardHook.KeyPress(Keys.VolumeUp);
|
||||||
return;
|
return;
|
||||||
case Keys.F4:
|
case Keys.F4:
|
||||||
KeyProcess("m3");
|
ToggleMic();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -295,10 +315,10 @@ namespace GHelper.Input
|
|||||||
HandleEvent(199); // Backlight cycle
|
HandleEvent(199); // Backlight cycle
|
||||||
return;
|
return;
|
||||||
case Keys.F5:
|
case Keys.F5:
|
||||||
SetBrightness(-10);
|
SetBrightness(false);
|
||||||
return;
|
return;
|
||||||
case Keys.F6:
|
case Keys.F6:
|
||||||
SetBrightness(+10);
|
SetBrightness(true);
|
||||||
return;
|
return;
|
||||||
case Keys.F7:
|
case Keys.F7:
|
||||||
KeyboardHook.KeyKeyPress(Keys.LWin, Keys.P);
|
KeyboardHook.KeyKeyPress(Keys.LWin, Keys.P);
|
||||||
@@ -307,7 +327,7 @@ namespace GHelper.Input
|
|||||||
HandleEvent(126); // Emojis
|
HandleEvent(126); // Emojis
|
||||||
return;
|
return;
|
||||||
case Keys.F9:
|
case Keys.F9:
|
||||||
KeyProcess("m3"); // MicMute
|
ToggleMic(); // MicMute
|
||||||
return;
|
return;
|
||||||
case Keys.F10:
|
case Keys.F10:
|
||||||
HandleEvent(133); // Camera Toggle
|
HandleEvent(133); // Camera Toggle
|
||||||
@@ -366,10 +386,10 @@ namespace GHelper.Input
|
|||||||
KeyboardHook.KeyPress(Keys.Snapshot);
|
KeyboardHook.KeyPress(Keys.Snapshot);
|
||||||
break;
|
break;
|
||||||
case Keys.F7:
|
case Keys.F7:
|
||||||
SetBrightness(-10);
|
SetBrightness(false);
|
||||||
break;
|
break;
|
||||||
case Keys.F8:
|
case Keys.F8:
|
||||||
SetBrightness(+10);
|
SetBrightness(true);
|
||||||
break;
|
break;
|
||||||
case Keys.F9:
|
case Keys.F9:
|
||||||
KeyboardHook.KeyKeyPress(Keys.LWin, Keys.P);
|
KeyboardHook.KeyKeyPress(Keys.LWin, Keys.P);
|
||||||
@@ -408,20 +428,26 @@ namespace GHelper.Input
|
|||||||
{
|
{
|
||||||
if (e.Key == keyProfile) modeControl.CyclePerformanceMode();
|
if (e.Key == keyProfile) modeControl.CyclePerformanceMode();
|
||||||
if (e.Key == keyApp) Program.SettingsToggle();
|
if (e.Key == keyApp) Program.SettingsToggle();
|
||||||
if (e.Key == Keys.F20) KeyProcess("m3");
|
if (e.Key == Keys.F20) ToggleMic();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e.Modifier == (ModifierKeys.Control | ModifierKeys.Shift | ModifierKeys.Alt))
|
if (e.Modifier == (ModifierKeys.Control | ModifierKeys.Shift | ModifierKeys.Alt))
|
||||||
{
|
{
|
||||||
if (e.Key == keyProfile) modeControl.CyclePerformanceMode(true);
|
if (e.Key == keyProfile) modeControl.CyclePerformanceMode(true);
|
||||||
|
|
||||||
|
if (e.Key == keyProfile0) modeControl.SetPerformanceMode(0, true);
|
||||||
|
if (e.Key == keyProfile1) modeControl.SetPerformanceMode(1, true);
|
||||||
|
if (e.Key == keyProfile2) modeControl.SetPerformanceMode(2, true);
|
||||||
|
if (e.Key == keyProfile3) modeControl.SetPerformanceMode(3, true);
|
||||||
|
if (e.Key == keyProfile4) modeControl.SetPerformanceMode(4, true);
|
||||||
|
|
||||||
switch (e.Key)
|
switch (e.Key)
|
||||||
{
|
{
|
||||||
case Keys.F1:
|
case Keys.F1:
|
||||||
SetBrightness(-10);
|
SetBrightness(false);
|
||||||
break;
|
break;
|
||||||
case Keys.F2:
|
case Keys.F2:
|
||||||
SetBrightness(10);
|
SetBrightness(true);
|
||||||
break;
|
break;
|
||||||
case Keys.F3:
|
case Keys.F3:
|
||||||
Program.settingsForm.gpuControl.ToggleXGM(true);
|
Program.settingsForm.gpuControl.ToggleXGM(true);
|
||||||
@@ -429,29 +455,30 @@ namespace GHelper.Input
|
|||||||
case Keys.F4:
|
case Keys.F4:
|
||||||
Program.settingsForm.BeginInvoke(Program.settingsForm.allyControl.ToggleModeHotkey);
|
Program.settingsForm.BeginInvoke(Program.settingsForm.allyControl.ToggleModeHotkey);
|
||||||
break;
|
break;
|
||||||
|
case Keys.F7:
|
||||||
|
SetScreenpad(-10);
|
||||||
|
break;
|
||||||
|
case Keys.F8:
|
||||||
|
SetScreenpad(10);
|
||||||
|
break;
|
||||||
case Keys.F13:
|
case Keys.F13:
|
||||||
ToggleScreenRate();
|
ToggleScreenRate();
|
||||||
break;
|
break;
|
||||||
case Keys.F14:
|
case Keys.F14:
|
||||||
|
Program.toast.RunToast(Properties.Strings.EcoMode);
|
||||||
Program.settingsForm.gpuControl.SetGPUMode(AsusACPI.GPUModeEco);
|
Program.settingsForm.gpuControl.SetGPUMode(AsusACPI.GPUModeEco);
|
||||||
break;
|
break;
|
||||||
case Keys.F15:
|
case Keys.F15:
|
||||||
|
Program.toast.RunToast(Properties.Strings.StandardMode);
|
||||||
Program.settingsForm.gpuControl.SetGPUMode(AsusACPI.GPUModeStandard);
|
Program.settingsForm.gpuControl.SetGPUMode(AsusACPI.GPUModeStandard);
|
||||||
break;
|
break;
|
||||||
case Keys.F16:
|
case Keys.F21:
|
||||||
modeControl.SetPerformanceMode(2, true);
|
Program.toast.RunToast("Activating XGM");
|
||||||
|
Program.settingsForm.gpuControl.ToggleXGM(true);
|
||||||
break;
|
break;
|
||||||
case Keys.F17:
|
case Keys.F22:
|
||||||
modeControl.SetPerformanceMode(0, true);
|
Program.toast.RunToast("Deactivating XGM");
|
||||||
break;
|
Program.settingsForm.gpuControl.ToggleXGM(false);
|
||||||
case Keys.F18:
|
|
||||||
modeControl.SetPerformanceMode(1, true);
|
|
||||||
break;
|
|
||||||
case Keys.F19:
|
|
||||||
modeControl.SetPerformanceMode(3, true);
|
|
||||||
break;
|
|
||||||
case Keys.F20:
|
|
||||||
modeControl.SetPerformanceMode(4, true);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -463,11 +490,11 @@ namespace GHelper.Input
|
|||||||
{
|
{
|
||||||
case Keys.VolumeDown:
|
case Keys.VolumeDown:
|
||||||
// Screen brightness down on CTRL+VolDown
|
// Screen brightness down on CTRL+VolDown
|
||||||
SetBrightness(-10);
|
SetBrightness(false);
|
||||||
break;
|
break;
|
||||||
case Keys.VolumeUp:
|
case Keys.VolumeUp:
|
||||||
// Screen brightness up on CTRL+VolUp
|
// Screen brightness up on CTRL+VolUp
|
||||||
SetBrightness(+10);
|
SetBrightness(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -505,6 +532,8 @@ namespace GHelper.Input
|
|||||||
action = "micmute";
|
action = "micmute";
|
||||||
if (name == "fnc")
|
if (name == "fnc")
|
||||||
action = "fnlock";
|
action = "fnlock";
|
||||||
|
if (name == "fnv")
|
||||||
|
action = "visual";
|
||||||
if (name == "fne")
|
if (name == "fne")
|
||||||
action = "calculator";
|
action = "calculator";
|
||||||
}
|
}
|
||||||
@@ -559,15 +588,13 @@ namespace GHelper.Input
|
|||||||
ToggleFnLock();
|
ToggleFnLock();
|
||||||
break;
|
break;
|
||||||
case "micmute":
|
case "micmute":
|
||||||
bool muteStatus = Audio.ToggleMute();
|
ToggleMic();
|
||||||
Program.toast.RunToast(muteStatus ? Properties.Strings.Muted : Properties.Strings.Unmuted, muteStatus ? ToastIcon.MicrophoneMute : ToastIcon.Microphone);
|
|
||||||
if (AppConfig.IsVivoZenbook()) Program.acpi.DeviceSet(AsusACPI.MicMuteLed, muteStatus ? 1 : 0, "MicmuteLed");
|
|
||||||
break;
|
break;
|
||||||
case "brightness_up":
|
case "brightness_up":
|
||||||
SetBrightness(+10);
|
SetBrightness(true);
|
||||||
break;
|
break;
|
||||||
case "brightness_down":
|
case "brightness_down":
|
||||||
SetBrightness(-10);
|
SetBrightness(false);
|
||||||
break;
|
break;
|
||||||
case "screenpad_up":
|
case "screenpad_up":
|
||||||
SetScreenpad(10);
|
SetScreenpad(10);
|
||||||
@@ -585,15 +612,27 @@ namespace GHelper.Input
|
|||||||
Program.settingsForm.BeginInvoke(Program.settingsForm.allyControl.ToggleModeHotkey);
|
Program.settingsForm.BeginInvoke(Program.settingsForm.allyControl.ToggleModeHotkey);
|
||||||
break;
|
break;
|
||||||
case "touchscreen":
|
case "touchscreen":
|
||||||
var touchscreenStatus = TouchscreenHelper.ToggleTouchscreen();
|
var status = !TouchscreenHelper.GetStatus();
|
||||||
if (touchscreenStatus is not null)
|
Logger.WriteLine("Touchscreen status: " + status);
|
||||||
Program.toast.RunToast(Properties.Strings.Touchscreen + " " + ((bool)touchscreenStatus ? Properties.Strings.On : Properties.Strings.Off), ToastIcon.Touchpad);
|
if (status is not null)
|
||||||
|
{
|
||||||
|
Program.toast.RunToast(Properties.Strings.Touchscreen + " " + ((bool)status ? Properties.Strings.On : Properties.Strings.Off), ToastIcon.Touchpad);
|
||||||
|
TouchscreenHelper.ToggleTouchscreen((bool)status);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void ToggleMic()
|
||||||
|
{
|
||||||
|
bool muteStatus = Audio.ToggleMute();
|
||||||
|
Program.toast.RunToast(muteStatus ? Properties.Strings.Muted : Properties.Strings.Unmuted, muteStatus ? ToastIcon.MicrophoneMute : ToastIcon.Microphone);
|
||||||
|
if (AppConfig.IsVivoZenbook()) Program.acpi.DeviceSet(AsusACPI.MicMuteLed, muteStatus ? 1 : 0, "MicmuteLed");
|
||||||
|
}
|
||||||
|
|
||||||
static bool GetTouchpadState()
|
static bool GetTouchpadState()
|
||||||
{
|
{
|
||||||
using (var key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\PrecisionTouchPad\Status", false))
|
using (var key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\PrecisionTouchPad\Status", false))
|
||||||
@@ -629,13 +668,19 @@ namespace GHelper.Input
|
|||||||
Program.toast.RunToast("Arrow-Lock " + (arLock == 1 ? Properties.Strings.On : Properties.Strings.Off), ToastIcon.FnLock);
|
Program.toast.RunToast("Arrow-Lock " + (arLock == 1 ? Properties.Strings.On : Properties.Strings.Off), ToastIcon.FnLock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void HardwareFnLock(bool fnLock)
|
||||||
|
{
|
||||||
|
Program.acpi.DeviceSet(AsusACPI.FnLock, fnLock ^ AppConfig.IsInvertedFNLock() ? 1 : 0, "FnLock");
|
||||||
|
AsusHid.WriteInput([AsusHid.INPUT_ID, 0xD0, 0x4E, fnLock ? (byte)0x00 : (byte)0x01], "USB FnLock");
|
||||||
|
}
|
||||||
|
|
||||||
public static void ToggleFnLock()
|
public static void ToggleFnLock()
|
||||||
{
|
{
|
||||||
bool fnLock = !AppConfig.Is("fn_lock");
|
bool fnLock = !AppConfig.Is("fn_lock");
|
||||||
AppConfig.Set("fn_lock", fnLock ? 1 : 0);
|
AppConfig.Set("fn_lock", fnLock ? 1 : 0);
|
||||||
|
|
||||||
if (AppConfig.IsVivoZenbook())
|
if (AppConfig.IsHardwareFnLock())
|
||||||
Program.acpi.DeviceSet(AsusACPI.FnLock, fnLock ^ AppConfig.IsInvertedFNLock() ? 1 : 0, "FnLock");
|
HardwareFnLock(fnLock);
|
||||||
else
|
else
|
||||||
Program.settingsForm.BeginInvoke(Program.inputDispatcher.RegisterKeys);
|
Program.settingsForm.BeginInvoke(Program.inputDispatcher.RegisterKeys);
|
||||||
|
|
||||||
@@ -707,13 +752,12 @@ namespace GHelper.Input
|
|||||||
case 55: // Arconym
|
case 55: // Arconym
|
||||||
KeyProcess("m6");
|
KeyProcess("m6");
|
||||||
return;
|
return;
|
||||||
case 136: // FN + F12
|
|
||||||
if (!AppConfig.IsNoAirplaneMode()) Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Airplane, "Airplane");
|
|
||||||
return;
|
|
||||||
case 181: // FN + Numpad Enter
|
case 181: // FN + Numpad Enter
|
||||||
KeyProcess("fne");
|
KeyProcess("fne");
|
||||||
return;
|
return;
|
||||||
case 174: // FN+F5
|
case 174: // FN+F5
|
||||||
|
case 153: // FN+F5 OLD MODELS
|
||||||
|
case 157: // Zenbook DUO FN+F
|
||||||
modeControl.CyclePerformanceMode(Control.ModifierKeys == Keys.Shift);
|
modeControl.CyclePerformanceMode(Control.ModifierKeys == Keys.Shift);
|
||||||
return;
|
return;
|
||||||
case 179: // FN+F4
|
case 179: // FN+F4
|
||||||
@@ -726,12 +770,6 @@ namespace GHelper.Input
|
|||||||
case 158: // Fn + C
|
case 158: // Fn + C
|
||||||
KeyProcess("fnc");
|
KeyProcess("fnc");
|
||||||
return;
|
return;
|
||||||
case 78: // Fn + ESC
|
|
||||||
ToggleFnLock();
|
|
||||||
return;
|
|
||||||
case 75: // Fn + Arrow Lock
|
|
||||||
ToggleArrowLock();
|
|
||||||
return;
|
|
||||||
case 189: // Tablet mode
|
case 189: // Tablet mode
|
||||||
TabletMode();
|
TabletMode();
|
||||||
return;
|
return;
|
||||||
@@ -781,7 +819,7 @@ namespace GHelper.Input
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Brightness_Down, "Brightness");
|
SetBrightness(false, true);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 32: // FN+F8
|
case 32: // FN+F8
|
||||||
@@ -796,7 +834,7 @@ namespace GHelper.Input
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Brightness_Up, "Brightness");
|
SetBrightness(true, true);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 133: // Camera Toggle
|
case 133: // Camera Toggle
|
||||||
@@ -821,6 +859,15 @@ namespace GHelper.Input
|
|||||||
case 126: // Fn+F8 emojis popup
|
case 126: // Fn+F8 emojis popup
|
||||||
KeyboardHook.KeyKeyPress(Keys.LWin, Keys.OemSemicolon);
|
KeyboardHook.KeyKeyPress(Keys.LWin, Keys.OemSemicolon);
|
||||||
return;
|
return;
|
||||||
|
case 78: // Fn + ESC
|
||||||
|
ToggleFnLock();
|
||||||
|
return;
|
||||||
|
case 75: // Fn + Arrow Lock
|
||||||
|
ToggleArrowLock();
|
||||||
|
return;
|
||||||
|
case 136: // FN + F12
|
||||||
|
if (!AppConfig.IsNoAirplaneMode()) Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Airplane, "Airplane");
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -841,10 +888,22 @@ namespace GHelper.Input
|
|||||||
return Math.Max(Math.Min(3, backlight), 0);
|
return Math.Max(Math.Min(3, backlight), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SetBacklightAuto(bool init = false)
|
public static void AutoKeyboard()
|
||||||
{
|
{
|
||||||
if (init) Aura.Init();
|
if (AppConfig.HasTabletMode()) TabletMode();
|
||||||
Aura.ApplyBrightness(GetBacklight(), "Auto", init);
|
if (lidClose || AppConfig.Is("skip_aura")) return;
|
||||||
|
|
||||||
|
Aura.Init();
|
||||||
|
Aura.ApplyPower();
|
||||||
|
Aura.ApplyAura();
|
||||||
|
SetBacklightAuto();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void SetBacklightAuto()
|
||||||
|
{
|
||||||
|
if (lidClose) return;
|
||||||
|
Aura.ApplyBrightness(GetBacklight(), "Auto");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SetBacklight(int delta, bool force = false)
|
public static void SetBacklight(int delta, bool force = false)
|
||||||
@@ -900,38 +959,60 @@ namespace GHelper.Input
|
|||||||
|
|
||||||
public static void ToggleCamera()
|
public static void ToggleCamera()
|
||||||
{
|
{
|
||||||
if (!ProcessHelper.IsUserAdministrator()) return;
|
int cameraShutter = Program.acpi.DeviceGet(AsusACPI.CameraShutter);
|
||||||
|
|
||||||
string CameraRegistryKeyPath = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\webcam";
|
if (cameraShutter == 0)
|
||||||
string CameraRegistryValueName = "Value";
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
var status = (string?)Registry.GetValue(CameraRegistryKeyPath, CameraRegistryValueName, "");
|
Program.acpi.DeviceSet(AsusACPI.CameraShutter, 1, "CameraShutterOn");
|
||||||
|
Program.toast.RunToast($"Camera Off");
|
||||||
|
}
|
||||||
|
else if (cameraShutter == 1)
|
||||||
|
{
|
||||||
|
Program.acpi.DeviceSet(AsusACPI.CameraShutter, 0, "CameraShutterOff");
|
||||||
|
Program.toast.RunToast($"Camera On");
|
||||||
|
}
|
||||||
|
else if (cameraShutter == 262144)
|
||||||
|
{
|
||||||
|
Program.toast.RunToast($"Camera Off");
|
||||||
|
}
|
||||||
|
else if (cameraShutter == 262145)
|
||||||
|
{
|
||||||
|
Program.toast.RunToast($"Camera On");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!ProcessHelper.IsUserAdministrator()) return;
|
||||||
|
|
||||||
if (status == "Allow") status = "Deny";
|
string CameraRegistryKeyPath = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\webcam";
|
||||||
else if (status == "Deny") status = "Allow";
|
string CameraRegistryValueName = "Value";
|
||||||
else
|
|
||||||
|
try
|
||||||
{
|
{
|
||||||
Logger.WriteLine("Unknown camera status");
|
var status = (string?)Registry.GetValue(CameraRegistryKeyPath, CameraRegistryValueName, "");
|
||||||
return;
|
|
||||||
|
if (status == "Allow") status = "Deny";
|
||||||
|
else if (status == "Deny") status = "Allow";
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Logger.WriteLine("Unknown camera status");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Registry.SetValue(CameraRegistryKeyPath, CameraRegistryValueName, status, RegistryValueKind.String);
|
||||||
|
Program.acpi.DeviceSet(AsusACPI.CameraLed, (status == "Deny" ? 1 : 0), "Camera");
|
||||||
|
Program.toast.RunToast($"Camera " + (status == "Deny" ? "Off" : "On"));
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.WriteLine(ex.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
Registry.SetValue(CameraRegistryKeyPath, CameraRegistryValueName, status, RegistryValueKind.String);
|
|
||||||
Program.acpi.DeviceSet(AsusACPI.CameraLed, (status == "Deny" ? 1 : 0), "Camera");
|
|
||||||
Program.toast.RunToast($"Camera " + (status == "Deny" ? "Off" : "On"));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Logger.WriteLine(ex.ToString());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static System.Threading.Timer screenpadActionTimer;
|
private static System.Threading.Timer screenpadActionTimer;
|
||||||
private static int screenpadBrightnessToSet;
|
private static int screenpadBrightnessToSet;
|
||||||
public static void ApplyScreenpadAction(int brightness, bool doToggle = false)
|
public static void ApplyScreenpadAction(int brightness, bool instant = true)
|
||||||
{
|
{
|
||||||
var delay = AppConfig.Get("screenpad_delay", 1500);
|
var delay = AppConfig.Get("screenpad_delay", 1500);
|
||||||
|
|
||||||
@@ -939,11 +1020,12 @@ namespace GHelper.Input
|
|||||||
Action<int> action = (b) =>
|
Action<int> action = (b) =>
|
||||||
{
|
{
|
||||||
if (b >= 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, 1, "ScreenpadOn");
|
if (b >= 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, 1, "ScreenpadOn");
|
||||||
Program.acpi.DeviceSet(AsusACPI.ScreenPadBrightness, Math.Max(b * 255 / 100, 0), "Screenpad");
|
int[] brightnessValues = [0, 4, 9, 14, 21, 32, 48, 73, 111, 169, 255];
|
||||||
|
Program.acpi.DeviceSet(AsusACPI.ScreenPadBrightness, brightnessValues[Math.Min(brightnessValues.Length - 1, Math.Max(0, b / 10))], "Screenpad");
|
||||||
if (b < 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, 0, "ScreenpadOff");
|
if (b < 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, 0, "ScreenpadOff");
|
||||||
};
|
};
|
||||||
|
|
||||||
if(delay <= 0 || (brightness > 0 && brightness < 100 && doToggle == false)) //instant action
|
if (delay <= 0 || instant) //instant action
|
||||||
{
|
{
|
||||||
action(brightness);
|
action(brightness);
|
||||||
}
|
}
|
||||||
@@ -969,25 +1051,46 @@ namespace GHelper.Input
|
|||||||
if (brightness < 0) brightness = 100;
|
if (brightness < 0) brightness = 100;
|
||||||
else if (brightness >= 100) brightness = 0;
|
else if (brightness >= 100) brightness = 0;
|
||||||
else brightness = -10;
|
else brightness = -10;
|
||||||
|
ApplyScreenpadAction(brightness, false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
brightness = Math.Max(Math.Min(100, brightness + delta), -10);
|
brightness = Math.Max(Math.Min(100, brightness + delta), 0);
|
||||||
|
ApplyScreenpadAction(brightness);
|
||||||
}
|
}
|
||||||
|
|
||||||
AppConfig.Set("screenpad", brightness);
|
AppConfig.Set("screenpad", brightness);
|
||||||
|
|
||||||
ApplyScreenpadAction(brightness);
|
|
||||||
|
|
||||||
string toast;
|
string toast;
|
||||||
|
|
||||||
if (brightness < 0) toast = "Off";
|
if (brightness < 0) toast = "Off";
|
||||||
else if (brightness == 0) toast = "Hidden";
|
|
||||||
else toast = brightness.ToString() + "%";
|
else toast = brightness.ToString() + "%";
|
||||||
|
|
||||||
Program.toast.RunToast($"Screen Pad {toast}", delta > 0 ? ToastIcon.BrightnessUp : ToastIcon.BrightnessDown);
|
Program.toast.RunToast($"Screen Pad {toast}", delta > 0 ? ToastIcon.BrightnessUp : ToastIcon.BrightnessDown);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void InitScreenpad()
|
||||||
|
{
|
||||||
|
if (!AppConfig.IsDUO()) return;
|
||||||
|
int brightness = AppConfig.Get("screenpad");
|
||||||
|
if (brightness >= 0) ApplyScreenpadAction(brightness);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void SetStatusLED(bool status)
|
||||||
|
{
|
||||||
|
Program.acpi.DeviceSet(AsusACPI.StatusLed, status ? 7 : 0, "StatusLED");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void InitStatusLed()
|
||||||
|
{
|
||||||
|
if (AppConfig.IsAutoStatusLed()) SetStatusLED(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ShutdownStatusLed()
|
||||||
|
{
|
||||||
|
if (AppConfig.IsAutoStatusLed()) SetStatusLED(false);
|
||||||
|
}
|
||||||
|
|
||||||
static void LaunchProcess(string command = "")
|
static void LaunchProcess(string command = "")
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(command)) return;
|
if (string.IsNullOrEmpty(command)) return;
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ namespace GHelper.Input
|
|||||||
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
|
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
|
||||||
Action<int> _handler;
|
Action<int> _handler;
|
||||||
|
|
||||||
|
static int retry = 0;
|
||||||
|
|
||||||
public KeyboardListener(Action<int> KeyHandler)
|
public KeyboardListener(Action<int> KeyHandler)
|
||||||
{
|
{
|
||||||
_handler = KeyHandler;
|
_handler = KeyHandler;
|
||||||
@@ -54,6 +56,7 @@ namespace GHelper.Input
|
|||||||
input.ReadTimeout = int.MaxValue;
|
input.ReadTimeout = int.MaxValue;
|
||||||
|
|
||||||
var data = input.Read();
|
var data = input.Read();
|
||||||
|
if (cancellationTokenSource.Token.IsCancellationRequested) break;
|
||||||
if (data.Length > 1 && data[0] == AsusHid.INPUT_ID && data[1] > 0 && data[1] != 236)
|
if (data.Length > 1 && data[0] == AsusHid.INPUT_ID && data[1] > 0 && data[1] != 236)
|
||||||
{
|
{
|
||||||
Logger.WriteLine($"Key: {data[1]}");
|
Logger.WriteLine($"Key: {data[1]}");
|
||||||
@@ -67,6 +70,12 @@ namespace GHelper.Input
|
|||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.WriteLine($"Listener exited: {ex.Message}");
|
Logger.WriteLine($"Listener exited: {ex.Message}");
|
||||||
|
if (retry++ < 2)
|
||||||
|
{
|
||||||
|
Thread.Sleep(300);
|
||||||
|
Logger.WriteLine($"Restarting listener {retry}");
|
||||||
|
Listen();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ namespace GHelper
|
|||||||
labelScaling.Text = Properties.Strings.ScalingQuality;
|
labelScaling.Text = Properties.Strings.ScalingQuality;
|
||||||
labelRotation.Text = Properties.Strings.ImageRotation;
|
labelRotation.Text = Properties.Strings.ImageRotation;
|
||||||
labelContrastTitle.Text = Properties.Strings.Contrast;
|
labelContrastTitle.Text = Properties.Strings.Contrast;
|
||||||
|
labelGammaTitle.Text = Properties.Strings.Brightness;
|
||||||
buttonPicture.Text = Properties.Strings.PictureGif;
|
buttonPicture.Text = Properties.Strings.PictureGif;
|
||||||
buttonReset.Text = Properties.Strings.Reset;
|
buttonReset.Text = Properties.Strings.Reset;
|
||||||
|
|
||||||
@@ -80,7 +81,7 @@ namespace GHelper
|
|||||||
{
|
{
|
||||||
AppConfig.Set("matrix_contrast", trackContrast.Value);
|
AppConfig.Set("matrix_contrast", trackContrast.Value);
|
||||||
AppConfig.Set("matrix_gamma", trackGamma.Value);
|
AppConfig.Set("matrix_gamma", trackGamma.Value);
|
||||||
SetMatrixPicture();
|
SetMatrixPicture(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -110,30 +110,24 @@ namespace GHelper.Mode
|
|||||||
|
|
||||||
if (notify) Toast();
|
if (notify) Toast();
|
||||||
|
|
||||||
// Power plan from config or defaulting to balanced
|
if (!AppConfig.Is("skip_powermode"))
|
||||||
if (AppConfig.GetModeString("scheme") is not null)
|
{
|
||||||
PowerNative.SetPowerPlan(AppConfig.GetModeString("scheme"));
|
// Power plan from config or defaulting to balanced
|
||||||
else
|
if (AppConfig.GetModeString("scheme") is not null)
|
||||||
PowerNative.SetBalancedPowerPlan();
|
PowerNative.SetPowerPlan(AppConfig.GetModeString("scheme"));
|
||||||
|
else
|
||||||
|
PowerNative.SetBalancedPowerPlan();
|
||||||
|
|
||||||
// Windows power mode
|
// Windows power mode
|
||||||
if (AppConfig.GetModeString("powermode") is not null)
|
if (AppConfig.GetModeString("powermode") is not null)
|
||||||
PowerNative.SetPowerMode(AppConfig.GetModeString("powermode"));
|
PowerNative.SetPowerMode(AppConfig.GetModeString("powermode"));
|
||||||
else
|
else
|
||||||
PowerNative.SetPowerMode(Modes.GetBase(mode));
|
PowerNative.SetPowerMode(Modes.GetBase(mode));
|
||||||
|
}
|
||||||
|
|
||||||
// CPU Boost setting override
|
// CPU Boost setting override
|
||||||
if (AppConfig.GetMode("auto_boost") != -1)
|
if (AppConfig.GetMode("auto_boost") != -1)
|
||||||
PowerNative.SetCPUBoost(AppConfig.GetMode("auto_boost"));
|
PowerNative.SetCPUBoost(AppConfig.GetMode("auto_boost"));
|
||||||
|
|
||||||
//BatteryControl.SetBatteryChargeLimit();
|
|
||||||
|
|
||||||
/*
|
|
||||||
if (NativeMethods.PowerGetEffectiveOverlayScheme(out Guid activeScheme) == 0)
|
|
||||||
{
|
|
||||||
Debug.WriteLine("Effective :" + activeScheme);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
settings.FansInit();
|
settings.FansInit();
|
||||||
}
|
}
|
||||||
@@ -162,7 +156,8 @@ namespace GHelper.Mode
|
|||||||
modeToggleTimer.Start();
|
modeToggleTimer.Start();
|
||||||
Modes.SetCurrent(Modes.GetNext(back));
|
Modes.SetCurrent(Modes.GetNext(back));
|
||||||
Toast();
|
Toast();
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
SetPerformanceMode(Modes.GetNext(back), true);
|
SetPerformanceMode(Modes.GetNext(back), true);
|
||||||
}
|
}
|
||||||
@@ -270,9 +265,6 @@ namespace GHelper.Mode
|
|||||||
var stapmResult = SendCommand.set_stapm_limit((uint)limit_total * 1000);
|
var stapmResult = SendCommand.set_stapm_limit((uint)limit_total * 1000);
|
||||||
if (init) Logger.WriteLine($"STAPM: {limit_total} {stapmResult}");
|
if (init) Logger.WriteLine($"STAPM: {limit_total} {stapmResult}");
|
||||||
|
|
||||||
var stapmResult2 = SendCommand.set_stapm2_limit((uint)limit_total * 1000);
|
|
||||||
if (init) Logger.WriteLine($"STAPM2: {limit_total} {stapmResult2}");
|
|
||||||
|
|
||||||
var slowResult = SendCommand.set_slow_limit((uint)limit_slow * 1000);
|
var slowResult = SendCommand.set_slow_limit((uint)limit_slow * 1000);
|
||||||
if (init) Logger.WriteLine($"SLOW: {limit_slow} {slowResult}");
|
if (init) Logger.WriteLine($"SLOW: {limit_slow} {slowResult}");
|
||||||
|
|
||||||
@@ -388,7 +380,7 @@ namespace GHelper.Mode
|
|||||||
if (gpu_power >= AsusACPI.MinGPUPower && gpu_power <= AsusACPI.MaxGPUPower && Program.acpi.DeviceGet(AsusACPI.GPU_POWER) >= 0)
|
if (gpu_power >= AsusACPI.MinGPUPower && gpu_power <= AsusACPI.MaxGPUPower && Program.acpi.DeviceGet(AsusACPI.GPU_POWER) >= 0)
|
||||||
Program.acpi.DeviceSet(AsusACPI.GPU_POWER, gpu_power, "PowerLimit TGP (GPU VAR)");
|
Program.acpi.DeviceSet(AsusACPI.GPU_POWER, gpu_power, "PowerLimit TGP (GPU VAR)");
|
||||||
|
|
||||||
if (gpu_boost >= AsusACPI.MinGPUBoost && gpu_boost <= AsusACPI.MaxGPUBoost && Program.acpi.DeviceGet(AsusACPI.PPT_GPUC0) >= 0)
|
if (gpu_boost >= AsusACPI.MinGPUBoost && gpu_boost <= AsusACPI.MaxGPUBoost && Program.acpi.DeviceGet(AsusACPI.PPT_GPUC0) >= 0)
|
||||||
boostResult = Program.acpi.DeviceSet(AsusACPI.PPT_GPUC0, gpu_boost, "PowerLimit C0 (GPU BOOST)");
|
boostResult = Program.acpi.DeviceSet(AsusACPI.PPT_GPUC0, gpu_boost, "PowerLimit C0 (GPU BOOST)");
|
||||||
|
|
||||||
if (gpu_temp >= AsusACPI.MinGPUTemp && gpu_temp <= AsusACPI.MaxGPUTemp && Program.acpi.DeviceGet(AsusACPI.PPT_GPUC2) >= 0)
|
if (gpu_temp >= AsusACPI.MinGPUTemp && gpu_temp <= AsusACPI.MaxGPUTemp && Program.acpi.DeviceGet(AsusACPI.PPT_GPUC2) >= 0)
|
||||||
|
|||||||
@@ -175,6 +175,7 @@ namespace GHelper.Mode
|
|||||||
|
|
||||||
if (activeSchemeGuid.ToString() != balanced && !AppConfig.Is("skip_power_plan"))
|
if (activeSchemeGuid.ToString() != balanced && !AppConfig.Is("skip_power_plan"))
|
||||||
{
|
{
|
||||||
|
Logger.WriteLine($"Changing power plan from {activeSchemeGuid.ToString()} to Balanced");
|
||||||
SetPowerPlan(balanced);
|
SetPowerPlan(balanced);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -481,9 +481,8 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
HidSharp.DeviceList.Local.GetHidDevices(VendorID(), ProductID())
|
return HidSharp.DeviceList.Local.GetHidDevices(VendorID(), ProductID())
|
||||||
.First(x => x.DevicePath.Contains(path));
|
.FirstOrDefault(x => x.DevicePath.Contains(path)) != null;
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -86,7 +86,7 @@
|
|||||||
|
|
||||||
public override int DPIIncrements()
|
public override int DPIIncrements()
|
||||||
{
|
{
|
||||||
return 100;
|
return 50;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ using GHelper.Helpers;
|
|||||||
using GHelper.Input;
|
using GHelper.Input;
|
||||||
using GHelper.Mode;
|
using GHelper.Mode;
|
||||||
using GHelper.Peripherals;
|
using GHelper.Peripherals;
|
||||||
|
using GHelper.USB;
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
using Ryzen;
|
using Ryzen;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
@@ -53,6 +54,13 @@ namespace GHelper
|
|||||||
string action = "";
|
string action = "";
|
||||||
if (args.Length > 0) action = args[0];
|
if (args.Length > 0) action = args[0];
|
||||||
|
|
||||||
|
if (action == "charge")
|
||||||
|
{
|
||||||
|
BatteryLimit();
|
||||||
|
Application.Exit();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
string language = AppConfig.GetString("language");
|
string language = AppConfig.GetString("language");
|
||||||
|
|
||||||
if (language != null && language.Length > 0)
|
if (language != null && language.Length > 0)
|
||||||
@@ -69,6 +77,10 @@ namespace GHelper
|
|||||||
Logger.WriteLine("------------");
|
Logger.WriteLine("------------");
|
||||||
Logger.WriteLine("App launched: " + AppConfig.GetModel() + " :" + Assembly.GetExecutingAssembly().GetName().Version.ToString() + CultureInfo.CurrentUICulture + (ProcessHelper.IsUserAdministrator() ? "." : ""));
|
Logger.WriteLine("App launched: " + AppConfig.GetModel() + " :" + Assembly.GetExecutingAssembly().GetName().Version.ToString() + CultureInfo.CurrentUICulture + (ProcessHelper.IsUserAdministrator() ? "." : ""));
|
||||||
|
|
||||||
|
var startCount = AppConfig.Get("start_count") + 1;
|
||||||
|
AppConfig.Set("start_count", startCount);
|
||||||
|
Logger.WriteLine("Start Count: " + startCount);
|
||||||
|
|
||||||
acpi = new AsusACPI();
|
acpi = new AsusACPI();
|
||||||
|
|
||||||
if (!acpi.IsConnected() && AppConfig.IsASUS())
|
if (!acpi.IsConnected() && AppConfig.IsASUS())
|
||||||
@@ -83,6 +95,8 @@ namespace GHelper
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ProcessHelper.KillByName("ASUSSmartDisplayControl");
|
||||||
|
|
||||||
Application.EnableVisualStyles();
|
Application.EnableVisualStyles();
|
||||||
|
|
||||||
HardwareControl.RecreateGpuControl();
|
HardwareControl.RecreateGpuControl();
|
||||||
@@ -159,6 +173,7 @@ namespace GHelper
|
|||||||
{
|
{
|
||||||
gpuControl.StandardModeFix();
|
gpuControl.StandardModeFix();
|
||||||
BatteryControl.AutoBattery();
|
BatteryControl.AutoBattery();
|
||||||
|
InputDispatcher.ShutdownStatusLed();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
|
private static void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
|
||||||
@@ -199,7 +214,7 @@ namespace GHelper
|
|||||||
if (settingsForm.matrixForm is not null && settingsForm.matrixForm.Text != "")
|
if (settingsForm.matrixForm is not null && settingsForm.matrixForm.Text != "")
|
||||||
settingsForm.matrixForm.InitTheme();
|
settingsForm.matrixForm.InitTheme();
|
||||||
|
|
||||||
if (settingsForm.handheldForm is not null && settingsForm.handheldForm.Text != "")
|
if (settingsForm.handheldForm is not null && settingsForm.handheldForm.Text != "")
|
||||||
settingsForm.handheldForm.InitTheme();
|
settingsForm.handheldForm.InitTheme();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@@ -218,7 +233,10 @@ namespace GHelper
|
|||||||
Logger.WriteLine("AutoSetting for " + isPlugged.ToString());
|
Logger.WriteLine("AutoSetting for " + isPlugged.ToString());
|
||||||
|
|
||||||
BatteryControl.AutoBattery(init);
|
BatteryControl.AutoBattery(init);
|
||||||
if (init) screenControl.InitMiniled();
|
if (init)
|
||||||
|
{
|
||||||
|
InputDispatcher.InitScreenpad();
|
||||||
|
}
|
||||||
|
|
||||||
inputDispatcher.Init();
|
inputDispatcher.Init();
|
||||||
|
|
||||||
@@ -237,10 +255,16 @@ namespace GHelper
|
|||||||
if (AppConfig.IsAlly())
|
if (AppConfig.IsAlly())
|
||||||
{
|
{
|
||||||
allyControl.Init();
|
allyControl.Init();
|
||||||
} else
|
|
||||||
{
|
|
||||||
settingsForm.AutoKeyboard();
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
InputDispatcher.AutoKeyboard();
|
||||||
|
}
|
||||||
|
|
||||||
|
screenControl.InitMiniled();
|
||||||
|
InputDispatcher.InitStatusLed();
|
||||||
|
XGM.InitLight();
|
||||||
|
VisualControl.InitBrightness();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -252,6 +276,7 @@ namespace GHelper
|
|||||||
{
|
{
|
||||||
Logger.WriteLine("Power Mode Changed:" + e.Mode.ToString());
|
Logger.WriteLine("Power Mode Changed:" + e.Mode.ToString());
|
||||||
gpuControl.StandardModeFix();
|
gpuControl.StandardModeFix();
|
||||||
|
InputDispatcher.ShutdownStatusLed();
|
||||||
}
|
}
|
||||||
|
|
||||||
int delay = AppConfig.Get("charger_delay");
|
int delay = AppConfig.Get("charger_delay");
|
||||||
@@ -262,6 +287,7 @@ namespace GHelper
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (SystemInformation.PowerStatus.PowerLineStatus == isPlugged) return;
|
if (SystemInformation.PowerStatus.PowerLineStatus == isPlugged) return;
|
||||||
|
if (AppConfig.Is("disable_power_event")) return;
|
||||||
SetAutoModes(true);
|
SetAutoModes(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -282,19 +308,22 @@ namespace GHelper
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
var screen = Screen.PrimaryScreen;
|
||||||
|
if (screen is null) screen = Screen.FromControl(settingsForm);
|
||||||
|
|
||||||
settingsForm.Left = Screen.FromControl(settingsForm).WorkingArea.Width - 10 - settingsForm.Width;
|
settingsForm.Location = screen.WorkingArea.Location;
|
||||||
settingsForm.Top = Screen.FromControl(settingsForm).WorkingArea.Height - 10 - settingsForm.Height;
|
settingsForm.Left = screen.WorkingArea.Width - 10 - settingsForm.Width;
|
||||||
|
settingsForm.Top = screen.WorkingArea.Height - 10 - settingsForm.Height;
|
||||||
|
|
||||||
settingsForm.Show();
|
settingsForm.Show();
|
||||||
settingsForm.Activate();
|
settingsForm.Activate();
|
||||||
|
|
||||||
settingsForm.Left = Screen.FromControl(settingsForm).WorkingArea.Width - 10 - settingsForm.Width;
|
settingsForm.Left = screen.WorkingArea.Width - 10 - settingsForm.Width;
|
||||||
|
|
||||||
if (AppConfig.IsAlly())
|
if (AppConfig.IsAlly())
|
||||||
settingsForm.Top = Math.Max(10, Screen.FromControl(settingsForm).Bounds.Height - 110 - settingsForm.Height);
|
settingsForm.Top = Math.Max(10, screen.Bounds.Height - 110 - settingsForm.Height);
|
||||||
else
|
else
|
||||||
settingsForm.Top = Screen.FromControl(settingsForm).WorkingArea.Height - 10 - settingsForm.Height;
|
settingsForm.Top = screen.WorkingArea.Height - 10 - settingsForm.Height;
|
||||||
|
|
||||||
settingsForm.VisualiseGPUMode();
|
settingsForm.VisualiseGPUMode();
|
||||||
}
|
}
|
||||||
@@ -319,6 +348,23 @@ namespace GHelper
|
|||||||
Application.Exit();
|
Application.Exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void BatteryLimit()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int limit = AppConfig.Get("charge_limit");
|
||||||
|
if (limit > 0 && limit < 100)
|
||||||
|
{
|
||||||
|
Logger.WriteLine($"------- Startup Battery Limit {limit} -------");
|
||||||
|
acpi = new AsusACPI();
|
||||||
|
acpi.DeviceSet(AsusACPI.BatteryLimit, limit, "Limit");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.WriteLine("Startup Battery Limit Error: " + ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
49
app/Properties/Strings.Designer.cs
generated
49
app/Properties/Strings.Designer.cs
generated
@@ -771,6 +771,15 @@ namespace GHelper.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Donate.
|
||||||
|
/// </summary>
|
||||||
|
internal static string Donate {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Donate", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Download Color Profiles.
|
/// Looks up a localized string similar to Download Color Profiles.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -1196,6 +1205,42 @@ namespace GHelper.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Legend.
|
||||||
|
/// </summary>
|
||||||
|
internal static string Legend {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Legend", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Can't check local version.
|
||||||
|
/// </summary>
|
||||||
|
internal static string LegendGray {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("LegendGray", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Updated.
|
||||||
|
/// </summary>
|
||||||
|
internal static string LegendGreen {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("LegendGreen", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Update Available.
|
||||||
|
/// </summary>
|
||||||
|
internal static string LegendRed {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("LegendRed", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Lid.
|
/// Looks up a localized string similar to Lid.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -1575,7 +1620,7 @@ namespace GHelper.Properties {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Switch to Eco on battery and to Standard when plugged.
|
/// Looks up a localized string similar to Switch to Eco on battery and to Standard when plugged in.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string OptimizedGPUTooltip {
|
internal static string OptimizedGPUTooltip {
|
||||||
get {
|
get {
|
||||||
@@ -1935,7 +1980,7 @@ namespace GHelper.Properties {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to .
|
/// Looks up a localized string similar to Touchscreen.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string Touchscreen {
|
internal static string Touchscreen {
|
||||||
get {
|
get {
|
||||||
|
|||||||
@@ -744,7 +744,7 @@ Vil du stadig fortsætte?</value>
|
|||||||
<value>Toggle Touchscreen</value>
|
<value>Toggle Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Touchscreen" xml:space="preserve">
|
<data name="Touchscreen" xml:space="preserve">
|
||||||
<value/>
|
<value>Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>Turbo</value>
|
<value>Turbo</value>
|
||||||
@@ -800,4 +800,22 @@ Vil du stadig fortsætte?</value>
|
|||||||
<data name="Zoom" xml:space="preserve">
|
<data name="Zoom" xml:space="preserve">
|
||||||
<value>Zoom</value>
|
<value>Zoom</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
<data name="Donate" xml:space="preserve">
|
||||||
|
<value>Donate</value>
|
||||||
|
</data>
|
||||||
|
<data name="Legend" xml:space="preserve">
|
||||||
|
<value>Legend</value>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGray" xml:space="preserve">
|
||||||
|
<value>Can't check local version</value>
|
||||||
|
<comment>Can't check local version</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendRed" xml:space="preserve">
|
||||||
|
<value>Update Available</value>
|
||||||
|
<comment>Update Available</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGreen" xml:space="preserve">
|
||||||
|
<value>Updated</value>
|
||||||
|
<comment>Updated</comment>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -151,7 +151,7 @@
|
|||||||
<value>Animationsgeschwindigkeit</value>
|
<value>Animationsgeschwindigkeit</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AnimeMatrix" xml:space="preserve">
|
<data name="AnimeMatrix" xml:space="preserve">
|
||||||
<value>AniMeMatrix</value>
|
<value>AniMe Matrix</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AppAlreadyRunning" xml:space="preserve">
|
<data name="AppAlreadyRunning" xml:space="preserve">
|
||||||
<value>Die Anwendung läuft bereits</value>
|
<value>Die Anwendung läuft bereits</value>
|
||||||
@@ -744,7 +744,7 @@ Trotzdem fortfahren?</value>
|
|||||||
<value>Touchscreen umschalten</value>
|
<value>Touchscreen umschalten</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Touchscreen" xml:space="preserve">
|
<data name="Touchscreen" xml:space="preserve">
|
||||||
<value/>
|
<value>Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>Turbo</value>
|
<value>Turbo</value>
|
||||||
@@ -783,7 +783,7 @@ Trotzdem fortfahren?</value>
|
|||||||
<value>Darstellungsmodi sind nicht verfügbar, wenn HDR aktiv ist.</value>
|
<value>Darstellungsmodi sind nicht verfügbar, wenn HDR aktiv ist.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VisualModesScreen" xml:space="preserve">
|
<data name="VisualModesScreen" xml:space="preserve">
|
||||||
<value>Darstellungsmodi sind nicht verfügbar, wenn Laptop-Bildschirm aus ist.</value>
|
<value>Modi nicht verfügbar, wenn Laptop-Bildschirm aus ist.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VolumeDown" xml:space="preserve">
|
<data name="VolumeDown" xml:space="preserve">
|
||||||
<value>Lautstärke verringern</value>
|
<value>Lautstärke verringern</value>
|
||||||
@@ -800,4 +800,22 @@ Trotzdem fortfahren?</value>
|
|||||||
<data name="Zoom" xml:space="preserve">
|
<data name="Zoom" xml:space="preserve">
|
||||||
<value>Zoom</value>
|
<value>Zoom</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
<data name="Donate" xml:space="preserve">
|
||||||
|
<value>Spenden</value>
|
||||||
|
</data>
|
||||||
|
<data name="Legend" xml:space="preserve">
|
||||||
|
<value>Legende</value>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGray" xml:space="preserve">
|
||||||
|
<value>Kann lokale Version nicht überprüfen</value>
|
||||||
|
<comment>Can't check local version</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendRed" xml:space="preserve">
|
||||||
|
<value>Update verfügbar</value>
|
||||||
|
<comment>Update Available</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGreen" xml:space="preserve">
|
||||||
|
<value>Aktuell</value>
|
||||||
|
<comment>Updated</comment>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -744,7 +744,7 @@
|
|||||||
<value>Alternar pantalla táctil</value>
|
<value>Alternar pantalla táctil</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Touchscreen" xml:space="preserve">
|
<data name="Touchscreen" xml:space="preserve">
|
||||||
<value/>
|
<value>Pantalla táctil</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>Turbo</value>
|
<value>Turbo</value>
|
||||||
@@ -800,4 +800,22 @@
|
|||||||
<data name="Zoom" xml:space="preserve">
|
<data name="Zoom" xml:space="preserve">
|
||||||
<value>Zoom</value>
|
<value>Zoom</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
<data name="Donate" xml:space="preserve">
|
||||||
|
<value>Donar</value>
|
||||||
|
</data>
|
||||||
|
<data name="Legend" xml:space="preserve">
|
||||||
|
<value>Leyenda</value>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGray" xml:space="preserve">
|
||||||
|
<value>No se puede comprobar la versión local</value>
|
||||||
|
<comment>Can't check local version</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendRed" xml:space="preserve">
|
||||||
|
<value>Actualización disponible</value>
|
||||||
|
<comment>Update Available</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGreen" xml:space="preserve">
|
||||||
|
<value>Actualizado</value>
|
||||||
|
<comment>Updated</comment>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -226,7 +226,7 @@
|
|||||||
<value>Tout</value>
|
<value>Tout</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneDock" xml:space="preserve">
|
<data name="AuraZoneDock" xml:space="preserve">
|
||||||
<value>Dock</value>
|
<value>Station d'accueil</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneLogo" xml:space="preserve">
|
<data name="AuraZoneLogo" xml:space="preserve">
|
||||||
<value>Logo</value>
|
<value>Logo</value>
|
||||||
@@ -495,7 +495,7 @@ Voulez-vous continuer ?</value>
|
|||||||
<value>Écran</value>
|
<value>Écran</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LEDStatusIndicators" xml:space="preserve">
|
<data name="LEDStatusIndicators" xml:space="preserve">
|
||||||
<value>LED Status Indicators</value>
|
<value>Indicateurs d'état LED</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Lid" xml:space="preserve">
|
<data name="Lid" xml:space="preserve">
|
||||||
<value>Capot</value>
|
<value>Capot</value>
|
||||||
@@ -507,7 +507,7 @@ Voulez-vous continuer ?</value>
|
|||||||
<value>Éclairage</value>
|
<value>Éclairage</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LockScreen" xml:space="preserve">
|
<data name="LockScreen" xml:space="preserve">
|
||||||
<value>Lock Screen</value>
|
<value>Écran de verrouillage</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Logo" xml:space="preserve">
|
<data name="Logo" xml:space="preserve">
|
||||||
<value>Logo</value>
|
<value>Logo</value>
|
||||||
@@ -585,10 +585,10 @@ Voulez-vous continuer ?</value>
|
|||||||
<value>Synchroniser avec le pointeur</value>
|
<value>Synchroniser avec le pointeur</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Multizone" xml:space="preserve">
|
<data name="Multizone" xml:space="preserve">
|
||||||
<value>Multi Zone</value>
|
<value>Multi-zones</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MultizoneStrong" xml:space="preserve">
|
<data name="MultizoneStrong" xml:space="preserve">
|
||||||
<value>Multi Zone Strong</value>
|
<value>Forte zone multiple</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Muted" xml:space="preserve">
|
<data name="Muted" xml:space="preserve">
|
||||||
<value>Son désactivé</value>
|
<value>Son désactivé</value>
|
||||||
@@ -741,10 +741,10 @@ Voulez-vous continuer ?</value>
|
|||||||
<value>Allumer l'écran</value>
|
<value>Allumer l'écran</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ToggleTouchscreen" xml:space="preserve">
|
<data name="ToggleTouchscreen" xml:space="preserve">
|
||||||
<value>Toggle Touchscreen</value>
|
<value>Activer/désactiver l'écran tactile</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Touchscreen" xml:space="preserve">
|
<data name="Touchscreen" xml:space="preserve">
|
||||||
<value/>
|
<value>Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>Turbo</value>
|
<value>Turbo</value>
|
||||||
@@ -800,4 +800,22 @@ Voulez-vous continuer ?</value>
|
|||||||
<data name="Zoom" xml:space="preserve">
|
<data name="Zoom" xml:space="preserve">
|
||||||
<value>Zoom</value>
|
<value>Zoom</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
<data name="Donate" xml:space="preserve">
|
||||||
|
<value>Donate</value>
|
||||||
|
</data>
|
||||||
|
<data name="Legend" xml:space="preserve">
|
||||||
|
<value>Legend</value>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGray" xml:space="preserve">
|
||||||
|
<value>Can't check local version</value>
|
||||||
|
<comment>Can't check local version</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendRed" xml:space="preserve">
|
||||||
|
<value>Update Available</value>
|
||||||
|
<comment>Update Available</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGreen" xml:space="preserve">
|
||||||
|
<value>Updated</value>
|
||||||
|
<comment>Updated</comment>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -744,7 +744,7 @@ Do you still want to continue?</value>
|
|||||||
<value>Érintőképernyő ki-/bekapcsolása</value>
|
<value>Érintőképernyő ki-/bekapcsolása</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Touchscreen" xml:space="preserve">
|
<data name="Touchscreen" xml:space="preserve">
|
||||||
<value/>
|
<value>Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>Turbó</value>
|
<value>Turbó</value>
|
||||||
@@ -800,4 +800,22 @@ Do you still want to continue?</value>
|
|||||||
<data name="Zoom" xml:space="preserve">
|
<data name="Zoom" xml:space="preserve">
|
||||||
<value>Zoom</value>
|
<value>Zoom</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
<data name="Donate" xml:space="preserve">
|
||||||
|
<value>Donate</value>
|
||||||
|
</data>
|
||||||
|
<data name="Legend" xml:space="preserve">
|
||||||
|
<value>Legend</value>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGray" xml:space="preserve">
|
||||||
|
<value>Can't check local version</value>
|
||||||
|
<comment>Can't check local version</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendRed" xml:space="preserve">
|
||||||
|
<value>Update Available</value>
|
||||||
|
<comment>Update Available</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGreen" xml:space="preserve">
|
||||||
|
<value>Updated</value>
|
||||||
|
<comment>Updated</comment>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -744,7 +744,7 @@ Apakah Anda masih ingin melanjutkan?</value>
|
|||||||
<value>Toggle Touchscreen</value>
|
<value>Toggle Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Touchscreen" xml:space="preserve">
|
<data name="Touchscreen" xml:space="preserve">
|
||||||
<value/>
|
<value>Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>Turbo</value>
|
<value>Turbo</value>
|
||||||
@@ -800,4 +800,22 @@ Apakah Anda masih ingin melanjutkan?</value>
|
|||||||
<data name="Zoom" xml:space="preserve">
|
<data name="Zoom" xml:space="preserve">
|
||||||
<value>Perbesar</value>
|
<value>Perbesar</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
<data name="Donate" xml:space="preserve">
|
||||||
|
<value>Donate</value>
|
||||||
|
</data>
|
||||||
|
<data name="Legend" xml:space="preserve">
|
||||||
|
<value>Legend</value>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGray" xml:space="preserve">
|
||||||
|
<value>Can't check local version</value>
|
||||||
|
<comment>Can't check local version</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendRed" xml:space="preserve">
|
||||||
|
<value>Update Available</value>
|
||||||
|
<comment>Update Available</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGreen" xml:space="preserve">
|
||||||
|
<value>Updated</value>
|
||||||
|
<comment>Updated</comment>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -744,7 +744,7 @@ Sei sicuro di voler continuare?</value>
|
|||||||
<value>Toggle Touchscreen</value>
|
<value>Toggle Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Touchscreen" xml:space="preserve">
|
<data name="Touchscreen" xml:space="preserve">
|
||||||
<value/>
|
<value>Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>Turbo</value>
|
<value>Turbo</value>
|
||||||
@@ -800,4 +800,22 @@ Sei sicuro di voler continuare?</value>
|
|||||||
<data name="Zoom" xml:space="preserve">
|
<data name="Zoom" xml:space="preserve">
|
||||||
<value>Zoom</value>
|
<value>Zoom</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
<data name="Donate" xml:space="preserve">
|
||||||
|
<value>Donate</value>
|
||||||
|
</data>
|
||||||
|
<data name="Legend" xml:space="preserve">
|
||||||
|
<value>Legend</value>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGray" xml:space="preserve">
|
||||||
|
<value>Can't check local version</value>
|
||||||
|
<comment>Can't check local version</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendRed" xml:space="preserve">
|
||||||
|
<value>Update Available</value>
|
||||||
|
<comment>Update Available</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGreen" xml:space="preserve">
|
||||||
|
<value>Updated</value>
|
||||||
|
<comment>Updated</comment>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -744,7 +744,7 @@ Do you still want to continue?</value>
|
|||||||
<value>Toggle Touchscreen</value>
|
<value>Toggle Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Touchscreen" xml:space="preserve">
|
<data name="Touchscreen" xml:space="preserve">
|
||||||
<value/>
|
<value>Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>Turbo</value>
|
<value>Turbo</value>
|
||||||
@@ -800,4 +800,22 @@ Do you still want to continue?</value>
|
|||||||
<data name="Zoom" xml:space="preserve">
|
<data name="Zoom" xml:space="preserve">
|
||||||
<value>Zoom</value>
|
<value>Zoom</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
<data name="Donate" xml:space="preserve">
|
||||||
|
<value>Donate</value>
|
||||||
|
</data>
|
||||||
|
<data name="Legend" xml:space="preserve">
|
||||||
|
<value>Legend</value>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGray" xml:space="preserve">
|
||||||
|
<value>Can't check local version</value>
|
||||||
|
<comment>Can't check local version</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendRed" xml:space="preserve">
|
||||||
|
<value>Update Available</value>
|
||||||
|
<comment>Update Available</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGreen" xml:space="preserve">
|
||||||
|
<value>Updated</value>
|
||||||
|
<comment>Updated</comment>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -744,7 +744,7 @@
|
|||||||
<value>Toggle Touchscreen</value>
|
<value>Toggle Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Touchscreen" xml:space="preserve">
|
<data name="Touchscreen" xml:space="preserve">
|
||||||
<value/>
|
<value>Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>터보</value>
|
<value>터보</value>
|
||||||
@@ -800,4 +800,22 @@
|
|||||||
<data name="Zoom" xml:space="preserve">
|
<data name="Zoom" xml:space="preserve">
|
||||||
<value>확대/축소</value>
|
<value>확대/축소</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
<data name="Donate" xml:space="preserve">
|
||||||
|
<value>Donate</value>
|
||||||
|
</data>
|
||||||
|
<data name="Legend" xml:space="preserve">
|
||||||
|
<value>Legend</value>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGray" xml:space="preserve">
|
||||||
|
<value>Can't check local version</value>
|
||||||
|
<comment>Can't check local version</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendRed" xml:space="preserve">
|
||||||
|
<value>Update Available</value>
|
||||||
|
<comment>Update Available</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGreen" xml:space="preserve">
|
||||||
|
<value>Updated</value>
|
||||||
|
<comment>Updated</comment>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -163,7 +163,7 @@
|
|||||||
<value>Taikyti</value>
|
<value>Taikyti</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ApplyFanCurve" xml:space="preserve">
|
<data name="ApplyFanCurve" xml:space="preserve">
|
||||||
<value>Taikyti tinkintą aušintuvo kreivę</value>
|
<value>Taikyti tinkintą kreivę</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ApplyPowerLimits" xml:space="preserve">
|
<data name="ApplyPowerLimits" xml:space="preserve">
|
||||||
<value>Taikyti galios ribas</value>
|
<value>Taikyti galios ribas</value>
|
||||||
@@ -244,19 +244,19 @@
|
|||||||
<value>Automatinis</value>
|
<value>Automatinis</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutoRefreshTooltip" xml:space="preserve">
|
<data name="AutoRefreshTooltip" xml:space="preserve">
|
||||||
<value>Nustato 60Hz, kad taupytų energiją, ir atgal, kai įjungtas į lizdą</value>
|
<value>Nustatomas 60Hz dažn. taupymui, ir atgal, kuomet įkraunama</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Awake" xml:space="preserve">
|
<data name="Awake" xml:space="preserve">
|
||||||
<value>Pabudęs</value>
|
<value>Pabudęs</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BacklightLow" xml:space="preserve">
|
<data name="BacklightLow" xml:space="preserve">
|
||||||
<value>Low</value>
|
<value>Žem.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BacklightMax" xml:space="preserve">
|
<data name="BacklightMax" xml:space="preserve">
|
||||||
<value>Max</value>
|
<value>Maks.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BacklightMid" xml:space="preserve">
|
<data name="BacklightMid" xml:space="preserve">
|
||||||
<value>Mid</value>
|
<value>Vid.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BacklightOff" xml:space="preserve">
|
<data name="BacklightOff" xml:space="preserve">
|
||||||
<value>Išjungta</value>
|
<value>Išjungta</value>
|
||||||
@@ -265,10 +265,10 @@
|
|||||||
<value>Laiko riba su lizdu / akumuliatoriumi (0 – ĮJUNGTA)</value>
|
<value>Laiko riba su lizdu / akumuliatoriumi (0 – ĮJUNGTA)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BacklightTimeoutBattery" xml:space="preserve">
|
<data name="BacklightTimeoutBattery" xml:space="preserve">
|
||||||
<value>Backlight Timeout when on battery</value>
|
<value>Foninio apšvietimo laikas akumuliatoriaus režimu</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BacklightTimeoutPlugged" xml:space="preserve">
|
<data name="BacklightTimeoutPlugged" xml:space="preserve">
|
||||||
<value>Backlight Timeout when plugged</value>
|
<value>Foninio apšvietimo laikas įkraunant</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Balanced" xml:space="preserve">
|
<data name="Balanced" xml:space="preserve">
|
||||||
<value>Balansuotas</value>
|
<value>Balansuotas</value>
|
||||||
@@ -280,7 +280,7 @@
|
|||||||
<value>Įkrovos riba</value>
|
<value>Įkrovos riba</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BatteryHealth" xml:space="preserve">
|
<data name="BatteryHealth" xml:space="preserve">
|
||||||
<value>Sveikata</value>
|
<value>Baterijos būklė</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BatteryLimitFull" xml:space="preserve">
|
<data name="BatteryLimitFull" xml:space="preserve">
|
||||||
<value>Vienkartinė įkrova iki 100%</value>
|
<value>Vienkartinė įkrova iki 100%</value>
|
||||||
@@ -313,7 +313,7 @@
|
|||||||
<value>Ryškumo didinimas</value>
|
<value>Ryškumo didinimas</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BWTrayIcon" xml:space="preserve">
|
<data name="BWTrayIcon" xml:space="preserve">
|
||||||
<value>Black and white tray icon</value>
|
<value>Naudoti juodai baltą piktogramą</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Calibrate" xml:space="preserve">
|
<data name="Calibrate" xml:space="preserve">
|
||||||
<value>Kalibruoti</value>
|
<value>Kalibruoti</value>
|
||||||
@@ -346,7 +346,7 @@
|
|||||||
<value>Išjungti valdiklį</value>
|
<value>Išjungti valdiklį</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DisableOnLidClose" xml:space="preserve">
|
<data name="DisableOnLidClose" xml:space="preserve">
|
||||||
<value>Disable on lid close</value>
|
<value>Išjungti uždarius gaubtą</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DisableOverdrive" xml:space="preserve">
|
<data name="DisableOverdrive" xml:space="preserve">
|
||||||
<value>Išjungti ekrano pikselių spartinimą</value>
|
<value>Išjungti ekrano pikselių spartinimą</value>
|
||||||
@@ -364,7 +364,7 @@
|
|||||||
<value>Tvarkyklės ir programinė įranga</value>
|
<value>Tvarkyklės ir programinė įranga</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EcoGPUTooltip" xml:space="preserve">
|
<data name="EcoGPUTooltip" xml:space="preserve">
|
||||||
<value>Išjungia dGPU, kad taupytų energiją</value>
|
<value>Išjungia dGPU akumuliatoriaus taupymui</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EcoMode" xml:space="preserve">
|
<data name="EcoMode" xml:space="preserve">
|
||||||
<value>Ekonomiškas</value>
|
<value>Ekonomiškas</value>
|
||||||
@@ -465,7 +465,7 @@ Vis tiek norite tęsti?</value>
|
|||||||
<value>Temperatūros tikslas</value>
|
<value>Temperatūros tikslas</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="HibernateAfter" xml:space="preserve">
|
<data name="HibernateAfter" xml:space="preserve">
|
||||||
<value>Minutės iki miego su akumuliatoriumi (0 – IŠJUNGTA)</value>
|
<value>Užmigimo laikas akumuliatoriaus režimu (0 – IŠJUNGTA)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="High" xml:space="preserve">
|
<data name="High" xml:space="preserve">
|
||||||
<value>Aukštas</value>
|
<value>Aukštas</value>
|
||||||
@@ -483,7 +483,7 @@ Vis tiek norite tęsti?</value>
|
|||||||
<value>Klaviatūra</value>
|
<value>Klaviatūra</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="KillGpuApps" xml:space="preserve">
|
<data name="KillGpuApps" xml:space="preserve">
|
||||||
<value>Sustabdyti visas GPU naudojančias programėles, kai perjungiama į ekonomišką režimą</value>
|
<value>Sustabdyti visas GPU naudojančias programėles, kai perjungiama į ekon. režimą</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LaptopBacklight" xml:space="preserve">
|
<data name="LaptopBacklight" xml:space="preserve">
|
||||||
<value>Apšvietimas</value>
|
<value>Apšvietimas</value>
|
||||||
@@ -519,7 +519,7 @@ Vis tiek norite tęsti?</value>
|
|||||||
<value>Kairiojo jungiklio nejautrumo zonos</value>
|
<value>Kairiojo jungiklio nejautrumo zonos</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LTDeadzones" xml:space="preserve">
|
<data name="LTDeadzones" xml:space="preserve">
|
||||||
<value>Left Trigger Deadzones</value>
|
<value>Kairiojo jungiklio nejautrumo zonos</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MatrixAudio" xml:space="preserve">
|
<data name="MatrixAudio" xml:space="preserve">
|
||||||
<value>Garso vizualizatorius</value>
|
<value>Garso vizualizatorius</value>
|
||||||
@@ -549,10 +549,10 @@ Vis tiek norite tęsti?</value>
|
|||||||
<value>Paveikslėlis</value>
|
<value>Paveikslėlis</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MaxRefreshTooltip" xml:space="preserve">
|
<data name="MaxRefreshTooltip" xml:space="preserve">
|
||||||
<value>Maksimalus kadrų dažnis už mažesnę delsą</value>
|
<value>Maksimalus kadrų dažnis mažesnei delsai</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MinRefreshTooltip" xml:space="preserve">
|
<data name="MinRefreshTooltip" xml:space="preserve">
|
||||||
<value>60Hz kadrų dažnis, kad taupytumėte energiją</value>
|
<value>60Hz kadrų dažnis energijos taupymui</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Minute" xml:space="preserve">
|
<data name="Minute" xml:space="preserve">
|
||||||
<value>min.</value>
|
<value>min.</value>
|
||||||
@@ -561,7 +561,7 @@ Vis tiek norite tęsti?</value>
|
|||||||
<value>min.</value>
|
<value>min.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MouseAngleSnapping" xml:space="preserve">
|
<data name="MouseAngleSnapping" xml:space="preserve">
|
||||||
<value>Angle Snapping</value>
|
<value>Kampinis fiksavimas</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||||
<value>Automatiškai išjungti po</value>
|
<value>Automatiškai išjungti po</value>
|
||||||
@@ -570,7 +570,7 @@ Vis tiek norite tęsti?</value>
|
|||||||
<value>Klavišo atsakas</value>
|
<value>Klavišo atsakas</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MouseImportFailed" xml:space="preserve">
|
<data name="MouseImportFailed" xml:space="preserve">
|
||||||
<value>Import failed. Selected file is not a valid mouse profile or corrutpted.</value>
|
<value>Importuoti nepavyko. Pasirinktas failas nėra galiojantis pelės profilis arba yra sugadintas.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||||
<value>Pakilimo atstumas</value>
|
<value>Pakilimo atstumas</value>
|
||||||
@@ -585,13 +585,13 @@ Vis tiek norite tęsti?</value>
|
|||||||
<value>Sinchronizuoti su pele</value>
|
<value>Sinchronizuoti su pele</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Multizone" xml:space="preserve">
|
<data name="Multizone" xml:space="preserve">
|
||||||
<value>Multi Zone</value>
|
<value>Kelios zonos</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MultizoneStrong" xml:space="preserve">
|
<data name="MultizoneStrong" xml:space="preserve">
|
||||||
<value>Multi Zone Strong</value>
|
<value>Kelių zonų stiprumas</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Muted" xml:space="preserve">
|
<data name="Muted" xml:space="preserve">
|
||||||
<value>Muted</value>
|
<value>Išjungta</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MuteMic" xml:space="preserve">
|
<data name="MuteMic" xml:space="preserve">
|
||||||
<value>Mikrofono nutildymas</value>
|
<value>Mikrofono nutildymas</value>
|
||||||
@@ -609,13 +609,13 @@ Vis tiek norite tęsti?</value>
|
|||||||
<value>Neprijungta</value>
|
<value>Neprijungta</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Off" xml:space="preserve">
|
<data name="Off" xml:space="preserve">
|
||||||
<value>Off</value>
|
<value>Išjungta</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="On" xml:space="preserve">
|
<data name="On" xml:space="preserve">
|
||||||
<value>On</value>
|
<value>Įjungta</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OneZone" xml:space="preserve">
|
<data name="OneZone" xml:space="preserve">
|
||||||
<value>One Zone</value>
|
<value>Viena zona</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OpenGHelper" xml:space="preserve">
|
<data name="OpenGHelper" xml:space="preserve">
|
||||||
<value>Atidaryti G-Helper langą</value>
|
<value>Atidaryti G-Helper langą</value>
|
||||||
@@ -624,10 +624,10 @@ Vis tiek norite tęsti?</value>
|
|||||||
<value>Optimizuotas</value>
|
<value>Optimizuotas</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OptimizedGPUTooltip" xml:space="preserve">
|
<data name="OptimizedGPUTooltip" xml:space="preserve">
|
||||||
<value>Perjungti į ekonomišką, kai naudojamas akumuliatorius, ir į standartinį, kai įjungtas į lizdą</value>
|
<value>Naudojant akumuliatorių įjungiamas ekon. režimas, įkraunant - stand. režimas</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OptimizedUSBC" xml:space="preserve">
|
<data name="OptimizedUSBC" xml:space="preserve">
|
||||||
<value>Neįjungti GPU, kai naudojamas USB-C įkroviklis optimizuotame režime</value>
|
<value>Išjungti GPU optimizuotame režime, kai naudojamas USB-C įkroviklis</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Other" xml:space="preserve">
|
<data name="Other" xml:space="preserve">
|
||||||
<value>Kita</value>
|
<value>Kita</value>
|
||||||
@@ -675,16 +675,16 @@ Vis tiek norite tęsti?</value>
|
|||||||
<value>RPM</value>
|
<value>RPM</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RSDeadzones" xml:space="preserve">
|
<data name="RSDeadzones" xml:space="preserve">
|
||||||
<value>Right Stick Deadzones</value>
|
<value>Dešiniojo jungiklio nejautrumo zonos</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RTDeadzones" xml:space="preserve">
|
<data name="RTDeadzones" xml:space="preserve">
|
||||||
<value>Right Trigger Deadzones</value>
|
<value>Dešiniojo jungiklio nejautrumo zonos</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RunOnStartup" xml:space="preserve">
|
<data name="RunOnStartup" xml:space="preserve">
|
||||||
<value>Paleisti įjungus sistemą</value>
|
<value>Paleisti įjungus sistemą</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ScalingQuality" xml:space="preserve">
|
<data name="ScalingQuality" xml:space="preserve">
|
||||||
<value>Scaling Quality</value>
|
<value>Mastelio kokybė</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ScreenPadDown" xml:space="preserve">
|
<data name="ScreenPadDown" xml:space="preserve">
|
||||||
<value>Ekrano skydelio ryškumo mažinimas</value>
|
<value>Ekrano skydelio ryškumo mažinimas</value>
|
||||||
@@ -741,10 +741,10 @@ Vis tiek norite tęsti?</value>
|
|||||||
<value>Perjungti ekraną</value>
|
<value>Perjungti ekraną</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ToggleTouchscreen" xml:space="preserve">
|
<data name="ToggleTouchscreen" xml:space="preserve">
|
||||||
<value>Toggle Touchscreen</value>
|
<value>Valdyti jutiklinį ekraną</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Touchscreen" xml:space="preserve">
|
<data name="Touchscreen" xml:space="preserve">
|
||||||
<value/>
|
<value>Jutiklinis ekranas</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>Turbo</value>
|
<value>Turbo</value>
|
||||||
@@ -756,7 +756,7 @@ Vis tiek norite tęsti?</value>
|
|||||||
<value>Išjungti naudojant akumuliatorių</value>
|
<value>Išjungti naudojant akumuliatorių</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UltimateGPUTooltip" xml:space="preserve">
|
<data name="UltimateGPUTooltip" xml:space="preserve">
|
||||||
<value>Nukreipia ekraną į dGPU, kad maksimizuotų kadrų dažnį</value>
|
<value>Maksimaliai padidinamas kadrų kiekis, nukreipiant ekraną į dGPU</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UltimateMode" xml:space="preserve">
|
<data name="UltimateMode" xml:space="preserve">
|
||||||
<value>Maksimalus</value>
|
<value>Maksimalus</value>
|
||||||
@@ -765,7 +765,7 @@ Vis tiek norite tęsti?</value>
|
|||||||
<value>Įtampos mažinimas yra eksperimentinė ir pavojinga funkcija. Jei pritaikytos reikšmės yra per mažos jūsų aparatinei įrangai, ji gali tapti nestabili, išsijungti arba pažeisti duomenų vientisumą. Jei norite pabandyti, iš pirmo pradėkite nuo mažų reikšmių, spustelėkite „Taikyti“ ir išbandykite, kas jums tinka.</value>
|
<value>Įtampos mažinimas yra eksperimentinė ir pavojinga funkcija. Jei pritaikytos reikšmės yra per mažos jūsų aparatinei įrangai, ji gali tapti nestabili, išsijungti arba pažeisti duomenų vientisumą. Jei norite pabandyti, iš pirmo pradėkite nuo mažų reikšmių, spustelėkite „Taikyti“ ir išbandykite, kas jums tinka.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Unmuted" xml:space="preserve">
|
<data name="Unmuted" xml:space="preserve">
|
||||||
<value>Unmuted</value>
|
<value>Įjungta</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Updates" xml:space="preserve">
|
<data name="Updates" xml:space="preserve">
|
||||||
<value>Naujinimai</value>
|
<value>Naujinimai</value>
|
||||||
@@ -798,6 +798,24 @@ Vis tiek norite tęsti?</value>
|
|||||||
<value>Visada rodyti programėlės langą viršuje</value>
|
<value>Visada rodyti programėlės langą viršuje</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Zoom" xml:space="preserve">
|
<data name="Zoom" xml:space="preserve">
|
||||||
<value>Zoom</value>
|
<value>Mastelis</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
<data name="Donate" xml:space="preserve">
|
||||||
|
<value>Paremti</value>
|
||||||
|
</data>
|
||||||
|
<data name="Legend" xml:space="preserve">
|
||||||
|
<value>Legenda</value>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGray" xml:space="preserve">
|
||||||
|
<value>Nepavyko patikrinti vietinės versijos</value>
|
||||||
|
<comment>Can't check local version</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendRed" xml:space="preserve">
|
||||||
|
<value>Išleista nauja versija</value>
|
||||||
|
<comment>Update Available</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGreen" xml:space="preserve">
|
||||||
|
<value>Atnaujinta</value>
|
||||||
|
<comment>Updated</comment>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -744,7 +744,7 @@ Nadal chcesz kontynuować?</value>
|
|||||||
<value>Włącz/wyłącz ekran dotykowy</value>
|
<value>Włącz/wyłącz ekran dotykowy</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Touchscreen" xml:space="preserve">
|
<data name="Touchscreen" xml:space="preserve">
|
||||||
<value/>
|
<value>Ekran dotykowy</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>Turbo</value>
|
<value>Turbo</value>
|
||||||
@@ -800,4 +800,22 @@ Nadal chcesz kontynuować?</value>
|
|||||||
<data name="Zoom" xml:space="preserve">
|
<data name="Zoom" xml:space="preserve">
|
||||||
<value>Przybliżenie</value>
|
<value>Przybliżenie</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
<data name="Donate" xml:space="preserve">
|
||||||
|
<value>Wesprzyj</value>
|
||||||
|
</data>
|
||||||
|
<data name="Legend" xml:space="preserve">
|
||||||
|
<value>Legenda</value>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGray" xml:space="preserve">
|
||||||
|
<value>Brak informacji</value>
|
||||||
|
<comment>Can't check local version</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendRed" xml:space="preserve">
|
||||||
|
<value>Dostępna aktualizacja</value>
|
||||||
|
<comment>Update Available</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGreen" xml:space="preserve">
|
||||||
|
<value>Wersja aktualna</value>
|
||||||
|
<comment>Updated</comment>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -744,7 +744,7 @@ Do you still want to continue?</value>
|
|||||||
<value>Toggle Touchscreen</value>
|
<value>Toggle Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Touchscreen" xml:space="preserve">
|
<data name="Touchscreen" xml:space="preserve">
|
||||||
<value/>
|
<value>Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>Turbo</value>
|
<value>Turbo</value>
|
||||||
@@ -800,4 +800,22 @@ Do you still want to continue?</value>
|
|||||||
<data name="Zoom" xml:space="preserve">
|
<data name="Zoom" xml:space="preserve">
|
||||||
<value>Zoom</value>
|
<value>Zoom</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
<data name="Donate" xml:space="preserve">
|
||||||
|
<value>Donate</value>
|
||||||
|
</data>
|
||||||
|
<data name="Legend" xml:space="preserve">
|
||||||
|
<value>Legend</value>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGray" xml:space="preserve">
|
||||||
|
<value>Can't check local version</value>
|
||||||
|
<comment>Can't check local version</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendRed" xml:space="preserve">
|
||||||
|
<value>Update Available</value>
|
||||||
|
<comment>Update Available</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGreen" xml:space="preserve">
|
||||||
|
<value>Updated</value>
|
||||||
|
<comment>Updated</comment>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -744,7 +744,7 @@ Quer prosseguir?</value>
|
|||||||
<value>Toggle Touchscreen</value>
|
<value>Toggle Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Touchscreen" xml:space="preserve">
|
<data name="Touchscreen" xml:space="preserve">
|
||||||
<value/>
|
<value>Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>Turbo</value>
|
<value>Turbo</value>
|
||||||
@@ -800,4 +800,22 @@ Quer prosseguir?</value>
|
|||||||
<data name="Zoom" xml:space="preserve">
|
<data name="Zoom" xml:space="preserve">
|
||||||
<value>Zoom</value>
|
<value>Zoom</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
<data name="Donate" xml:space="preserve">
|
||||||
|
<value>Donate</value>
|
||||||
|
</data>
|
||||||
|
<data name="Legend" xml:space="preserve">
|
||||||
|
<value>Legend</value>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGray" xml:space="preserve">
|
||||||
|
<value>Can't check local version</value>
|
||||||
|
<comment>Can't check local version</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendRed" xml:space="preserve">
|
||||||
|
<value>Update Available</value>
|
||||||
|
<comment>Update Available</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGreen" xml:space="preserve">
|
||||||
|
<value>Updated</value>
|
||||||
|
<comment>Updated</comment>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -744,7 +744,7 @@ Do you still want to continue?</value>
|
|||||||
<value>Toggle Touchscreen</value>
|
<value>Toggle Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Touchscreen" xml:space="preserve">
|
<data name="Touchscreen" xml:space="preserve">
|
||||||
<value />
|
<value>Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>Turbo</value>
|
<value>Turbo</value>
|
||||||
@@ -800,4 +800,22 @@ Do you still want to continue?</value>
|
|||||||
<data name="Zoom" xml:space="preserve">
|
<data name="Zoom" xml:space="preserve">
|
||||||
<value>Zoom</value>
|
<value>Zoom</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
<data name="Donate" xml:space="preserve">
|
||||||
|
<value>Donate</value>
|
||||||
|
</data>
|
||||||
|
<data name="Legend" xml:space="preserve">
|
||||||
|
<value>Legend</value>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGray" xml:space="preserve">
|
||||||
|
<value>Can't check local version</value>
|
||||||
|
<comment>Can't check local version</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendRed" xml:space="preserve">
|
||||||
|
<value>Update Available</value>
|
||||||
|
<comment>Update Available</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGreen" xml:space="preserve">
|
||||||
|
<value>Updated</value>
|
||||||
|
<comment>Updated</comment>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -744,7 +744,7 @@
|
|||||||
<value>Toggle Touchscreen</value>
|
<value>Toggle Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Touchscreen" xml:space="preserve">
|
<data name="Touchscreen" xml:space="preserve">
|
||||||
<value/>
|
<value>Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>Turbo</value>
|
<value>Turbo</value>
|
||||||
@@ -800,4 +800,22 @@
|
|||||||
<data name="Zoom" xml:space="preserve">
|
<data name="Zoom" xml:space="preserve">
|
||||||
<value>Zoom</value>
|
<value>Zoom</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
<data name="Donate" xml:space="preserve">
|
||||||
|
<value>Donate</value>
|
||||||
|
</data>
|
||||||
|
<data name="Legend" xml:space="preserve">
|
||||||
|
<value>Legend</value>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGray" xml:space="preserve">
|
||||||
|
<value>Can't check local version</value>
|
||||||
|
<comment>Can't check local version</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendRed" xml:space="preserve">
|
||||||
|
<value>Update Available</value>
|
||||||
|
<comment>Update Available</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGreen" xml:space="preserve">
|
||||||
|
<value>Updated</value>
|
||||||
|
<comment>Updated</comment>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -744,7 +744,7 @@ Yine de devam etmek istiyor musunuz?</value>
|
|||||||
<value>Dokunmatik Ekranı Değiştir</value>
|
<value>Dokunmatik Ekranı Değiştir</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Touchscreen" xml:space="preserve">
|
<data name="Touchscreen" xml:space="preserve">
|
||||||
<value/>
|
<value>Dokunmatik ekran</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>Turbo</value>
|
<value>Turbo</value>
|
||||||
@@ -800,4 +800,22 @@ Yine de devam etmek istiyor musunuz?</value>
|
|||||||
<data name="Zoom" xml:space="preserve">
|
<data name="Zoom" xml:space="preserve">
|
||||||
<value>Yakınlaştır</value>
|
<value>Yakınlaştır</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
<data name="Donate" xml:space="preserve">
|
||||||
|
<value>Bağış</value>
|
||||||
|
</data>
|
||||||
|
<data name="Legend" xml:space="preserve">
|
||||||
|
<value>Gösterge</value>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGray" xml:space="preserve">
|
||||||
|
<value>Yerel sürüm denetlenemiyor</value>
|
||||||
|
<comment>Can't check local version</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendRed" xml:space="preserve">
|
||||||
|
<value>Güncelleme Mevcut</value>
|
||||||
|
<comment>Update Available</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGreen" xml:space="preserve">
|
||||||
|
<value>Güncellendi</value>
|
||||||
|
<comment>Updated</comment>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -316,7 +316,7 @@
|
|||||||
<value>Чорно-біла іконка трею</value>
|
<value>Чорно-біла іконка трею</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Calibrate" xml:space="preserve">
|
<data name="Calibrate" xml:space="preserve">
|
||||||
<value>Калібрування</value>
|
<value>Калібр.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Charging" xml:space="preserve">
|
<data name="Charging" xml:space="preserve">
|
||||||
<value>Зарядка</value>
|
<value>Зарядка</value>
|
||||||
@@ -744,7 +744,7 @@
|
|||||||
<value>Сенсорний екран</value>
|
<value>Сенсорний екран</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Touchscreen" xml:space="preserve">
|
<data name="Touchscreen" xml:space="preserve">
|
||||||
<value/>
|
<value>Сенсорний екран</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>Турбо</value>
|
<value>Турбо</value>
|
||||||
@@ -800,4 +800,22 @@
|
|||||||
<data name="Zoom" xml:space="preserve">
|
<data name="Zoom" xml:space="preserve">
|
||||||
<value>Зум</value>
|
<value>Зум</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
<data name="Donate" xml:space="preserve">
|
||||||
|
<value>Донат</value>
|
||||||
|
</data>
|
||||||
|
<data name="Legend" xml:space="preserve">
|
||||||
|
<value>Легенда</value>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGray" xml:space="preserve">
|
||||||
|
<value>Немає даних</value>
|
||||||
|
<comment>Can't check local version</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendRed" xml:space="preserve">
|
||||||
|
<value>Є оновлення</value>
|
||||||
|
<comment>Update Available</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGreen" xml:space="preserve">
|
||||||
|
<value>Оновлено</value>
|
||||||
|
<comment>Updated</comment>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -744,7 +744,7 @@ Do you still want to continue?</value>
|
|||||||
<value>Toggle Touchscreen</value>
|
<value>Toggle Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Touchscreen" xml:space="preserve">
|
<data name="Touchscreen" xml:space="preserve">
|
||||||
<value/>
|
<value>Touchscreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>Turbo</value>
|
<value>Turbo</value>
|
||||||
@@ -800,4 +800,22 @@ Do you still want to continue?</value>
|
|||||||
<data name="Zoom" xml:space="preserve">
|
<data name="Zoom" xml:space="preserve">
|
||||||
<value>Zoom</value>
|
<value>Zoom</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
<data name="Donate" xml:space="preserve">
|
||||||
|
<value>Donate</value>
|
||||||
|
</data>
|
||||||
|
<data name="Legend" xml:space="preserve">
|
||||||
|
<value>Legend</value>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGray" xml:space="preserve">
|
||||||
|
<value>Can't check local version</value>
|
||||||
|
<comment>Can't check local version</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendRed" xml:space="preserve">
|
||||||
|
<value>Update Available</value>
|
||||||
|
<comment>Update Available</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGreen" xml:space="preserve">
|
||||||
|
<value>Updated</value>
|
||||||
|
<comment>Updated</comment>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -741,10 +741,10 @@
|
|||||||
<value>关闭屏幕</value>
|
<value>关闭屏幕</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ToggleTouchscreen" xml:space="preserve">
|
<data name="ToggleTouchscreen" xml:space="preserve">
|
||||||
<value>Toggle Touchscreen</value>
|
<value>切换触摸屏</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Touchscreen" xml:space="preserve">
|
<data name="Touchscreen" xml:space="preserve">
|
||||||
<value/>
|
<value>触摸屏</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>增强模式</value>
|
<value>增强模式</value>
|
||||||
@@ -800,4 +800,22 @@
|
|||||||
<data name="Zoom" xml:space="preserve">
|
<data name="Zoom" xml:space="preserve">
|
||||||
<value>缩放</value>
|
<value>缩放</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
<data name="Donate" xml:space="preserve">
|
||||||
|
<value>赞助</value>
|
||||||
|
</data>
|
||||||
|
<data name="Legend" xml:space="preserve">
|
||||||
|
<value>Legend</value>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGray" xml:space="preserve">
|
||||||
|
<value>无法检查本地版本</value>
|
||||||
|
<comment>Can't check local version</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendRed" xml:space="preserve">
|
||||||
|
<value>有可用更新</value>
|
||||||
|
<comment>Update Available</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGreen" xml:space="preserve">
|
||||||
|
<value>已更新</value>
|
||||||
|
<comment>Updated</comment>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -157,7 +157,7 @@
|
|||||||
<value>程式正在執行</value>
|
<value>程式正在執行</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AppAlreadyRunningText" xml:space="preserve">
|
<data name="AppAlreadyRunningText" xml:space="preserve">
|
||||||
<value>G-Helper正在執行。 請檢查右下系統匣。</value>
|
<value>G-Helper 正在執行。 請檢查右下系統匣。</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Apply" xml:space="preserve">
|
<data name="Apply" xml:space="preserve">
|
||||||
<value>套用</value>
|
<value>套用</value>
|
||||||
@@ -169,10 +169,10 @@
|
|||||||
<value>套用功率限制</value>
|
<value>套用功率限制</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||||
<value>自動調整Windows電源模式</value>
|
<value>自動調整 Windows 電源模式</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="APUMemory" xml:space="preserve">
|
<data name="APUMemory" xml:space="preserve">
|
||||||
<value>分配給GPU的記憶體</value>
|
<value>分配給 GPU 的記憶體</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AsusServicesRunning" xml:space="preserve">
|
<data name="AsusServicesRunning" xml:space="preserve">
|
||||||
<value>執行中的華碩服務</value>
|
<value>執行中的華碩服務</value>
|
||||||
@@ -295,7 +295,7 @@
|
|||||||
<value>次要</value>
|
<value>次要</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||||
<value>BIOS與驅動程式更新</value>
|
<value>BIOS 與驅動程式更新</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Boot" xml:space="preserve">
|
<data name="Boot" xml:space="preserve">
|
||||||
<value>開機時</value>
|
<value>開機時</value>
|
||||||
@@ -744,7 +744,7 @@
|
|||||||
<value>切換螢幕觸控</value>
|
<value>切換螢幕觸控</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Touchscreen" xml:space="preserve">
|
<data name="Touchscreen" xml:space="preserve">
|
||||||
<value/>
|
<value>觸控螢幕</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>極速</value>
|
<value>極速</value>
|
||||||
@@ -800,4 +800,22 @@
|
|||||||
<data name="Zoom" xml:space="preserve">
|
<data name="Zoom" xml:space="preserve">
|
||||||
<value>縮放</value>
|
<value>縮放</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
<data name="Donate" xml:space="preserve">
|
||||||
|
<value>捐贈</value>
|
||||||
|
</data>
|
||||||
|
<data name="Legend" xml:space="preserve">
|
||||||
|
<value>Legend</value>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGray" xml:space="preserve">
|
||||||
|
<value>無法檢查本機版本</value>
|
||||||
|
<comment>Can't check local version</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendRed" xml:space="preserve">
|
||||||
|
<value>有可用的更新</value>
|
||||||
|
<comment>Update Available</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LegendGreen" xml:space="preserve">
|
||||||
|
<value>已更新</value>
|
||||||
|
<comment>Updated</comment>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -41,6 +41,7 @@ namespace Ryzen
|
|||||||
//RAPHAEL/DRAGON RANGE - 10
|
//RAPHAEL/DRAGON RANGE - 10
|
||||||
//MENDOCINO - 11
|
//MENDOCINO - 11
|
||||||
//HAWKPOINT - 12
|
//HAWKPOINT - 12
|
||||||
|
//STRIXPOINT - 13
|
||||||
|
|
||||||
public static void Init()
|
public static void Init()
|
||||||
{
|
{
|
||||||
@@ -77,7 +78,7 @@ namespace Ryzen
|
|||||||
FAMID = 1; //PICASSO
|
FAMID = 1; //PICASSO
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CPUModel.Contains("Model " + Convert.ToString(32)))
|
if (CPUModel.Contains("Family " + Convert.ToString(23)) && CPUModel.Contains("Model " + Convert.ToString(32)))
|
||||||
{
|
{
|
||||||
FAMID = 2; //DALI
|
FAMID = 2; //DALI
|
||||||
}
|
}
|
||||||
@@ -127,6 +128,11 @@ namespace Ryzen
|
|||||||
FAMID = 12; //HAWKPOINT
|
FAMID = 12; //HAWKPOINT
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (CPUModel.Contains("Family " + Convert.ToString(26)) && CPUModel.Contains("Model " + Convert.ToString(36)))
|
||||||
|
{
|
||||||
|
FAMID = 13; //STRIXPOINT
|
||||||
|
}
|
||||||
|
|
||||||
Logger.WriteLine($"CPU: {FAMID} - {CPUName} - {CPUModel}");
|
Logger.WriteLine($"CPU: {FAMID} - {CPUName} - {CPUModel}");
|
||||||
|
|
||||||
SetAddresses();
|
SetAddresses();
|
||||||
@@ -141,7 +147,7 @@ namespace Ryzen
|
|||||||
public static bool IsSupportedUV()
|
public static bool IsSupportedUV()
|
||||||
{
|
{
|
||||||
if (CPUName.Length == 0) Init();
|
if (CPUName.Length == 0) Init();
|
||||||
return CPUName.Contains("Ryzen 9") || CPUName.Contains("4900H") || CPUName.Contains("4800H") || CPUName.Contains("4600H");
|
return CPUName.Contains("Ryzen AI 9") || CPUName.Contains("Ryzen 9") || CPUName.Contains("4900H") || CPUName.Contains("4800H") || CPUName.Contains("4600H");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsSupportedUViGPU()
|
public static bool IsSupportedUViGPU()
|
||||||
@@ -238,6 +244,16 @@ namespace Ryzen
|
|||||||
Smu.PSMU_ADDR_RSP = 0x3B10a80;
|
Smu.PSMU_ADDR_RSP = 0x3B10a80;
|
||||||
Smu.PSMU_ADDR_ARG = 0x3B10a88;
|
Smu.PSMU_ADDR_ARG = 0x3B10a88;
|
||||||
}
|
}
|
||||||
|
else if (FAMID == 13)
|
||||||
|
{
|
||||||
|
Smu.MP1_ADDR_MSG = 0x3B10928;
|
||||||
|
Smu.MP1_ADDR_RSP = 0x3B10978;
|
||||||
|
Smu.MP1_ADDR_ARG = 0x3B10998;
|
||||||
|
|
||||||
|
Smu.PSMU_ADDR_MSG = 0x3B10a20;
|
||||||
|
Smu.PSMU_ADDR_RSP = 0x3B10a80;
|
||||||
|
Smu.PSMU_ADDR_ARG = 0x3B10a88;
|
||||||
|
}
|
||||||
else if (FAMID == 4 || FAMID == 6)
|
else if (FAMID == 4 || FAMID == 6)
|
||||||
{
|
{
|
||||||
Smu.MP1_ADDR_MSG = 0x3B10530;
|
Smu.MP1_ADDR_MSG = 0x3B10530;
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ namespace Ryzen
|
|||||||
//RAPHAEL/DRAGON RANGE - 10
|
//RAPHAEL/DRAGON RANGE - 10
|
||||||
//MENDOCINO - 11
|
//MENDOCINO - 11
|
||||||
//HAWKPOINT - 12
|
//HAWKPOINT - 12
|
||||||
|
//STRIXPOINT - 13
|
||||||
|
|
||||||
public static Smu RyzenAccess = new Smu(false);
|
public static Smu RyzenAccess = new Smu(false);
|
||||||
public static int FAMID = RyzenControl.FAMID;
|
public static int FAMID = RyzenControl.FAMID;
|
||||||
@@ -49,7 +50,8 @@ namespace Ryzen
|
|||||||
case 9:
|
case 9:
|
||||||
case 11:
|
case 11:
|
||||||
case 12:
|
case 12:
|
||||||
RyzenAccess.SendMp1(0x14, ref Args);
|
case 13:
|
||||||
|
result = RyzenAccess.SendMp1(0x14, ref Args);
|
||||||
result = RyzenAccess.SendPsmu(0x31, ref Args);
|
result = RyzenAccess.SendPsmu(0x31, ref Args);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -61,32 +63,6 @@ namespace Ryzen
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//STAMP2 Limit
|
|
||||||
public static Smu.Status? set_stapm2_limit(uint value)
|
|
||||||
{
|
|
||||||
RyzenAccess.Initialize();
|
|
||||||
uint[] Args = new uint[6];
|
|
||||||
Args[0] = value;
|
|
||||||
Smu.Status? result = null;
|
|
||||||
|
|
||||||
switch (FAMID)
|
|
||||||
{
|
|
||||||
case 3:
|
|
||||||
case 5:
|
|
||||||
case 7:
|
|
||||||
case 8:
|
|
||||||
case 9:
|
|
||||||
case 11:
|
|
||||||
case 12:
|
|
||||||
result = RyzenAccess.SendPsmu(0x31, ref Args);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
RyzenAccess.Deinitialize();
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Fast Limit
|
//Fast Limit
|
||||||
public static Smu.Status? set_fast_limit(uint value)
|
public static Smu.Status? set_fast_limit(uint value)
|
||||||
{
|
{
|
||||||
@@ -109,7 +85,9 @@ namespace Ryzen
|
|||||||
case 9:
|
case 9:
|
||||||
case 11:
|
case 11:
|
||||||
case 12:
|
case 12:
|
||||||
|
case 13:
|
||||||
result = RyzenAccess.SendMp1(0x15, ref Args);
|
result = RyzenAccess.SendMp1(0x15, ref Args);
|
||||||
|
result = RyzenAccess.SendPsmu(0x32, ref Args);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -140,7 +118,10 @@ namespace Ryzen
|
|||||||
case 9:
|
case 9:
|
||||||
case 11:
|
case 11:
|
||||||
case 12:
|
case 12:
|
||||||
|
case 13:
|
||||||
result = RyzenAccess.SendMp1(0x16, ref Args);
|
result = RyzenAccess.SendMp1(0x16, ref Args);
|
||||||
|
result = RyzenAccess.SendPsmu(0x33, ref Args);
|
||||||
|
result = RyzenAccess.SendPsmu(0x34, ref Args);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -176,11 +157,12 @@ namespace Ryzen
|
|||||||
case 9:
|
case 9:
|
||||||
case 11:
|
case 11:
|
||||||
case 12:
|
case 12:
|
||||||
|
case 13:
|
||||||
result = RyzenAccess.SendMp1(0x19, ref Args);
|
result = RyzenAccess.SendMp1(0x19, ref Args);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
case 6:
|
case 6:
|
||||||
RyzenAccess.SendMp1(0x23, ref Args);
|
result = RyzenAccess.SendMp1(0x23, ref Args);
|
||||||
result = RyzenAccess.SendPsmu(0x56, ref Args);
|
result = RyzenAccess.SendPsmu(0x56, ref Args);
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
@@ -194,37 +176,6 @@ namespace Ryzen
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Skin Temp limit
|
|
||||||
public static Smu.Status? set_apu_skin_temp_limit(uint value)
|
|
||||||
{
|
|
||||||
RyzenAccess.Initialize();
|
|
||||||
uint[] Args = new uint[6];
|
|
||||||
Args[0] = value;
|
|
||||||
|
|
||||||
Smu.Status? result = null;
|
|
||||||
|
|
||||||
switch (FAMID)
|
|
||||||
{
|
|
||||||
case 5:
|
|
||||||
case 8:
|
|
||||||
case 9:
|
|
||||||
case 11:
|
|
||||||
case 12:
|
|
||||||
result = RyzenAccess.SendMp1(0x33, ref Args);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
case 7:
|
|
||||||
result = RyzenAccess.SendMp1(0x38, ref Args);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
RyzenAccess.Deinitialize();
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Set All Core Curve Optimiser
|
//Set All Core Curve Optimiser
|
||||||
public static Smu.Status? set_coall(int value)
|
public static Smu.Status? set_coall(int value)
|
||||||
{
|
{
|
||||||
@@ -241,12 +192,12 @@ namespace Ryzen
|
|||||||
{
|
{
|
||||||
case 3:
|
case 3:
|
||||||
case 7:
|
case 7:
|
||||||
RyzenAccess.SendMp1(0x55, ref Args);
|
result = RyzenAccess.SendMp1(0x55, ref Args);
|
||||||
result = RyzenAccess.SendPsmu(0xB1, ref Args);
|
result = RyzenAccess.SendPsmu(0xB1, ref Args);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
case 6:
|
case 6:
|
||||||
RyzenAccess.SendMp1(0x36, ref Args);
|
result = RyzenAccess.SendMp1(0x36, ref Args);
|
||||||
result = RyzenAccess.SendPsmu(0xB, ref Args);
|
result = RyzenAccess.SendPsmu(0xB, ref Args);
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
@@ -254,6 +205,7 @@ namespace Ryzen
|
|||||||
case 9:
|
case 9:
|
||||||
case 11:
|
case 11:
|
||||||
case 12:
|
case 12:
|
||||||
|
case 13:
|
||||||
result = RyzenAccess.SendPsmu(0x5D, ref Args);
|
result = RyzenAccess.SendPsmu(0x5D, ref Args);
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
@@ -285,7 +237,7 @@ namespace Ryzen
|
|||||||
{
|
{
|
||||||
case 3:
|
case 3:
|
||||||
case 7:
|
case 7:
|
||||||
RyzenAccess.SendMp1(0x64, ref Args);
|
result = RyzenAccess.SendMp1(0x64, ref Args);
|
||||||
result = RyzenAccess.SendPsmu(0x57, ref Args);
|
result = RyzenAccess.SendPsmu(0x57, ref Args);
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
@@ -293,6 +245,7 @@ namespace Ryzen
|
|||||||
case 9:
|
case 9:
|
||||||
case 11:
|
case 11:
|
||||||
case 12:
|
case 12:
|
||||||
|
case 13:
|
||||||
result = RyzenAccess.SendPsmu(0xb7, ref Args);
|
result = RyzenAccess.SendPsmu(0xb7, ref Args);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -93,6 +93,7 @@ namespace GHelper
|
|||||||
buttonMatrix.Text = Properties.Strings.PictureGif;
|
buttonMatrix.Text = Properties.Strings.PictureGif;
|
||||||
buttonQuit.Text = Properties.Strings.Quit;
|
buttonQuit.Text = Properties.Strings.Quit;
|
||||||
buttonUpdates.Text = Properties.Strings.Updates;
|
buttonUpdates.Text = Properties.Strings.Updates;
|
||||||
|
buttonDonate.Text = Properties.Strings.Donate;
|
||||||
|
|
||||||
buttonController.Text = Properties.Strings.Controller;
|
buttonController.Text = Properties.Strings.Controller;
|
||||||
labelAlly.Text = Properties.Strings.AllyController;
|
labelAlly.Text = Properties.Strings.AllyController;
|
||||||
@@ -234,6 +235,7 @@ namespace GHelper
|
|||||||
|
|
||||||
labelCharge.MouseEnter += PanelBattery_MouseEnter;
|
labelCharge.MouseEnter += PanelBattery_MouseEnter;
|
||||||
labelCharge.MouseLeave += PanelBattery_MouseLeave;
|
labelCharge.MouseLeave += PanelBattery_MouseLeave;
|
||||||
|
labelBattery.Click += LabelBattery_Click;
|
||||||
|
|
||||||
buttonPeripheral1.Click += ButtonPeripheral_Click;
|
buttonPeripheral1.Click += ButtonPeripheral_Click;
|
||||||
buttonPeripheral2.Click += ButtonPeripheral_Click;
|
buttonPeripheral2.Click += ButtonPeripheral_Click;
|
||||||
@@ -271,15 +273,30 @@ namespace GHelper
|
|||||||
|
|
||||||
buttonDonate.Click += ButtonDonate_Click;
|
buttonDonate.Click += ButtonDonate_Click;
|
||||||
|
|
||||||
|
int click = AppConfig.Get("donate_click");
|
||||||
|
if (AppConfig.Get("start_count") >= ((click < 10) ? 10 : click + 50))
|
||||||
|
{
|
||||||
|
buttonDonate.BorderColor = colorTurbo;
|
||||||
|
buttonDonate.Badge = true;
|
||||||
|
}
|
||||||
|
|
||||||
labelDynamicLighting.Click += LabelDynamicLighting_Click;
|
labelDynamicLighting.Click += LabelDynamicLighting_Click;
|
||||||
|
|
||||||
panelPerformance.Focus();
|
panelPerformance.Focus();
|
||||||
InitVisual();
|
InitVisual();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void LabelBattery_Click(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
HardwareControl.chargeWatt = !HardwareControl.chargeWatt;
|
||||||
|
RefreshSensors(true);
|
||||||
|
}
|
||||||
|
|
||||||
private void ButtonDonate_Click(object? sender, EventArgs e)
|
private void ButtonDonate_Click(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Process.Start(new ProcessStartInfo("https://github.com/seerge/g-helper/wiki/Support-Project") { UseShellExecute = true });
|
AppConfig.Set("donate_click", AppConfig.Get("start_count"));
|
||||||
|
buttonDonate.Badge = false;
|
||||||
|
Process.Start(new ProcessStartInfo("https://g-helper.com/support") { UseShellExecute = true });
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LabelDynamicLighting_Click(object? sender, EventArgs e)
|
private void LabelDynamicLighting_Click(object? sender, EventArgs e)
|
||||||
@@ -444,7 +461,7 @@ namespace GHelper
|
|||||||
Invoke(delegate
|
Invoke(delegate
|
||||||
{
|
{
|
||||||
sliderGammaIgnore = true;
|
sliderGammaIgnore = true;
|
||||||
sliderGamma.Value = AppConfig.Get("brightness", 100);
|
sliderGamma.Value = VisualControl.GetBrightness();
|
||||||
labelGamma.Text = sliderGamma.Value + "%";
|
labelGamma.Text = sliderGamma.Value + "%";
|
||||||
sliderGammaIgnore = false;
|
sliderGammaIgnore = false;
|
||||||
});
|
});
|
||||||
@@ -658,14 +675,14 @@ namespace GHelper
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
Logger.WriteLine("Lid Closed");
|
Logger.WriteLine("Lid Closed");
|
||||||
|
InputDispatcher.lidClose = AniMatrixControl.lidClose = true;
|
||||||
Aura.ApplyBrightness(0, "Lid");
|
Aura.ApplyBrightness(0, "Lid");
|
||||||
AniMatrixControl.lidClose = true;
|
|
||||||
matrixControl.SetLidMode();
|
matrixControl.SetLidMode();
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
Logger.WriteLine("Lid Open");
|
Logger.WriteLine("Lid Open");
|
||||||
|
InputDispatcher.lidClose = AniMatrixControl.lidClose = false;
|
||||||
Aura.ApplyBrightness(InputDispatcher.GetBacklight(), "Lid");
|
Aura.ApplyBrightness(InputDispatcher.GetBacklight(), "Lid");
|
||||||
AniMatrixControl.lidClose = false;
|
|
||||||
matrixControl.SetLidMode();
|
matrixControl.SetLidMode();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -834,7 +851,7 @@ namespace GHelper
|
|||||||
|
|
||||||
private void Button60Hz_MouseHover(object? sender, EventArgs e)
|
private void Button60Hz_MouseHover(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
labelTipScreen.Text = Properties.Strings.MinRefreshTooltip;
|
labelTipScreen.Text = Properties.Strings.MinRefreshTooltip.Replace("60", ScreenControl.MIN_RATE.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ButtonScreen_MouseLeave(object? sender, EventArgs e)
|
private void ButtonScreen_MouseLeave(object? sender, EventArgs e)
|
||||||
@@ -844,7 +861,7 @@ namespace GHelper
|
|||||||
|
|
||||||
private void ButtonScreenAuto_MouseHover(object? sender, EventArgs e)
|
private void ButtonScreenAuto_MouseHover(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
labelTipScreen.Text = Properties.Strings.AutoRefreshTooltip;
|
labelTipScreen.Text = Properties.Strings.AutoRefreshTooltip.Replace("60", ScreenControl.MIN_RATE.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ButtonUltimate_MouseHover(object? sender, EventArgs e)
|
private void ButtonUltimate_MouseHover(object? sender, EventArgs e)
|
||||||
@@ -1199,7 +1216,7 @@ namespace GHelper
|
|||||||
private void Button60Hz_Click(object? sender, EventArgs e)
|
private void Button60Hz_Click(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
AppConfig.Set("screen_auto", 0);
|
AppConfig.Set("screen_auto", 0);
|
||||||
screenControl.SetScreen(60, 0);
|
screenControl.SetScreen(ScreenControl.MIN_RATE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1230,16 +1247,18 @@ namespace GHelper
|
|||||||
{
|
{
|
||||||
buttonScreenAuto.Activated = true;
|
buttonScreenAuto.Activated = true;
|
||||||
}
|
}
|
||||||
else if (frequency == 60)
|
else if (frequency == ScreenControl.MIN_RATE)
|
||||||
{
|
{
|
||||||
button60Hz.Activated = true;
|
button60Hz.Activated = true;
|
||||||
}
|
}
|
||||||
else if (frequency > 60)
|
else if (frequency > ScreenControl.MIN_RATE)
|
||||||
{
|
{
|
||||||
button120Hz.Activated = true;
|
button120Hz.Activated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (maxFrequency > 60)
|
button60Hz.Text = ScreenControl.MIN_RATE + "Hz";
|
||||||
|
|
||||||
|
if (maxFrequency > ScreenControl.MIN_RATE)
|
||||||
{
|
{
|
||||||
button120Hz.Text = maxFrequency.ToString() + "Hz" + (overdriveSetting ? " + OD" : "");
|
button120Hz.Text = maxFrequency.ToString() + "Hz" + (overdriveSetting ? " + OD" : "");
|
||||||
panelScreen.Visible = true;
|
panelScreen.Visible = true;
|
||||||
@@ -1411,7 +1430,9 @@ namespace GHelper
|
|||||||
cpuTemp = ": " + Math.Round((decimal)HardwareControl.cpuTemp).ToString() + "°C";
|
cpuTemp = ": " + Math.Round((decimal)HardwareControl.cpuTemp).ToString() + "°C";
|
||||||
|
|
||||||
if (HardwareControl.batteryCapacity > 0)
|
if (HardwareControl.batteryCapacity > 0)
|
||||||
charge = Properties.Strings.BatteryCharge + ": " + Math.Round(HardwareControl.batteryCapacity, 1) + "% ";
|
{
|
||||||
|
charge = Properties.Strings.BatteryCharge + ": " + HardwareControl.batteryCharge;
|
||||||
|
}
|
||||||
|
|
||||||
if (HardwareControl.batteryRate < 0)
|
if (HardwareControl.batteryRate < 0)
|
||||||
battery = Properties.Strings.Discharging + ": " + Math.Round(-(decimal)HardwareControl.batteryRate, 1).ToString() + "W";
|
battery = Properties.Strings.Discharging + ": " + Math.Round(-(decimal)HardwareControl.batteryRate, 1).ToString() + "W";
|
||||||
@@ -1521,24 +1542,6 @@ namespace GHelper
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void AutoKeyboard()
|
|
||||||
{
|
|
||||||
|
|
||||||
InputDispatcher.SetBacklightAuto(true);
|
|
||||||
|
|
||||||
if (!AppConfig.Is("skip_aura"))
|
|
||||||
{
|
|
||||||
Aura.ApplyPower();
|
|
||||||
Aura.ApplyAura();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Program.acpi.IsXGConnected())
|
|
||||||
XGM.Light(AppConfig.Is("xmg_light"));
|
|
||||||
|
|
||||||
if (AppConfig.HasTabletMode()) InputDispatcher.TabletMode();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void VisualizeXGM(int GPUMode = -1)
|
public void VisualizeXGM(int GPUMode = -1)
|
||||||
{
|
{
|
||||||
@@ -1766,7 +1769,7 @@ namespace GHelper
|
|||||||
|
|
||||||
public void VisualiseBatteryFull()
|
public void VisualiseBatteryFull()
|
||||||
{
|
{
|
||||||
if (AppConfig.Is("charge_full"))
|
if (BatteryControl.chargeFull)
|
||||||
{
|
{
|
||||||
buttonBatteryFull.BackColor = colorStandard;
|
buttonBatteryFull.BackColor = colorStandard;
|
||||||
buttonBatteryFull.ForeColor = SystemColors.ControlLightLight;
|
buttonBatteryFull.ForeColor = SystemColors.ControlLightLight;
|
||||||
|
|||||||
141
app/UI/NumericUpDownWithUnit.cs
Normal file
141
app/UI/NumericUpDownWithUnit.cs
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
using System.Globalization;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
|
public class NumericUpDownWithUnit : NumericUpDown
|
||||||
|
{
|
||||||
|
#region| Fields |
|
||||||
|
|
||||||
|
private string unit = null;
|
||||||
|
private bool unitFirst = false;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region| Properties |
|
||||||
|
|
||||||
|
public string Unit
|
||||||
|
{
|
||||||
|
get => unit;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
unit = value;
|
||||||
|
|
||||||
|
UpdateEditText();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool UnitFirst
|
||||||
|
{
|
||||||
|
get => unitFirst;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
unitFirst = value;
|
||||||
|
|
||||||
|
UpdateEditText();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region| Methods |
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Method called when updating the numeric updown text.
|
||||||
|
/// </summary>
|
||||||
|
protected override void UpdateEditText()
|
||||||
|
{
|
||||||
|
// If there is a unit we handle it ourselfs, if there is not we leave it to the base class.
|
||||||
|
if (Unit != null && Unit != string.Empty)
|
||||||
|
{
|
||||||
|
if (UnitFirst)
|
||||||
|
{
|
||||||
|
Text = $"({Unit}) {Value}";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Text = $"{Value} ({Unit})";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
base.UpdateEditText();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Validate method called before actually updating the text.
|
||||||
|
/// This is exactly the same as the base class but it will use the new ParseEditText from this class instead.
|
||||||
|
/// </summary>
|
||||||
|
protected override void ValidateEditText()
|
||||||
|
{
|
||||||
|
// See if the edit text parses to a valid decimal considering the label unit
|
||||||
|
ParseEditText();
|
||||||
|
UpdateEditText();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Converts the text displayed in the up-down control to a numeric value and evaluates it.
|
||||||
|
/// </summary>
|
||||||
|
protected new void ParseEditText()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// The only difference of this methods to the base one is that text is replaced directly
|
||||||
|
// with the property Text instead of using the regex.
|
||||||
|
// We now that the only characters that may be on the textbox are from the unit we provide.
|
||||||
|
// because the NumericUpDown handles invalid input from user for us.
|
||||||
|
// This is where the magic happens. This regex will match all characters from the unit
|
||||||
|
// (so your unit cannot have numbers). You can change this regex to fill your needs
|
||||||
|
var regex = new Regex($@"[^(?!{Unit} )]+");
|
||||||
|
var match = regex.Match(Text);
|
||||||
|
|
||||||
|
if (match.Success)
|
||||||
|
{
|
||||||
|
var text = match.Value;
|
||||||
|
|
||||||
|
// VSWhidbey 173332: Verify that the user is not starting the string with a "-"
|
||||||
|
// before attempting to set the Value property since a "-" is a valid character with
|
||||||
|
// which to start a string representing a negative number.
|
||||||
|
if (!string.IsNullOrEmpty(text) && !(text.Length == 1 && text == "-"))
|
||||||
|
{
|
||||||
|
if (Hexadecimal)
|
||||||
|
{
|
||||||
|
Value = Constrain(Convert.ToDecimal(Convert.ToInt32(Text, 16)));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Value = Constrain(Decimal.Parse(text, CultureInfo.CurrentCulture));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// Leave value as it is
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
UserEdit = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// </summary>
|
||||||
|
/// Returns the provided value constrained to be within the min and max.
|
||||||
|
/// This is exactly the same as the one in base class (which is private so we can't directly use it).
|
||||||
|
/// </summary>
|
||||||
|
private decimal Constrain(decimal value)
|
||||||
|
{
|
||||||
|
if (value < Minimum)
|
||||||
|
{
|
||||||
|
value = Minimum;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value > Maximum)
|
||||||
|
{
|
||||||
|
value = Maximum;
|
||||||
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
@@ -52,6 +52,16 @@ namespace GHelper.UI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool badge = false;
|
||||||
|
public bool Badge
|
||||||
|
{
|
||||||
|
get { return badge; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
badge = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public RButton()
|
public RButton()
|
||||||
{
|
{
|
||||||
DoubleBuffered = true;
|
DoubleBuffered = true;
|
||||||
@@ -99,6 +109,15 @@ namespace GHelper.UI
|
|||||||
pevent.Graphics.DrawPath(penBorder, pathBorder);
|
pevent.Graphics.DrawPath(penBorder, pathBorder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (badge)
|
||||||
|
{
|
||||||
|
using (Brush brush = new SolidBrush(borderColor))
|
||||||
|
{
|
||||||
|
var radius = ratio * 10;
|
||||||
|
pevent.Graphics.FillEllipse(brush, rectSurface.Width - rectSurface.Height / 2 - radius, rectSurface.Height / 2 - radius, radius + radius, radius + radius);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!Enabled && ForeColor != SystemColors.ControlText)
|
if (!Enabled && ForeColor != SystemColors.ControlText)
|
||||||
{
|
{
|
||||||
var rect = pevent.ClipRectangle;
|
var rect = pevent.ClipRectangle;
|
||||||
|
|||||||
@@ -268,6 +268,16 @@ namespace GHelper.USB
|
|||||||
Encoding.ASCII.GetBytes("]ASUS Tech.Inc."),
|
Encoding.ASCII.GetBytes("]ASUS Tech.Inc."),
|
||||||
new byte[] { AsusHid.AURA_ID, 0x05, 0x20, 0x31, 0, 0x1A },
|
new byte[] { AsusHid.AURA_ID, 0x05, 0x20, 0x31, 0, 0x1A },
|
||||||
}, "Init");
|
}, "Init");
|
||||||
|
|
||||||
|
if (AppConfig.IsProArt())
|
||||||
|
{
|
||||||
|
AsusHid.WriteInput([AsusHid.INPUT_ID, 0x05, 0x20, 0x31, 0x00, 0x08], "ProArt Init");
|
||||||
|
//AsusHid.WriteInput([AsusHid.INPUT_ID, 0xD0, 0x4E], "ProArt Init");
|
||||||
|
AsusHid.WriteInput([AsusHid.INPUT_ID, 0xBA, 0xC5, 0xC4], "ProArt Init");
|
||||||
|
AsusHid.WriteInput([AsusHid.INPUT_ID, 0xD0, 0x8F, 0x01], "ProArt Init");
|
||||||
|
AsusHid.WriteInput([AsusHid.INPUT_ID, 0xD0, 0x85, 0xFF], "ProArt Init");
|
||||||
|
//AsusHid.WriteInput([AsusHid.INPUT_ID, 0xD0, 0x4E], "ProArt Init");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -351,6 +361,11 @@ namespace GHelper.USB
|
|||||||
AsusHid.WriteInput(new byte[] { AsusHid.INPUT_ID, 0xD1, 0x09, 0x01, power }, "Aura");
|
AsusHid.WriteInput(new byte[] { AsusHid.INPUT_ID, 0xD1, 0x09, 0x01, power }, "Aura");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void ApplyPowerOff()
|
||||||
|
{
|
||||||
|
AsusHid.Write(AuraPowerMessage(new AuraPower()));
|
||||||
|
}
|
||||||
|
|
||||||
public static void ApplyPower()
|
public static void ApplyPower()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
@@ -52,6 +52,10 @@ namespace GHelper.USB
|
|||||||
Write(new byte[] { 0x5e, 0xc5, status ? (byte)0x50 : (byte)0 });
|
Write(new byte[] { 0x5e, 0xc5, status ? (byte)0x50 : (byte)0 });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void InitLight()
|
||||||
|
{
|
||||||
|
if (Program.acpi.IsXGConnected()) Light(AppConfig.Is("xmg_light"));
|
||||||
|
}
|
||||||
|
|
||||||
public static void Reset()
|
public static void Reset()
|
||||||
{
|
{
|
||||||
|
|||||||
9
app/Updates.Designer.cs
generated
9
app/Updates.Designer.cs
generated
@@ -78,7 +78,7 @@ namespace GHelper
|
|||||||
// labelBIOS
|
// labelBIOS
|
||||||
//
|
//
|
||||||
labelBIOS.AutoSize = true;
|
labelBIOS.AutoSize = true;
|
||||||
labelBIOS.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
labelBIOS.Font = new Font("Segoe UI", 9F, FontStyle.Bold);
|
||||||
labelBIOS.Location = new Point(68, 23);
|
labelBIOS.Location = new Point(68, 23);
|
||||||
labelBIOS.Margin = new Padding(4, 0, 4, 0);
|
labelBIOS.Margin = new Padding(4, 0, 4, 0);
|
||||||
labelBIOS.Name = "labelBIOS";
|
labelBIOS.Name = "labelBIOS";
|
||||||
@@ -113,7 +113,7 @@ namespace GHelper
|
|||||||
// labelUpdates
|
// labelUpdates
|
||||||
//
|
//
|
||||||
labelUpdates.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
labelUpdates.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||||
labelUpdates.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
labelUpdates.Font = new Font("Segoe UI", 9F, FontStyle.Bold);
|
||||||
labelUpdates.Location = new Point(864, 19);
|
labelUpdates.Location = new Point(864, 19);
|
||||||
labelUpdates.Name = "labelUpdates";
|
labelUpdates.Name = "labelUpdates";
|
||||||
labelUpdates.Size = new Size(302, 32);
|
labelUpdates.Size = new Size(302, 32);
|
||||||
@@ -125,6 +125,7 @@ namespace GHelper
|
|||||||
buttonRefresh.Activated = false;
|
buttonRefresh.Activated = false;
|
||||||
buttonRefresh.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
buttonRefresh.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||||
buttonRefresh.BackColor = SystemColors.ControlLight;
|
buttonRefresh.BackColor = SystemColors.ControlLight;
|
||||||
|
buttonRefresh.Badge = false;
|
||||||
buttonRefresh.BorderColor = Color.Transparent;
|
buttonRefresh.BorderColor = Color.Transparent;
|
||||||
buttonRefresh.BorderRadius = 5;
|
buttonRefresh.BorderRadius = 5;
|
||||||
buttonRefresh.FlatAppearance.BorderSize = 0;
|
buttonRefresh.FlatAppearance.BorderSize = 0;
|
||||||
@@ -192,7 +193,7 @@ namespace GHelper
|
|||||||
// labelDrivers
|
// labelDrivers
|
||||||
//
|
//
|
||||||
labelDrivers.AutoSize = true;
|
labelDrivers.AutoSize = true;
|
||||||
labelDrivers.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
labelDrivers.Font = new Font("Segoe UI", 9F, FontStyle.Bold);
|
||||||
labelDrivers.Location = new Point(68, 6);
|
labelDrivers.Location = new Point(68, 6);
|
||||||
labelDrivers.Margin = new Padding(4, 0, 4, 0);
|
labelDrivers.Margin = new Padding(4, 0, 4, 0);
|
||||||
labelDrivers.Name = "labelDrivers";
|
labelDrivers.Name = "labelDrivers";
|
||||||
@@ -280,7 +281,7 @@ namespace GHelper
|
|||||||
//
|
//
|
||||||
labelLegend.AutoSize = true;
|
labelLegend.AutoSize = true;
|
||||||
labelLegend.Dock = DockStyle.Top;
|
labelLegend.Dock = DockStyle.Top;
|
||||||
labelLegend.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
labelLegend.Font = new Font("Segoe UI", 9F, FontStyle.Bold);
|
||||||
labelLegend.Location = new Point(20, 10);
|
labelLegend.Location = new Point(20, 10);
|
||||||
labelLegend.Margin = new Padding(10);
|
labelLegend.Margin = new Padding(10);
|
||||||
labelLegend.Name = "labelLegend";
|
labelLegend.Name = "labelLegend";
|
||||||
|
|||||||
@@ -49,6 +49,11 @@ namespace GHelper
|
|||||||
labelBIOS.Text = "BIOS";
|
labelBIOS.Text = "BIOS";
|
||||||
labelDrivers.Text = Properties.Strings.DriverAndSoftware;
|
labelDrivers.Text = Properties.Strings.DriverAndSoftware;
|
||||||
|
|
||||||
|
labelLegend.Text = Properties.Strings.Legend;
|
||||||
|
labelLegendGray.Text = Properties.Strings.LegendGray;
|
||||||
|
labelLegendRed.Text = Properties.Strings.LegendRed;
|
||||||
|
labelLegendGreen.Text = Properties.Strings.LegendGreen;
|
||||||
|
|
||||||
SuspendLayout();
|
SuspendLayout();
|
||||||
|
|
||||||
tableBios.Visible = false;
|
tableBios.Visible = false;
|
||||||
@@ -206,17 +211,26 @@ namespace GHelper
|
|||||||
|
|
||||||
public void VisualiseNewCount(int updatesCount, TableLayoutPanel table)
|
public void VisualiseNewCount(int updatesCount, TableLayoutPanel table)
|
||||||
{
|
{
|
||||||
Invoke(delegate
|
if (InvokeRequired)
|
||||||
{
|
{
|
||||||
labelUpdates.Text = $"{Properties.Strings.NewUpdates}: {updatesCount}";
|
Invoke(delegate
|
||||||
labelUpdates.ForeColor = colorTurbo;
|
{
|
||||||
labelUpdates.Font = new Font(labelUpdates.Font, FontStyle.Bold);
|
_VisualiseNewCount(updatesCount, table);
|
||||||
|
});
|
||||||
panelBios.AccessibleName = labelUpdates.Text;
|
}
|
||||||
|
else
|
||||||
});
|
{
|
||||||
|
_VisualiseNewCount(updatesCount, table);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void _VisualiseNewCount(int updatesCount, TableLayoutPanel table)
|
||||||
|
{
|
||||||
|
labelUpdates.Text = $"{Properties.Strings.NewUpdates}: {updatesCount}";
|
||||||
|
labelUpdates.ForeColor = colorTurbo;
|
||||||
|
labelUpdates.Font = new Font(labelUpdates.Font, FontStyle.Bold);
|
||||||
|
panelBios.AccessibleName = labelUpdates.Text;
|
||||||
|
}
|
||||||
|
|
||||||
static string CleanupDeviceId(string input)
|
static string CleanupDeviceId(string input)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<root>
|
<root>
|
||||||
<!--
|
<!--
|
||||||
Microsoft ResX Schema
|
Microsoft ResX Schema
|
||||||
|
|
||||||
Version 2.0
|
Version 2.0
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
value : The object must be serialized with
|
value : The object must be serialized with
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
value : The object must be serialized with
|
value : The object must be serialized with
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
|||||||
181
docs/README.ja-JP.md
Normal file
181
docs/README.ja-JP.md
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
# G-Helper - Asusノートパソコン用の軽量コントロールツール
|
||||||
|
[](https://u24.gov.ua/)
|
||||||
|
[](https://GitHub.com/seerge/g-helper/releases/)
|
||||||
|
[](https://GitHub.com/seerge/g-helper/releases/) [](https://GitHub.com/seerge/g-helper/stargazers/) <sup>[中文版点这里](https://github.com/seerge/g-helper/blob/main/docs/README.zh-CN.md)</sup>
|
||||||
|
|
||||||
|
Asusノートパソコン用の軽量なArmoury Crate代替ツールで、余分な負荷や不要なサービスなしでほぼ同じ機能を提供します。
|
||||||
|
|
||||||
|
ROG Zephyrus G14、G15、G16、M16、Flow X13、Flow X16、Flow Z13、TUFシリーズ、StrixまたはScarシリーズ、ProArt、Vivobook、Zenbook、ROG Ally / Ally Xなど、すべての人気モデルで動作します!
|
||||||
|
|
||||||
|
# [:floppy_disk:ダウンロード](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
|
||||||
|
**⭐ アプリが気に入ったら、ぜひオンラインで広めてください**
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td><b>プロジェクトをサポート</b></td>
|
||||||
|
<td >
|
||||||
|
<a href="https://bit.ly/4c0ZWs9"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/paypal-eur.png" height="36" alt="PayPal EUR"></a>
|
||||||
|
<a href="https://bit.ly/4aGTyW8"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/paypal-usd.png" height="36" alt="PayPal USD"></a>
|
||||||
|
<a href="https://buy.stripe.com/8wM6pt8HbgK50tWbIK"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/stripe.png" height="36" alt="Stripe"></a>
|
||||||
|
<a href="https://buy.stripe.com/6oE29dg9D3Xj7Wo28b"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/alipay.png" height="36" alt="Alipay"></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
- [FAQ](https://github.com/seerge/g-helper/wiki/FAQ)
|
||||||
|
- [セットアップと要件](https://github.com/seerge/g-helper/wiki/Requirements)
|
||||||
|
- [トラブルシューティング](https://github.com/seerge/g-helper/wiki/Troubleshooting)
|
||||||
|
- [パワーユーザー設定](https://github.com/seerge/g-helper/wiki/Power-user-settings)
|
||||||
|
|
||||||
|
|
||||||
|
[](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
|
||||||
|
|
||||||
|
## :loudspeaker: YouTubeレビューとガイド
|
||||||
|
| [](https://www.youtube.com/watch?v=hqe-PjuE-K8) | [](https://www.youtube.com/watch?v=6aVdwJKZSSc) |
|
||||||
|
| ----------------- | ---------------- |
|
||||||
|
| [Josh Cravey](https://www.youtube.com/watch?v=hqe-PjuE-K8) | [cbutters Tech](https://www.youtube.com/watch?v=6aVdwJKZSSc) |
|
||||||
|
|
||||||
|
## 📰 記事
|
||||||
|
1. https://www.digitaltrends.com/computing/g-helper-armoury-crate-alternative/
|
||||||
|
2. https://binaryfork.com/ghelper-armoury-crate-alternative-10216/
|
||||||
|
|
||||||
|
## :gift: 利点
|
||||||
|
|
||||||
|
1. シームレスで自動的なGPU切り替え
|
||||||
|
2. すべてのパフォーマンスモードを電力制限とファンカーブで完全にカスタマイズ可能
|
||||||
|
3. 軽量。システムに何もインストールしません。実行するための単一のexeファイルのみ
|
||||||
|
4. シンプルでクリーンなネイティブUIで、すべての設定に簡単にアクセス
|
||||||
|
5. FNロックとカスタムホットキー
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### :zap: 機能
|
||||||
|
|
||||||
|
1. パフォーマンスモード: サイレント - バランス - ターボ (内蔵、デフォルトのファンカーブ付き)
|
||||||
|
2. GPUモード: エコ - スタンダード - アルティメット - オプティマイズド
|
||||||
|
3. ディスプレイのリフレッシュレート制御とディスプレイオーバードライブ (OD)
|
||||||
|
4. カスタムファンカーブエディタ、電力制限、ターボブースト選択
|
||||||
|
5. アニメマトリックスまたはスラッシュライティングの制御、アニメーションGIF、時計、オーディオビジュアライザー
|
||||||
|
6. バックライトのアニメーションモードとカラー
|
||||||
|
7. ホットキーの処理
|
||||||
|
8. CPUとGPUの温度、ファン速度、バッテリーステータスの監視
|
||||||
|
9. バッテリーの充電制限
|
||||||
|
10. NVidia GPUのオーバークロックとアンダーボルティング
|
||||||
|
11. XG Mobileの制御
|
||||||
|
12. AMD CPUのアンダーボルティング
|
||||||
|
13. BIOSとドライバの更新
|
||||||
|
14. Asusマウスの設定
|
||||||
|
15. ミニLEDのマルチゾーンスイッチ
|
||||||
|
16. フリッカーフリーディミングとビジュアルモード
|
||||||
|
|
||||||
|
### :gear: 自動化
|
||||||
|
- バッテリー使用時または電源接続時のパフォーマンスモードの切り替え
|
||||||
|
- オプティマイズドGPUモード - バッテリー使用時にdGPUを無効化し、電源接続時に有効化
|
||||||
|
- 自動ディスプレイリフレッシュレート (バッテリー使用時に60Hz、電源接続時に最大Hz)
|
||||||
|
- バッテリー使用時または電源接続時のキーボードバックライトのタイムアウト
|
||||||
|
|
||||||
|
### :rocket: パフォーマンスモード
|
||||||
|
|
||||||
|
<img align="right" width="300" src="https://github.com/seerge/g-helper/assets/5920850/3e119674-db8d-486b-aa65-2bf9b61f9aa6">
|
||||||
|
|
||||||
|
すべてのモードはBIOSに組み込まれており、デフォルトのファンカーブと電力制限が設定されています。これらはArmoury Crateと同じです。
|
||||||
|
|
||||||
|
各BIOSモードは対応するWindowsパワーモードとペアになっています。これを「ファン + 電源」設定で調整できます。
|
||||||
|
|
||||||
|
1. BIOSの「サイレント」 + Windowsの「最高の電力効率」パワーモード
|
||||||
|
2. BIOSの「バランス」 (AC時のパフォーマンス) + Windowsの「バランス」パワーモード
|
||||||
|
3. BIOSの「ターボ」 + Windowsの「最高のパフォーマンス」パワーモード
|
||||||
|
|
||||||
|
### :video_game: GPUモード
|
||||||
|
|
||||||
|
1. エコ: 低電力の統合GPUのみが有効、iGPUが内蔵ディスプレイを駆動
|
||||||
|
2. スタンダード (MS Hybrid): iGPUとdGPUが有効、iGPUが内蔵ディスプレイを駆動
|
||||||
|
3. アルティメット: iGPUとdGPUが有効、dGPUが内蔵ディスプレイを駆動 (2022年以降のモデルでサポート)
|
||||||
|
4. オプティマイズド: バッテリー使用時にdGPUを無効化 (エコ)し、電源接続時に有効化 (スタンダード)
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
### :mouse: Asusマウスとその他の周辺機器のサポート
|
||||||
|
|
||||||
|
[現在サポートされているモデル](https://github.com/seerge/g-helper/discussions/900)
|
||||||
|
- ROG Chakram X (P708)
|
||||||
|
- ROG Chakram Core (P511)
|
||||||
|
- ROG Gladius II and Gladius II Origin (P502 and P504)
|
||||||
|
- ROG Gladius II Wireless
|
||||||
|
- ROG Gladius III
|
||||||
|
- ROG Gladius III Wireless
|
||||||
|
- ROG Harpe Ace Aim Lab Edition
|
||||||
|
- ROG Keris Wireless
|
||||||
|
- ROG Keris II Ace
|
||||||
|
- ROG Strix Carry (P508)
|
||||||
|
- ROG Strix III Gladius III Aimpoint Wireless (P711)
|
||||||
|
- ROG Strix Impact III (P518)
|
||||||
|
- ROG Spatha X
|
||||||
|
- ROG Strix Impact II Wireless
|
||||||
|
- ROG Pugio
|
||||||
|
- ROG Pugio II
|
||||||
|
- TUF Gaming M4 Wireless (P306)
|
||||||
|
- TUF Gaming M3
|
||||||
|
- TUF Gaming M3 Gen II
|
||||||
|
- TUF Gaming M4 AIR
|
||||||
|
- TUF Gaming M5
|
||||||
|
- TX Gaming Mini
|
||||||
|
|
||||||
|
[@IceStormNG](https://github.com/IceStormNG) 👑 の貢献と研究に大いに感謝します。
|
||||||
|
|
||||||
|
### ⌨️ キーバインディング
|
||||||
|
|
||||||
|
- ``Fn + F5 / Fn + Shift + F5`` - パフォーマンスモードを前方/後方に切り替え
|
||||||
|
- ``Ctrl + Shift + F5 / Ctrl + Shift + Alt + F5`` - パフォーマンスモードを前方/後方に切り替え
|
||||||
|
- ``Ctrl + Shift + F12`` - G-Helperウィンドウを開く
|
||||||
|
- ``Ctrl + M1 / M2`` - ディスプレイの明るさを下げる/上げる
|
||||||
|
- ``Shift + M1 / M2`` - バックライトの明るさを下げる/上げる
|
||||||
|
- ``Fn + C`` - Fnロック
|
||||||
|
- ``Fn + Ctrl + F7 / F8`` - フリッカーフリーディミングを下げる/上げる
|
||||||
|
- ``Fn + Shift + F7 / F8`` - マトリックス/スラッシュライティングの明るさを下げる/上げる
|
||||||
|
- ``Fn + Shift + F7 / F8`` - スクリーンパッドの明るさを下げる/上げる
|
||||||
|
- ``Ctrl + Shift + F20`` - マイクをミュート
|
||||||
|
- ``Ctrl + Shift + Alt + F13`` - ディスプレイのリフレッシュレートを切り替え
|
||||||
|
- ``Ctrl + Shift + Alt + F14`` - エコGPUモード
|
||||||
|
- ``Ctrl + Shift + Alt + F15`` - スタンダードGPUモード
|
||||||
|
- ``Ctrl + Shift + Alt + F16`` - サイレント
|
||||||
|
- ``Ctrl + Shift + Alt + F17`` - バランス
|
||||||
|
- ``Ctrl + Shift + Alt + F18`` - ターボ
|
||||||
|
- ``Ctrl + Shift + Alt + F19`` - カスタム1 (存在する場合)
|
||||||
|
- ``Ctrl + Shift + Alt + F20`` - カスタム2 (存在する場合)
|
||||||
|
- [カスタムキーバインディング/ホットキー](https://github.com/seerge/g-helper/wiki/Power-user-settings#custom-hotkey-actions)
|
||||||
|
|
||||||
|
### 🎮ROG Allyバインディング
|
||||||
|
- ``M + DPad Left / Right`` - ディスプレイの明るさ
|
||||||
|
- ``M + DPad Up`` - タッチキーボード
|
||||||
|
- ``M + DPad Down`` - デスクトップを表示
|
||||||
|
- ``M + Y`` - AMDオーバーレイを切り替え
|
||||||
|
- ``M + X`` - スクリーンショット
|
||||||
|
- ``M + Right Stick Click`` - コントローラーモード
|
||||||
|
|
||||||
|
------------------
|
||||||
|
|
||||||
|
### 🔖 重要な注意事項
|
||||||
|
|
||||||
|
G-Helperはオペレーティングシステム、ファームウェア、またはドライバではありません。ハードウェアをリアルタイムで「実行」することはありません。
|
||||||
|
|
||||||
|
これは、製造元が作成し、BIOSに保存されている事前定義された操作モードの1つを選択し、オプションでいくつかの設定を行うアプリケーションです。Armoury Crateと同じように機能します。Asus System Control Interface「ドライバ」を使用してすべての機能を実現します。
|
||||||
|
|
||||||
|
Armoury Crateと同じモード/設定を使用する場合、デバイスのパフォーマンスや動作に違いはありません。
|
||||||
|
|
||||||
|
G-Helperの役割は、リモコンがテレビに対して果たす役割に似ています。
|
||||||
|
|
||||||
|
### 使用ライブラリとプロジェクト
|
||||||
|
- [Linux Kernel](https://github.com/torvalds/linux/blob/master/include/linux/platform_data/x86/asus-wmi.h) - ASUS ACPI/WMIインターフェースの基本エンドポイント
|
||||||
|
- [NvAPIWrapper](https://github.com/falahati/NvAPIWrapper) - Nvidia APIへのアクセス
|
||||||
|
- [Starlight](https://github.com/vddCore/Starlight) - アニメマトリックス通信プロトコル
|
||||||
|
- [UXTU](https://github.com/JamesCJ60/Universal-x86-Tuning-Utility) - Ryzen System Management Unitを使用したアンダーボルティング
|
||||||
|
- [AsusCtl](https://gitlab.com/asus-linux/asusctl) - インスピレーションと逆アセンブル
|
||||||
|
|
||||||
|
### 免責事項
|
||||||
|
"Asus"、"ROG"、"TUF"、および"Armoury Crate"は、AsusTek Computer, Inc.の商標であり、AsusTek Computerに属する資産に対して一切の権利を主張しません。これらの資産は純粋に情報提供の目的で使用されています。
|
||||||
|
|
||||||
|
ソフトウェアは「現状のまま」提供され、明示または黙示のいかなる保証もなく、商品性、特定の目的への適合性、および非侵害の保証を含みますが、これに限定されません。このソフトウェアの誤用は、システムの不安定性や誤動作を引き起こす可能性があります。
|
||||||
@@ -1,13 +1,11 @@
|
|||||||
# G-Helper - Lightweight control tool for Asus laptops
|
# G-Helper - Lightweight control tool for Asus laptops
|
||||||
[](https://u24.gov.ua/)
|
[](https://u24.gov.ua/)
|
||||||
[](https://GitHub.com/seerge/g-helper/releases/)
|
[](https://GitHub.com/seerge/g-helper/releases/)
|
||||||
[](https://GitHub.com/seerge/g-helper/releases/) [](https://GitHub.com/seerge/g-helper/stargazers/) <sup>[中文版点这里](https://github.com/seerge/g-helper/blob/main/docs/README.zh-CN.md)</sup>
|
[](https://GitHub.com/seerge/g-helper/releases/) [](https://GitHub.com/seerge/g-helper/stargazers/) <sup>[中文版点这里](https://github.com/seerge/g-helper/blob/main/docs/README.zh-CN.md)</sup> <sup>[日本語はこちら](https://github.com/seerge/g-helper/blob/main/docs/README.ja-JP.md)</sup>
|
||||||
|
|
||||||
Small and lightweight Armoury Crate alternative for Asus laptops offering almost same functionality without extra load and unnecessary services.
|
Small and lightweight Armoury Crate alternative for Asus laptops offering almost same functionality with a much smaller footprint. Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, Flow Z13, DUO, TUF Series, Strix or Scar Series, ProArt, Vivobook, Zenbook, ROG Ally or Ally X and many more!
|
||||||
|
|
||||||
Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, Flow Z13, TUF Series, Strix or Scar Series, ProArt, Vivobook, Zenbook, ROG Ally and many more!
|
# [:floppy_disk: Download](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
|
||||||
|
|
||||||
# [:floppy_disk:Download](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
|
|
||||||
**⭐ If you like the app - please spread the word about it online**
|
**⭐ If you like the app - please spread the word about it online**
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
@@ -17,7 +15,7 @@ Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13
|
|||||||
<a href="https://bit.ly/4c0ZWs9"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/paypal-eur.png" height="36" alt="PayPal EUR"></a>
|
<a href="https://bit.ly/4c0ZWs9"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/paypal-eur.png" height="36" alt="PayPal EUR"></a>
|
||||||
<a href="https://bit.ly/4aGTyW8"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/paypal-usd.png" height="36" alt="PayPal USD"></a>
|
<a href="https://bit.ly/4aGTyW8"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/paypal-usd.png" height="36" alt="PayPal USD"></a>
|
||||||
<a href="https://buy.stripe.com/8wM6pt8HbgK50tWbIK"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/stripe.png" height="36" alt="Stripe"></a>
|
<a href="https://buy.stripe.com/8wM6pt8HbgK50tWbIK"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/stripe.png" height="36" alt="Stripe"></a>
|
||||||
<a href="https://buy.stripe.com/8wM6pt8HbgK50tWbIK"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/alipay.png" height="36" alt="Alipay"></a>
|
<a href="https://buy.stripe.com/6oE29dg9D3Xj7Wo28b"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/alipay.png" height="36" alt="Alipay"></a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
[](https://GitHub.com/seerge/g-helper/releases/) [](https://GitHub.com/seerge/g-helper/stargazers/)
|
[](https://GitHub.com/seerge/g-helper/releases/) [](https://GitHub.com/seerge/g-helper/stargazers/)
|
||||||
|
|
||||||
|
|
||||||
语言: [English](https://github.com/seerge/g-helper#readme) | 中文
|
语言: [English](https://github.com/seerge/g-helper#readme) | 中文 | [日本語](https://github.com/seerge/g-helper/blob/main/docs/README.ja-JP.md)
|
||||||
|
|
||||||
适用于华硕(Asus)笔记本电脑的轻量级 Armoury Crate (奥创控制中心)替代品,在功能几乎相同的同时减少不必要的服务以减轻负载。
|
适用于华硕(Asus)笔记本电脑的轻量级 Armoury Crate (奥创控制中心)替代品,在功能几乎相同的同时减少不必要的服务以减轻负载。
|
||||||
G-helper兼容所有主流型号,例如 ROG 幻14、幻15、幻16、幻13、幻X、天选(飞行堡垒)系列、枪神/魔霸系列、创系列、灵耀系列、无畏系列、ROG Ally 等!
|
G-helper兼容所有主流型号,例如 ROG 幻14、幻15、幻16、幻13、幻X、天选(飞行堡垒)系列、枪神/魔霸系列、创系列、灵耀系列、无畏系列、ROG Ally 等!
|
||||||
|
|||||||
Reference in New Issue
Block a user