mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Compare commits
295 Commits
gpu_clock_
...
v0.128
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7a4d885e1b | ||
|
|
1c5e46131f | ||
|
|
49d5df9bac | ||
|
|
b8870ba3d5 | ||
|
|
2d7009d8fb | ||
|
|
46bfda3ad5 | ||
|
|
72b1842520 | ||
|
|
2f7b008557 | ||
|
|
97361e010e | ||
|
|
a30920ed70 | ||
|
|
4509b67ed9 | ||
|
|
e6fd618900 | ||
|
|
9a48e442d5 | ||
|
|
9e3afe73c6 | ||
|
|
d90da6571e | ||
|
|
19e1014f07 | ||
|
|
cd5806ed22 | ||
|
|
0c63e96d0f | ||
|
|
2271df172c | ||
|
|
5995079e17 | ||
|
|
49e6412c3c | ||
|
|
3316e88d38 | ||
|
|
5501c9c587 | ||
|
|
1d0bb67227 | ||
|
|
2dd5e93a7c | ||
|
|
31f19303ec | ||
|
|
eaa1df636d | ||
|
|
2c07a1922c | ||
|
|
0d4fc5d94a | ||
|
|
b641a87455 | ||
|
|
773be3cfd1 | ||
|
|
2b7a89b27f | ||
|
|
ba1607686f | ||
|
|
6375586ff9 | ||
|
|
17da3c7a5c | ||
|
|
9f836ff356 | ||
|
|
35355f6cb7 | ||
|
|
60be68b217 | ||
|
|
4fe8953a48 | ||
|
|
7845f278f8 | ||
|
|
03944dc208 | ||
|
|
3b6caf1a52 | ||
|
|
7ede6e3cb0 | ||
|
|
1a3ae449d6 | ||
|
|
78a384d760 | ||
|
|
26828f5c93 | ||
|
|
594bf061e1 | ||
|
|
aa32942c92 | ||
|
|
4a3108a5e0 | ||
|
|
82f5afa278 | ||
|
|
cd95802912 | ||
|
|
0fed74e069 | ||
|
|
8773e26219 | ||
|
|
45cce72af5 | ||
|
|
4a43710d50 | ||
|
|
8c12a230a8 | ||
|
|
50fed1ba2a | ||
|
|
63ba5dc9e8 | ||
|
|
b75d24b4ca | ||
|
|
9488a12dc2 | ||
|
|
701b3a126e | ||
|
|
e3335ef803 | ||
|
|
f16a6248cb | ||
|
|
9c0cd15115 | ||
|
|
524b84fc38 | ||
|
|
3bd59a4c4d | ||
|
|
96f07606f5 | ||
|
|
ea96af51b8 | ||
|
|
0669bcb2d1 | ||
|
|
67a42c4a21 | ||
|
|
de98588235 | ||
|
|
dffb239ea7 | ||
|
|
6a6c1f1455 | ||
|
|
bd3b2647b4 | ||
|
|
cebc42126a | ||
|
|
2985b2f31c | ||
|
|
335f5b38a5 | ||
|
|
4dd9daa95c | ||
|
|
10db075ece | ||
|
|
a800eae020 | ||
|
|
eb21fb2020 | ||
|
|
600e6a9404 | ||
|
|
4b0fbcbf10 | ||
|
|
215aec34b9 | ||
|
|
9cba686a3c | ||
|
|
43a7eb8b32 | ||
|
|
08eb867ae7 | ||
|
|
5c59c34a6c | ||
|
|
ae2dae8a97 | ||
|
|
c06969ba8f | ||
|
|
496d55f88b | ||
|
|
2b16372ec4 | ||
|
|
041aa40a6d | ||
|
|
55c1dd7e16 | ||
|
|
2ec2f669fb | ||
|
|
17ea6157a6 | ||
|
|
d5bdf180a8 | ||
|
|
a7d5ac5de9 | ||
|
|
b103623099 | ||
|
|
751f4d0331 | ||
|
|
1f536d8d84 | ||
|
|
c900121644 | ||
|
|
9ce038fe19 | ||
|
|
1f66038ab9 | ||
|
|
04d2eb53a2 | ||
|
|
f55a3c0824 | ||
|
|
8f0e4431e6 | ||
|
|
bff2676b64 | ||
|
|
e9e5fe1cc9 | ||
|
|
e6a78fc8f7 | ||
|
|
0e3efcf547 | ||
|
|
5c5b4f297c | ||
|
|
6f1c2ce7c1 | ||
|
|
e26feb7025 | ||
|
|
fef0042870 | ||
|
|
5a1a303ce7 | ||
|
|
5849dc0ce9 | ||
|
|
31ca13692b | ||
|
|
49cfbc6235 | ||
|
|
b577e5ed90 | ||
|
|
3c9dca0c62 | ||
|
|
818b87fe87 | ||
|
|
e177207799 | ||
|
|
df4cf40a5b | ||
|
|
23082d59ba | ||
|
|
708170b1ef | ||
|
|
3a0131a577 | ||
|
|
d1f4da5473 | ||
|
|
91967638af | ||
|
|
d9a972f6a9 | ||
|
|
ce4c9bb48c | ||
|
|
26c74fa1df | ||
|
|
4ae3fb4e3d | ||
|
|
20e7dd96a1 | ||
|
|
d36cd409a4 | ||
|
|
082eceed9a | ||
|
|
46c91d1956 | ||
|
|
edfb829988 | ||
|
|
83cb28e99c | ||
|
|
957916bfdf | ||
|
|
2f98606a7d | ||
|
|
c791421c3e | ||
|
|
fa79a72247 | ||
|
|
831f7b8989 | ||
|
|
77800475cb | ||
|
|
96553a162c | ||
|
|
d1e987f4da | ||
|
|
a1fb740c27 | ||
|
|
cff47002e1 | ||
|
|
c34ba9c620 | ||
|
|
3da2d042c8 | ||
|
|
b93499c20d | ||
|
|
feb7f1915e | ||
|
|
bd7f494830 | ||
|
|
1fc5095a65 | ||
|
|
920ed5e176 | ||
|
|
fce9cddd02 | ||
|
|
3332bd4b36 | ||
|
|
56289abc36 | ||
|
|
9be02a102d | ||
|
|
e1e94e1118 | ||
|
|
2ffd08e754 | ||
|
|
0378b65763 | ||
|
|
5dd3760e90 | ||
|
|
e7eb7fab8a | ||
|
|
ce128adc4f | ||
|
|
a794f8ed5f | ||
|
|
9d30f2f83e | ||
|
|
b93f1a385b | ||
|
|
6bb4ba4119 | ||
|
|
178cb04002 | ||
|
|
2d41cd62a8 | ||
|
|
f9e4e89c15 | ||
|
|
02717c47be | ||
|
|
cc010053b2 | ||
|
|
9bcc0fccd7 | ||
|
|
d8df9b03bf | ||
|
|
abfa2388e4 | ||
|
|
670f91efa8 | ||
|
|
70d442c409 | ||
|
|
5f018fa7b5 | ||
|
|
94f0b900de | ||
|
|
e17ff8fc94 | ||
|
|
bd4ee506ac | ||
|
|
8c5b224dc2 | ||
|
|
f111b5449e | ||
|
|
47f86d222f | ||
|
|
f9b7073dd7 | ||
|
|
a6c11f2ce3 | ||
|
|
46fad77bac | ||
|
|
22a96fcce0 | ||
|
|
6df0dc8e9e | ||
|
|
ee7c0c6dab | ||
|
|
6e086da024 | ||
|
|
292d2a8ebc | ||
|
|
52e78a8665 | ||
|
|
a97bfc2a58 | ||
|
|
15001d987a | ||
|
|
ecbeee82d8 | ||
|
|
e6c59283c1 | ||
|
|
495b695589 | ||
|
|
6ac7d7cc4d | ||
|
|
0c328b1fda | ||
|
|
bd8a670424 | ||
|
|
5f1139f132 | ||
|
|
188b01c158 | ||
|
|
8307fabe15 | ||
|
|
cead02eed2 | ||
|
|
fabf63655b | ||
|
|
da2f887c68 | ||
|
|
26dbd77b05 | ||
|
|
63382b748f | ||
|
|
1e2a5b0479 | ||
|
|
341e747f7e | ||
|
|
348f5a8ea1 | ||
|
|
c0b6c444b4 | ||
|
|
f8d07bad1b | ||
|
|
a138ebe0e7 | ||
|
|
2260b01480 | ||
|
|
9761f10398 | ||
|
|
984cb2f53e | ||
|
|
7c80a02cef | ||
|
|
f545d48179 | ||
|
|
07df99aaae | ||
|
|
6f60e1af1f | ||
|
|
e0080ca879 | ||
|
|
eaf2483558 | ||
|
|
8cac276925 | ||
|
|
499c83e3b0 | ||
|
|
ba0764aa85 | ||
|
|
53c1ee4c71 | ||
|
|
fe1891a2a9 | ||
|
|
0ffb9f11d4 | ||
|
|
307cc81f18 | ||
|
|
2384649e09 | ||
|
|
4952675749 | ||
|
|
e2596ed9cb | ||
|
|
190786a15a | ||
|
|
9bcf3f36f8 | ||
|
|
26e1ae4d7b | ||
|
|
98af882970 | ||
|
|
5835e71947 | ||
|
|
f46580bd1b | ||
|
|
a282da6fd7 | ||
|
|
1420d17413 | ||
|
|
b7b6270565 | ||
|
|
49eb45749a | ||
|
|
ec709f37e8 | ||
|
|
615c58ac3c | ||
|
|
20d698febd | ||
|
|
3bb6bf3228 | ||
|
|
9674f034dd | ||
|
|
f11ed679d9 | ||
|
|
2bb5087a63 | ||
|
|
e4aa5f0283 | ||
|
|
18b664a123 | ||
|
|
1d03eb064a | ||
|
|
0ad058ec4a | ||
|
|
18b54886ed | ||
|
|
f79a91fb78 | ||
|
|
584755ea93 | ||
|
|
3652e4d0ff | ||
|
|
0069234563 | ||
|
|
d92a1880ee | ||
|
|
dd72e2b573 | ||
|
|
10714d1002 | ||
|
|
daad1bca53 | ||
|
|
c82ec8a005 | ||
|
|
9fbea0a3d3 | ||
|
|
ed06247206 | ||
|
|
1e7bd816f2 | ||
|
|
592c4aa07a | ||
|
|
59f3aa9af4 | ||
|
|
8df825e250 | ||
|
|
a985cc5bbb | ||
|
|
bd7985e817 | ||
|
|
8706f9f03c | ||
|
|
5c6a587745 | ||
|
|
de4905f84f | ||
|
|
121a9224e9 | ||
|
|
af9626e385 | ||
|
|
6b3db926fc | ||
|
|
8f8be7a13e | ||
|
|
12450dbba4 | ||
|
|
d89420e0f1 | ||
|
|
ddc13e0dec | ||
|
|
61a3d782e8 | ||
|
|
b1c8aa97c8 | ||
|
|
3a50ee1784 | ||
|
|
a69ce3592f | ||
|
|
b49ae96dfe | ||
|
|
982f2e8e32 | ||
|
|
e90f19e3e2 | ||
|
|
6d6a9c68f2 | ||
|
|
8138e44cdd |
@@ -2,7 +2,9 @@
|
|||||||
using NAudio.Wave;
|
using NAudio.Wave;
|
||||||
using Starlight.AnimeMatrix;
|
using Starlight.AnimeMatrix;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using System.Drawing.Drawing2D;
|
||||||
using System.Drawing.Imaging;
|
using System.Drawing.Imaging;
|
||||||
|
using System.IO;
|
||||||
using System.Timers;
|
using System.Timers;
|
||||||
|
|
||||||
namespace GHelper.AnimeMatrix
|
namespace GHelper.AnimeMatrix
|
||||||
@@ -14,12 +16,12 @@ namespace GHelper.AnimeMatrix
|
|||||||
SettingsForm settings;
|
SettingsForm settings;
|
||||||
|
|
||||||
System.Timers.Timer matrixTimer = default!;
|
System.Timers.Timer matrixTimer = default!;
|
||||||
AnimeMatrixDevice? mat;
|
public AnimeMatrixDevice? device;
|
||||||
|
|
||||||
double[]? AudioValues;
|
double[]? AudioValues;
|
||||||
WasapiCapture? AudioDevice;
|
WasapiCapture? AudioDevice;
|
||||||
|
|
||||||
public bool IsValid => mat != null;
|
public bool IsValid => device != null;
|
||||||
|
|
||||||
private long lastPresent;
|
private long lastPresent;
|
||||||
private List<double> maxes = new List<double>();
|
private List<double> maxes = new List<double>();
|
||||||
@@ -30,14 +32,14 @@ namespace GHelper.AnimeMatrix
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
mat = new AnimeMatrixDevice();
|
device = new AnimeMatrixDevice();
|
||||||
Task.Run(mat.WakeUp);
|
Task.Run(device.WakeUp);
|
||||||
matrixTimer = new System.Timers.Timer(100);
|
matrixTimer = new System.Timers.Timer(100);
|
||||||
matrixTimer.Elapsed += MatrixTimer_Elapsed;
|
matrixTimer.Elapsed += MatrixTimer_Elapsed;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
mat = null;
|
device = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -65,20 +67,28 @@ namespace GHelper.AnimeMatrix
|
|||||||
StopMatrixTimer();
|
StopMatrixTimer();
|
||||||
StopMatrixAudio();
|
StopMatrixAudio();
|
||||||
|
|
||||||
mat.SetProvider();
|
try
|
||||||
|
{
|
||||||
|
device.SetProvider();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.WriteLine(ex.Message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (wakeUp && AppConfig.ContainsModel("401")) mat.WakeUp();
|
if (wakeUp && AppConfig.ContainsModel("401")) device.WakeUp();
|
||||||
|
|
||||||
if (brightness == 0 || (auto && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online))
|
if (brightness == 0 || (auto && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online))
|
||||||
{
|
{
|
||||||
mat.SetDisplayState(false);
|
device.SetDisplayState(false);
|
||||||
mat.SetDisplayState(false); // some devices are dumb
|
device.SetDisplayState(false); // some devices are dumb
|
||||||
Logger.WriteLine("Matrix Off");
|
Logger.WriteLine("Matrix Off");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mat.SetDisplayState(true);
|
device.SetDisplayState(true);
|
||||||
mat.SetBrightness((BrightnessMode)brightness);
|
device.SetBrightness((BrightnessMode)brightness);
|
||||||
|
|
||||||
switch (running)
|
switch (running)
|
||||||
{
|
{
|
||||||
@@ -92,7 +102,7 @@ namespace GHelper.AnimeMatrix
|
|||||||
SetMatrixAudio();
|
SetMatrixAudio();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
mat.SetBuiltInAnimation(true, animation);
|
device.SetBuiltInAnimation(true, animation);
|
||||||
Logger.WriteLine("Matrix builtin " + animation.AsByte);
|
Logger.WriteLine("Matrix builtin " + animation.AsByte);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -121,10 +131,10 @@ namespace GHelper.AnimeMatrix
|
|||||||
switch (AppConfig.Get("matrix_running"))
|
switch (AppConfig.Get("matrix_running"))
|
||||||
{
|
{
|
||||||
case 2:
|
case 2:
|
||||||
mat.PresentNextFrame();
|
device.PresentNextFrame();
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
mat.PresentClock();
|
device.PresentClock();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,7 +143,7 @@ namespace GHelper.AnimeMatrix
|
|||||||
|
|
||||||
public void SetMatrixClock()
|
public void SetMatrixClock()
|
||||||
{
|
{
|
||||||
mat.SetBuiltInAnimation(false);
|
device.SetBuiltInAnimation(false);
|
||||||
StartMatrixTimer(1000);
|
StartMatrixTimer(1000);
|
||||||
Logger.WriteLine("Matrix Clock");
|
Logger.WriteLine("Matrix Clock");
|
||||||
}
|
}
|
||||||
@@ -163,7 +173,7 @@ namespace GHelper.AnimeMatrix
|
|||||||
{
|
{
|
||||||
if (!IsValid) return;
|
if (!IsValid) return;
|
||||||
|
|
||||||
mat.SetBuiltInAnimation(false);
|
device.SetBuiltInAnimation(false);
|
||||||
StopMatrixTimer();
|
StopMatrixTimer();
|
||||||
StopMatrixAudio();
|
StopMatrixAudio();
|
||||||
|
|
||||||
@@ -232,8 +242,8 @@ namespace GHelper.AnimeMatrix
|
|||||||
for (int x = 0; x < 2 - (y % 2); x++)
|
for (int x = 0; x < 2 - (y % 2); x++)
|
||||||
{
|
{
|
||||||
//color = (byte)(Math.Min(1,(h - y - 2)*2) * 255);
|
//color = (byte)(Math.Min(1,(h - y - 2)*2) * 255);
|
||||||
mat.SetLedPlanar(x + dx, dy + y, (byte)(h * 255 / 30));
|
device.SetLedPlanar(x + dx, dy + y, (byte)(h * 255 / 30));
|
||||||
mat.SetLedPlanar(x + dx, dy - y, 255);
|
device.SetLedPlanar(x + dx, dy - y, 255);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -243,7 +253,7 @@ namespace GHelper.AnimeMatrix
|
|||||||
if (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastPresent) < 70) return;
|
if (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastPresent) < 70) return;
|
||||||
lastPresent = DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
lastPresent = DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
||||||
|
|
||||||
mat.Clear();
|
device.Clear();
|
||||||
|
|
||||||
int size = 20;
|
int size = 20;
|
||||||
double[] bars = new double[size];
|
double[] bars = new double[size];
|
||||||
@@ -261,7 +271,7 @@ namespace GHelper.AnimeMatrix
|
|||||||
|
|
||||||
for (int i = 0; i < size; i++) DrawBar(20 - i, bars[i] * 20 / maxAverage);
|
for (int i = 0; i < size; i++) DrawBar(20 - i, bars[i] * 20 / maxAverage);
|
||||||
|
|
||||||
mat.Present();
|
device.Present();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -296,22 +306,30 @@ namespace GHelper.AnimeMatrix
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetMatrixPicture(string fileName)
|
public void SetMatrixPicture(string fileName, bool visualise = true)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (!IsValid) return;
|
if (!IsValid) return;
|
||||||
StopMatrixTimer();
|
StopMatrixTimer();
|
||||||
|
|
||||||
Image image;
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var fs = new FileStream(fileName, FileMode.Open))
|
using (var fs = new FileStream(fileName, FileMode.Open))
|
||||||
|
//using (var ms = new MemoryStream())
|
||||||
{
|
{
|
||||||
var ms = new MemoryStream();
|
/*
|
||||||
|
ms.SetLength(0);
|
||||||
fs.CopyTo(ms);
|
fs.CopyTo(ms);
|
||||||
ms.Position = 0;
|
ms.Position = 0;
|
||||||
image = Image.FromStream(ms);
|
*/
|
||||||
|
using (Image image = Image.FromStream(fs))
|
||||||
|
{
|
||||||
|
ProcessPicture(image);
|
||||||
|
Logger.WriteLine("Matrix " + fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
fs.Close();
|
||||||
|
if (visualise) settings.VisualiseMatrix(fileName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
@@ -320,30 +338,60 @@ namespace GHelper.AnimeMatrix
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mat.SetBuiltInAnimation(false);
|
}
|
||||||
mat.ClearFrames();
|
|
||||||
|
protected void ProcessPicture(Image image)
|
||||||
|
{
|
||||||
|
device.SetBuiltInAnimation(false);
|
||||||
|
device.ClearFrames();
|
||||||
|
|
||||||
|
int matrixX = AppConfig.Get("matrix_x", 0);
|
||||||
|
int matrixY = AppConfig.Get("matrix_y", 0);
|
||||||
|
int matrixZoom = AppConfig.Get("matrix_zoom", 100);
|
||||||
|
int matrixSpeed = AppConfig.Get("matrix_speed", 50);
|
||||||
|
|
||||||
|
MatrixRotation rotation = (MatrixRotation)AppConfig.Get("matrix_rotation", 0);
|
||||||
|
|
||||||
|
InterpolationMode matrixQuality = (InterpolationMode)AppConfig.Get("matrix_quality", 0);
|
||||||
|
|
||||||
|
|
||||||
FrameDimension dimension = new FrameDimension(image.FrameDimensionsList[0]);
|
FrameDimension dimension = new FrameDimension(image.FrameDimensionsList[0]);
|
||||||
int frameCount = image.GetFrameCount(dimension);
|
int frameCount = image.GetFrameCount(dimension);
|
||||||
|
|
||||||
if (frameCount > 1)
|
if (frameCount > 1)
|
||||||
{
|
{
|
||||||
|
var delayPropertyBytes = image.GetPropertyItem(0x5100).Value;
|
||||||
|
var frameDelay = BitConverter.ToInt32(delayPropertyBytes) * 10;
|
||||||
|
|
||||||
for (int i = 0; i < frameCount; i++)
|
for (int i = 0; i < frameCount; i++)
|
||||||
{
|
{
|
||||||
image.SelectActiveFrame(dimension, i);
|
image.SelectActiveFrame(dimension, i);
|
||||||
mat.GenerateFrame(image);
|
|
||||||
mat.AddFrame();
|
if (rotation == MatrixRotation.Planar)
|
||||||
|
device.GenerateFrame(image, matrixZoom, matrixX, matrixY, matrixQuality);
|
||||||
|
else
|
||||||
|
device.GenerateFrameDiagonal(image, matrixZoom, matrixX, matrixY, matrixQuality);
|
||||||
|
|
||||||
|
device.AddFrame();
|
||||||
}
|
}
|
||||||
|
|
||||||
StartMatrixTimer();
|
|
||||||
Logger.WriteLine("Matrix GIF " + fileName);
|
Logger.WriteLine("GIF Delay:" + frameDelay);
|
||||||
|
StartMatrixTimer(Math.Max(matrixSpeed, frameDelay));
|
||||||
|
|
||||||
|
//image.SelectActiveFrame(dimension, 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mat.GenerateFrame(image);
|
if (rotation == MatrixRotation.Planar)
|
||||||
mat.Present();
|
device.GenerateFrame(image, matrixZoom, matrixX, matrixY, matrixQuality);
|
||||||
Logger.WriteLine("Matrix " + fileName);
|
else
|
||||||
|
device.GenerateFrameDiagonal(image, matrixZoom, matrixX, matrixY, matrixQuality);
|
||||||
|
|
||||||
|
device.Present();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
using GHelper.AnimeMatrix.Communication;
|
using GHelper.AnimeMatrix.Communication;
|
||||||
using System.Drawing.Drawing2D;
|
using System.Drawing.Drawing2D;
|
||||||
using System.Drawing.Text;
|
using System.Drawing.Text;
|
||||||
using System.Globalization;
|
|
||||||
using System.Management;
|
using System.Management;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
@@ -51,6 +50,12 @@ namespace Starlight.AnimeMatrix
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum MatrixRotation
|
||||||
|
{
|
||||||
|
Planar,
|
||||||
|
Diagonal
|
||||||
|
}
|
||||||
|
|
||||||
internal class AnimeMatrixPacket : Packet
|
internal class AnimeMatrixPacket : Packet
|
||||||
{
|
{
|
||||||
public AnimeMatrixPacket(byte[] command)
|
public AnimeMatrixPacket(byte[] command)
|
||||||
@@ -77,6 +82,7 @@ namespace Starlight.AnimeMatrix
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public class AnimeMatrixDevice : Device
|
public class AnimeMatrixDevice : Device
|
||||||
{
|
{
|
||||||
int UpdatePageLength = 490;
|
int UpdatePageLength = 490;
|
||||||
@@ -86,35 +92,36 @@ namespace Starlight.AnimeMatrix
|
|||||||
List<byte[]> frames = new List<byte[]>();
|
List<byte[]> frames = new List<byte[]>();
|
||||||
|
|
||||||
public int MaxRows = 61;
|
public int MaxRows = 61;
|
||||||
//public int FullRows = 11;
|
|
||||||
//public int FullEvenRows = -1;
|
|
||||||
|
|
||||||
public int dx = 0;
|
|
||||||
//Shifts the whole frame to the left or right to align with the diagonal cut
|
|
||||||
public int frameShiftX = 0;
|
|
||||||
public int MaxColumns = 34;
|
public int MaxColumns = 34;
|
||||||
|
public int LedStart = 0;
|
||||||
|
|
||||||
|
public int FullRows = 11;
|
||||||
|
|
||||||
private int frameIndex = 0;
|
private int frameIndex = 0;
|
||||||
|
|
||||||
private static AnimeType _model = AnimeType.GA402;
|
private static AnimeType _model = AnimeType.GA402;
|
||||||
|
|
||||||
|
[System.Runtime.InteropServices.DllImport("gdi32.dll")]
|
||||||
|
private static extern IntPtr AddFontMemResourceEx(IntPtr pbFont, uint cbFont, IntPtr pdv, [System.Runtime.InteropServices.In] ref uint pcFonts);
|
||||||
|
private PrivateFontCollection fonts = new PrivateFontCollection();
|
||||||
|
|
||||||
public AnimeMatrixDevice()
|
public AnimeMatrixDevice() : base(0x0B05, 0x193B, 640)
|
||||||
: base(0x0B05, 0x193B, 640)
|
|
||||||
{
|
{
|
||||||
string model = GetModel();
|
string model = GetModel();
|
||||||
|
|
||||||
if (model.Contains("401"))
|
if (model.Contains("401"))
|
||||||
{
|
{
|
||||||
|
|
||||||
_model = AnimeType.GA401;
|
_model = AnimeType.GA401;
|
||||||
|
|
||||||
MaxColumns = 33;
|
MaxColumns = 33;
|
||||||
dx = 1;
|
|
||||||
|
|
||||||
MaxRows = 55;
|
MaxRows = 55;
|
||||||
LedCount = 1245;
|
LedCount = 1245;
|
||||||
|
|
||||||
UpdatePageLength = 410;
|
UpdatePageLength = 410;
|
||||||
|
|
||||||
|
FullRows = 5;
|
||||||
|
|
||||||
|
LedStart = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (model.Contains("GU604"))
|
if (model.Contains("GU604"))
|
||||||
@@ -124,14 +131,28 @@ namespace Starlight.AnimeMatrix
|
|||||||
MaxColumns = 39;
|
MaxColumns = 39;
|
||||||
MaxRows = 92;
|
MaxRows = 92;
|
||||||
LedCount = 1711;
|
LedCount = 1711;
|
||||||
frameShiftX = -5;
|
|
||||||
UpdatePageLength = 630;
|
UpdatePageLength = 630;
|
||||||
|
|
||||||
|
FullRows = 9;
|
||||||
}
|
}
|
||||||
|
|
||||||
_displayBuffer = new byte[LedCount];
|
_displayBuffer = new byte[LedCount];
|
||||||
|
|
||||||
|
LoadMFont();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void LoadMFont()
|
||||||
|
{
|
||||||
|
byte[] fontData = GHelper.Properties.Resources.MFont;
|
||||||
|
IntPtr fontPtr = System.Runtime.InteropServices.Marshal.AllocCoTaskMem(fontData.Length);
|
||||||
|
System.Runtime.InteropServices.Marshal.Copy(fontData, 0, fontPtr, fontData.Length);
|
||||||
|
uint dummy = 0;
|
||||||
|
|
||||||
|
fonts.AddMemoryFont(fontPtr, GHelper.Properties.Resources.MFont.Length);
|
||||||
|
AddFontMemResourceEx(fontPtr, (uint)GHelper.Properties.Resources.MFont.Length, IntPtr.Zero, ref dummy);
|
||||||
|
System.Runtime.InteropServices.Marshal.FreeCoTaskMem(fontPtr);
|
||||||
|
}
|
||||||
|
|
||||||
public string GetModel()
|
public string GetModel()
|
||||||
{
|
{
|
||||||
@@ -175,28 +196,7 @@ namespace Starlight.AnimeMatrix
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static int FirstX(int y)
|
public int Width()
|
||||||
{
|
|
||||||
switch (_model)
|
|
||||||
{
|
|
||||||
case AnimeType.GA401:
|
|
||||||
if (y < 5)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return (y + 1) / 2 - 3;
|
|
||||||
}
|
|
||||||
case AnimeType.GU604:
|
|
||||||
return (int)Math.Ceiling(Math.Max(0, y - 9) / 2F);
|
|
||||||
|
|
||||||
default:
|
|
||||||
return (int)Math.Ceiling(Math.Max(0, y - 11) / 2F);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int Width(int y)
|
|
||||||
{
|
{
|
||||||
switch (_model)
|
switch (_model)
|
||||||
{
|
{
|
||||||
@@ -209,7 +209,30 @@ namespace Starlight.AnimeMatrix
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int Pitch(int y)
|
public int FirstX(int y)
|
||||||
|
{
|
||||||
|
switch (_model)
|
||||||
|
{
|
||||||
|
case AnimeType.GA401:
|
||||||
|
if (y < 5 && y % 2 == 0)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return (int)Math.Ceiling(Math.Max(0, y - 5) / 2F);
|
||||||
|
case AnimeType.GU604:
|
||||||
|
if (y < 9 && y % 2 == 0)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return (int)Math.Ceiling(Math.Max(0, y - 9) / 2F);
|
||||||
|
|
||||||
|
default:
|
||||||
|
return (int)Math.Ceiling(Math.Max(0, y - 11) / 2F);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public int Pitch(int y)
|
||||||
{
|
{
|
||||||
switch (_model)
|
switch (_model)
|
||||||
{
|
{
|
||||||
@@ -226,15 +249,38 @@ namespace Starlight.AnimeMatrix
|
|||||||
default:
|
default:
|
||||||
return 36 - y / 2;
|
return 36 - y / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case AnimeType.GU604:
|
||||||
|
switch (y)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
case 2:
|
||||||
|
case 4:
|
||||||
|
case 6:
|
||||||
|
case 8:
|
||||||
|
return 38;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
case 3:
|
||||||
|
case 5:
|
||||||
|
case 7:
|
||||||
|
case 9:
|
||||||
|
return 39;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return Width() - FirstX(y);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return Width(y) - FirstX(y);
|
return Width() - FirstX(y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public int RowToLinearAddress(int y)
|
public int RowToLinearAddress(int y)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = LedStart;
|
||||||
for (var i = 0; i < y; i++)
|
for (var i = 0; i < y; i++)
|
||||||
ret += Pitch(i);
|
ret += Pitch(i);
|
||||||
|
|
||||||
@@ -245,10 +291,21 @@ namespace Starlight.AnimeMatrix
|
|||||||
{
|
{
|
||||||
if (!IsRowInRange(y)) return;
|
if (!IsRowInRange(y)) return;
|
||||||
|
|
||||||
if (x >= FirstX(y) && x < Width(y))
|
if (x >= FirstX(y) && x < Width())
|
||||||
SetLedLinear(RowToLinearAddress(y) - FirstX(y) + x + dx + frameShiftX, value);
|
SetLedLinear(RowToLinearAddress(y) - FirstX(y) + x, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetLedDiagonal(int x, int y, byte color, int deltaX = 0, int deltaY = 0)
|
||||||
|
{
|
||||||
|
x += deltaX;
|
||||||
|
y -= deltaY;
|
||||||
|
|
||||||
|
int plX = (x - y) / 2;
|
||||||
|
int plY = x + y;
|
||||||
|
SetLedPlanar(plX, plY, color);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void WakeUp()
|
public void WakeUp()
|
||||||
{
|
{
|
||||||
Set(Packet<AnimeMatrixPacket>(Encoding.ASCII.GetBytes("ASUS Tech.Inc.")));
|
Set(Packet<AnimeMatrixPacket>(Encoding.ASCII.GetBytes("ASUS Tech.Inc.")));
|
||||||
@@ -342,57 +399,77 @@ namespace Starlight.AnimeMatrix
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void PresentClock()
|
private void SetBitmapDiagonal(Bitmap bmp, int deltaX = 0, int deltaY = 0)
|
||||||
{
|
{
|
||||||
int second = DateTime.Now.Second;
|
for (int y = 0; y < bmp.Height; y++)
|
||||||
string time;
|
{
|
||||||
|
for (int x = 0; x < bmp.Width; x++)
|
||||||
if (CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern.Contains("H"))
|
{
|
||||||
time = DateTime.Now.ToString("H" + ((second % 2 == 0) ? ":" : " ") + "mm");
|
var pixel = bmp.GetPixel(x, y);
|
||||||
else
|
var color = (pixel.R + pixel.G + pixel.B) / 3;
|
||||||
time = DateTime.Now.ToString("h" + ((second % 2 == 0) ? ":" : " ") + "mmtt");
|
if (color > 20)
|
||||||
|
SetLedDiagonal(x, y, (byte)color, deltaX + (FullRows / 2) + 1, deltaY - (FullRows / 2) - 1);
|
||||||
if (_model == AnimeType.GA401)
|
}
|
||||||
PresentText(time);
|
}
|
||||||
else
|
|
||||||
PresentTextDiagonal(time);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void SetBitmapLinear(Bitmap bmp)
|
||||||
|
|
||||||
public void PresentText(string text1, string text2 = "")
|
|
||||||
{
|
{
|
||||||
using (Bitmap bmp = new Bitmap(MaxColumns * 3, MaxRows))
|
for (int y = 0; y < bmp.Height; y++)
|
||||||
|
{
|
||||||
|
for (int x = 0; x < bmp.Width; x++)
|
||||||
|
if (x % 2 == y % 2)
|
||||||
|
{
|
||||||
|
var pixel = bmp.GetPixel(x, y);
|
||||||
|
var color = (pixel.R + pixel.G + pixel.B) / 3;
|
||||||
|
if (color > 20)
|
||||||
|
SetLedPlanar(x / 2, y, (byte)color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Text(string text, float fontSize = 10, int x = 0, int y = 0)
|
||||||
|
{
|
||||||
|
|
||||||
|
int width = MaxRows - FullRows;
|
||||||
|
int height = MaxRows - FullRows;
|
||||||
|
int textHeight, textWidth;
|
||||||
|
|
||||||
|
using (Bitmap bmp = new Bitmap(width, height))
|
||||||
{
|
{
|
||||||
using (Graphics g = Graphics.FromImage(bmp))
|
using (Graphics g = Graphics.FromImage(bmp))
|
||||||
{
|
{
|
||||||
g.CompositingQuality = CompositingQuality.HighQuality;
|
g.CompositingQuality = CompositingQuality.HighQuality;
|
||||||
g.SmoothingMode = SmoothingMode.AntiAlias;
|
g.SmoothingMode = SmoothingMode.AntiAlias;
|
||||||
|
g.TextRenderingHint = TextRenderingHint.SingleBitPerPixel;
|
||||||
|
|
||||||
using (Font font = new Font("Consolas", 21F, FontStyle.Regular, GraphicsUnit.Pixel))
|
using (Font font = new Font(fonts.Families[0], fontSize, FontStyle.Regular, GraphicsUnit.Pixel))
|
||||||
{
|
{
|
||||||
SizeF textSize = g.MeasureString(text1, font);
|
SizeF textSize = g.MeasureString(text, font);
|
||||||
g.DrawString(text1, font, Brushes.White, (MaxColumns * 3 - textSize.Width) + 3, -4);
|
textHeight = (int)textSize.Height;
|
||||||
|
textWidth = (int)textSize.Width;
|
||||||
|
g.DrawString(text, font, Brushes.White, x, height - y);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (text2.Length > 0)
|
|
||||||
using (Font font = new Font("Consolas", 18F, GraphicsUnit.Pixel))
|
|
||||||
{
|
|
||||||
SizeF textSize = g.MeasureString(text2, font);
|
|
||||||
g.DrawString(text2, font, Brushes.White, (MaxColumns * 3 - textSize.Width) + 1, 25);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GenerateFrame(bmp, InterpolationMode.Bicubic);
|
SetBitmapDiagonal(bmp, (width - textWidth), height);
|
||||||
Present();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void GenerateFrame(Image image, InterpolationMode interpolation = InterpolationMode.High)
|
public void PresentClock()
|
||||||
{
|
{
|
||||||
|
string second = (DateTime.Now.Second % 2 == 0) ? ":" : " ";
|
||||||
|
string time = DateTime.Now.ToString("HH" + second + "mm");
|
||||||
|
|
||||||
|
Clear();
|
||||||
|
Text(time, 15, 0, 25);
|
||||||
|
Text(DateTime.Now.ToString("yy'. 'MM'. 'dd"), 11.5F, 0, 14);
|
||||||
|
Present();
|
||||||
|
|
||||||
|
}
|
||||||
|
public void GenerateFrame(Image image, float zoom = 100, int panX = 0, int panY = 0, InterpolationMode quality = InterpolationMode.Default)
|
||||||
|
{
|
||||||
int width = MaxColumns / 2 * 6;
|
int width = MaxColumns / 2 * 6;
|
||||||
int height = MaxRows;
|
int height = MaxRows;
|
||||||
|
|
||||||
@@ -402,99 +479,55 @@ namespace Starlight.AnimeMatrix
|
|||||||
|
|
||||||
using (Bitmap bmp = new Bitmap(targetWidth, height))
|
using (Bitmap bmp = new Bitmap(targetWidth, height))
|
||||||
{
|
{
|
||||||
scale = Math.Min((float)width / (float)image.Width, (float)height / (float)image.Height);
|
scale = Math.Min((float)width / (float)image.Width, (float)height / (float)image.Height) * zoom / 100;
|
||||||
|
|
||||||
using (var graph = Graphics.FromImage(bmp))
|
using (var graph = Graphics.FromImage(bmp))
|
||||||
{
|
{
|
||||||
var scaleWidth = (float)(image.Width * scale);
|
var scaleWidth = (float)(image.Width * scale);
|
||||||
var scaleHeight = (float)(image.Height * scale);
|
var scaleHeight = (float)(image.Height * scale);
|
||||||
|
|
||||||
graph.InterpolationMode = interpolation;
|
graph.InterpolationMode = quality;
|
||||||
graph.CompositingQuality = CompositingQuality.HighQuality;
|
graph.CompositingQuality = CompositingQuality.HighQuality;
|
||||||
graph.SmoothingMode = SmoothingMode.AntiAlias;
|
graph.SmoothingMode = SmoothingMode.AntiAlias;
|
||||||
|
|
||||||
graph.DrawImage(image, (float)Math.Round(targetWidth - scaleWidth * targetWidth / width), 0, (float)Math.Round(scaleWidth * targetWidth / width), scaleHeight);
|
graph.DrawImage(image, (float)Math.Round(targetWidth - (scaleWidth + panX) * targetWidth / width), -panY, (float)Math.Round(scaleWidth * targetWidth / width), scaleHeight);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int y = 0; y < bmp.Height; y++)
|
Clear();
|
||||||
{
|
SetBitmapLinear(bmp);
|
||||||
for (int x = 0; x < bmp.Width; x++)
|
|
||||||
if (x % 2 == (y + dx) % 2)
|
|
||||||
{
|
|
||||||
var pixel = bmp.GetPixel(x, y);
|
|
||||||
var color = (pixel.R + pixel.G + pixel.B) / 3;
|
|
||||||
if (color < 10) color = 0;
|
|
||||||
SetLedPlanar(x / 2, y, (byte)color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void GenerateFrameDiagonal(Image image, float zoom = 100, int panX = 0, int panY = 0, InterpolationMode quality = InterpolationMode.Default)
|
||||||
public void SetLedDiagonal(int x, int y, byte color, int delta = 10)
|
|
||||||
{
|
{
|
||||||
//x+=delta;
|
int width = MaxRows - FullRows;
|
||||||
y -= delta;
|
int height = MaxRows - FullRows*2;
|
||||||
|
float scale;
|
||||||
|
|
||||||
int dx = (x - y) / 2;
|
using (Bitmap bmp = new Bitmap(width, height))
|
||||||
int dy = x + y;
|
|
||||||
SetLedPlanar(dx, dy, color);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void PresentTextDiagonal(string text)
|
|
||||||
{
|
|
||||||
|
|
||||||
Clear();
|
|
||||||
|
|
||||||
|
|
||||||
InstalledFontCollection installedFontCollection = new InstalledFontCollection();
|
|
||||||
|
|
||||||
|
|
||||||
string familyName;
|
|
||||||
string familyList = "";
|
|
||||||
FontFamily[] fontFamilies;
|
|
||||||
// Get the array of FontFamily objects.
|
|
||||||
fontFamilies = installedFontCollection.Families;
|
|
||||||
|
|
||||||
int count = fontFamilies.Length;
|
|
||||||
for (int j = 0; j < count; ++j)
|
|
||||||
{
|
{
|
||||||
familyName = fontFamilies[j].Name;
|
scale = Math.Min((float)width / (float)image.Width, (float)height / (float)image.Height) * zoom / 100;
|
||||||
familyList = familyList + familyName;
|
|
||||||
familyList = familyList + ", ";
|
|
||||||
}
|
|
||||||
|
|
||||||
int maxX = (int)Math.Sqrt(MaxRows * MaxRows + MaxColumns * MaxColumns);
|
using (var graph = Graphics.FromImage(bmp))
|
||||||
|
|
||||||
using (Bitmap bmp = new Bitmap(maxX, MaxRows))
|
|
||||||
{
|
|
||||||
using (Graphics g = Graphics.FromImage(bmp))
|
|
||||||
{
|
{
|
||||||
g.CompositingQuality = CompositingQuality.HighQuality;
|
var scaleWidth = (float)(image.Width * scale);
|
||||||
g.SmoothingMode = SmoothingMode.AntiAlias;
|
var scaleHeight = (float)(image.Height * scale);
|
||||||
|
|
||||||
|
graph.InterpolationMode = quality;
|
||||||
|
graph.CompositingQuality = CompositingQuality.HighQuality;
|
||||||
|
graph.SmoothingMode = SmoothingMode.AntiAlias;
|
||||||
|
|
||||||
|
graph.DrawImage(image, width - scaleWidth, height - scaleHeight, scaleWidth, scaleHeight);
|
||||||
|
|
||||||
using (Font font = new Font("Consolas", 13F, FontStyle.Regular, GraphicsUnit.Pixel))
|
|
||||||
{
|
|
||||||
SizeF textSize = g.MeasureString(text, font);
|
|
||||||
g.DrawString(text, font, Brushes.White, 4, 1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int y = 0; y < bmp.Height; y++)
|
Clear();
|
||||||
{
|
SetBitmapDiagonal(bmp, -panX, height + panY);
|
||||||
for (int x = 0; x < bmp.Width; x++)
|
|
||||||
{
|
|
||||||
var pixel = bmp.GetPixel(x, y);
|
|
||||||
var color = (pixel.R + pixel.G + pixel.B) / 3;
|
|
||||||
SetLedDiagonal(x, y, (byte)color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Present();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private bool IsRowInRange(int row)
|
private bool IsRowInRange(int row)
|
||||||
{
|
{
|
||||||
return (row >= 0 && row < MaxRows);
|
return (row >= 0 && row < MaxRows);
|
||||||
|
|||||||
@@ -7,7 +7,9 @@ public static class AppConfig
|
|||||||
{
|
{
|
||||||
|
|
||||||
private static string configFile;
|
private static string configFile;
|
||||||
|
|
||||||
private static string? _model;
|
private static string? _model;
|
||||||
|
private static string? _bios;
|
||||||
|
|
||||||
private static Dictionary<string, object> config = new Dictionary<string, object>();
|
private static Dictionary<string, object> config = new Dictionary<string, object>();
|
||||||
|
|
||||||
@@ -69,6 +71,34 @@ public static class AppConfig
|
|||||||
return _model;
|
return _model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static (string, string) GetBiosAndModel()
|
||||||
|
{
|
||||||
|
if (_bios is not null && _model is not null) return (_bios, _model);
|
||||||
|
|
||||||
|
using (ManagementObjectSearcher objSearcher = new ManagementObjectSearcher(@"SELECT * FROM Win32_BIOS"))
|
||||||
|
{
|
||||||
|
using (ManagementObjectCollection objCollection = objSearcher.Get())
|
||||||
|
{
|
||||||
|
foreach (ManagementObject obj in objCollection)
|
||||||
|
if (obj["SMBIOSBIOSVersion"] is not null)
|
||||||
|
{
|
||||||
|
string[] results = obj["SMBIOSBIOSVersion"].ToString().Split(".");
|
||||||
|
if (results.Length > 1)
|
||||||
|
{
|
||||||
|
_model = results[0];
|
||||||
|
_bios = results[1];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_model = obj["SMBIOSBIOSVersion"].ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (_bios, _model);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static string GetModelShort()
|
public static string GetModelShort()
|
||||||
{
|
{
|
||||||
string model = GetModel();
|
string model = GetModel();
|
||||||
@@ -79,7 +109,6 @@ public static class AppConfig
|
|||||||
|
|
||||||
public static bool ContainsModel(string contains)
|
public static bool ContainsModel(string contains)
|
||||||
{
|
{
|
||||||
|
|
||||||
GetModel();
|
GetModel();
|
||||||
return (_model is not null && _model.ToLower().Contains(contains.ToLower()));
|
return (_model is not null && _model.ToLower().Contains(contains.ToLower()));
|
||||||
}
|
}
|
||||||
@@ -272,7 +301,7 @@ public static class AppConfig
|
|||||||
|
|
||||||
public static bool NoMKeys()
|
public static bool NoMKeys()
|
||||||
{
|
{
|
||||||
return ContainsModel("Z13") ||
|
return (ContainsModel("Z13") && !IsARCNM()) ||
|
||||||
ContainsModel("FX706") ||
|
ContainsModel("FX706") ||
|
||||||
ContainsModel("FA506") ||
|
ContainsModel("FA506") ||
|
||||||
ContainsModel("FX506") ||
|
ContainsModel("FX506") ||
|
||||||
@@ -280,15 +309,25 @@ public static class AppConfig
|
|||||||
ContainsModel("FX505");
|
ContainsModel("FX505");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool IsARCNM()
|
||||||
|
{
|
||||||
|
return ContainsModel("GZ301VIC");
|
||||||
|
}
|
||||||
|
|
||||||
public static bool IsTUF()
|
public static bool IsTUF()
|
||||||
{
|
{
|
||||||
return ContainsModel("TUF");
|
return ContainsModel("TUF");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool IsVivobook()
|
||||||
|
{
|
||||||
|
return ContainsModel("Vivobook");
|
||||||
|
}
|
||||||
|
|
||||||
// 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("FX506LU");
|
return ContainsModel("FA506IH") || ContainsModel("FX506LU") || ContainsModel("FX506IC");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -336,7 +375,7 @@ public static class AppConfig
|
|||||||
|
|
||||||
public static bool NoAutoUltimate()
|
public static bool NoAutoUltimate()
|
||||||
{
|
{
|
||||||
return ContainsModel("G614") || ContainsModel("GU604");
|
return ContainsModel("G614") || ContainsModel("GU604") || ContainsModel("FX507") || ContainsModel("G513");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -352,9 +391,23 @@ public static class AppConfig
|
|||||||
ContainsModel("FX507Z");
|
ContainsModel("FX507Z");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool IsFanScale()
|
||||||
|
{
|
||||||
|
if (!ContainsModel("GU604")) return false;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var (bios, model) = GetBiosAndModel();
|
||||||
|
return (Int32.Parse(bios) < 312);
|
||||||
|
} catch
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static bool IsFanRequired()
|
public static bool IsFanRequired()
|
||||||
{
|
{
|
||||||
return ContainsModel("GA402X") || ContainsModel("G513");
|
return ContainsModel("GA402X") || ContainsModel("G513") || ContainsModel("G713R") || ContainsModel("G713P");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsPowerRequired()
|
public static bool IsPowerRequired()
|
||||||
@@ -364,7 +417,7 @@ public static class AppConfig
|
|||||||
|
|
||||||
public static bool IsGPUFixNeeded()
|
public static bool IsGPUFixNeeded()
|
||||||
{
|
{
|
||||||
return ContainsModel("GA402X") || ContainsModel("GV302") || ContainsModel("FX506") || ContainsModel("GU603V");
|
return ContainsModel("GA402X") || ContainsModel("GV302") || ContainsModel("GZ301") || ContainsModel("FX506") || ContainsModel("GU603V");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsGPUFix()
|
public static bool IsGPUFix()
|
||||||
@@ -372,4 +425,14 @@ public static class AppConfig
|
|||||||
return Is("gpu_fix") || (ContainsModel("GA402X") && IsNotFalse("gpu_fix"));
|
return Is("gpu_fix") || (ContainsModel("GA402X") && IsNotFalse("gpu_fix"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool IsForceSetGPUMode()
|
||||||
|
{
|
||||||
|
return Is("gpu_mode_force_set") || ContainsModel("503");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool IsNoGPUModes()
|
||||||
|
{
|
||||||
|
return ContainsModel("GV301RA") || ContainsModel("GV302XA") || IsAlly();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
112
app/AsusACPI.cs
112
app/AsusACPI.cs
@@ -1,4 +1,5 @@
|
|||||||
using System.Management;
|
using GHelper;
|
||||||
|
using System.Management;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
public enum AsusFan
|
public enum AsusFan
|
||||||
@@ -55,17 +56,24 @@ public class AsusACPI
|
|||||||
public const uint GPU_Fan = 0x00110014;
|
public const uint GPU_Fan = 0x00110014;
|
||||||
public const uint Mid_Fan = 0x00110031;
|
public const uint Mid_Fan = 0x00110031;
|
||||||
|
|
||||||
public const uint PerformanceMode = 0x00120075; // Thermal Control
|
public const uint PerformanceMode = 0x00120075; // Performance modes
|
||||||
|
public const uint VivoBookMode = 0x00110019; // Vivobook performance modes
|
||||||
|
|
||||||
public const uint GPUEco = 0x00090020;
|
public const uint GPUEco = 0x00090020;
|
||||||
|
|
||||||
public const uint GPUXGConnected = 0x00090018;
|
public const uint GPUXGConnected = 0x00090018;
|
||||||
public const uint GPUXG = 0x00090019;
|
public const uint GPUXG = 0x00090019;
|
||||||
|
|
||||||
public const uint GPUMux = 0x00090016;
|
public const uint GPUMux = 0x00090016;
|
||||||
|
public const uint GPUMuxVivo = 0x00090026;
|
||||||
|
|
||||||
public const uint BatteryLimit = 0x00120057;
|
public const uint BatteryLimit = 0x00120057;
|
||||||
public const uint ScreenOverdrive = 0x00050019;
|
public const uint ScreenOverdrive = 0x00050019;
|
||||||
public const uint ScreenMiniled = 0x0005001E;
|
public const uint ScreenMiniled = 0x0005001E;
|
||||||
|
|
||||||
|
public const uint DevsCPUFan = 0x00110022;
|
||||||
|
public const uint DevsGPUFan = 0x00110023;
|
||||||
|
|
||||||
public const uint DevsCPUFanCurve = 0x00110024;
|
public const uint DevsCPUFanCurve = 0x00110024;
|
||||||
public const uint DevsGPUFanCurve = 0x00110025;
|
public const uint DevsGPUFanCurve = 0x00110025;
|
||||||
public const uint DevsMidFanCurve = 0x00110032;
|
public const uint DevsMidFanCurve = 0x00110032;
|
||||||
@@ -87,14 +95,19 @@ public class AsusACPI
|
|||||||
|
|
||||||
public const int TUF_KB_BRIGHTNESS = 0x00050021;
|
public const int TUF_KB_BRIGHTNESS = 0x00050021;
|
||||||
public const int TUF_KB = 0x00100056;
|
public const int TUF_KB = 0x00100056;
|
||||||
|
public const int TUF_KB2 = 0x0010005a;
|
||||||
public const int TUF_KB_STATE = 0x00100057;
|
public const int TUF_KB_STATE = 0x00100057;
|
||||||
|
|
||||||
|
public const int MICMUTE_LED = 0x00040017;
|
||||||
|
|
||||||
public const int TabletState = 0x00060077;
|
public const int TabletState = 0x00060077;
|
||||||
public const int FnLock = 0x00100023;
|
public const int FnLock = 0x00100023;
|
||||||
|
|
||||||
public const int ScreenPadToggle = 0x00050031;
|
public const int ScreenPadToggle = 0x00050031;
|
||||||
public const int ScreenPadBrightness = 0x00050032;
|
public const int ScreenPadBrightness = 0x00050032;
|
||||||
|
|
||||||
|
public const int BootSound = 0x00130022;
|
||||||
|
|
||||||
public const int Tablet_Notebook = 0;
|
public const int Tablet_Notebook = 0;
|
||||||
public const int Tablet_Tablet = 1;
|
public const int Tablet_Tablet = 1;
|
||||||
public const int Tablet_Tent = 2;
|
public const int Tablet_Tent = 2;
|
||||||
@@ -220,6 +233,11 @@ public class AsusACPI
|
|||||||
DefaultTotal = 50;
|
DefaultTotal = 50;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (AppConfig.IsAlly())
|
||||||
|
{
|
||||||
|
MaxTotal = 50;
|
||||||
|
DefaultTotal = 30;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -248,7 +266,7 @@ public class AsusACPI
|
|||||||
protected byte[] CallMethod(uint MethodID, byte[] args)
|
protected byte[] CallMethod(uint MethodID, byte[] args)
|
||||||
{
|
{
|
||||||
byte[] acpiBuf = new byte[8 + args.Length];
|
byte[] acpiBuf = new byte[8 + args.Length];
|
||||||
byte[] outBuffer = new byte[20];
|
byte[] outBuffer = new byte[16];
|
||||||
|
|
||||||
BitConverter.GetBytes((uint)MethodID).CopyTo(acpiBuf, 0);
|
BitConverter.GetBytes((uint)MethodID).CopyTo(acpiBuf, 0);
|
||||||
BitConverter.GetBytes((uint)args.Length).CopyTo(acpiBuf, 4);
|
BitConverter.GetBytes((uint)args.Length).CopyTo(acpiBuf, 4);
|
||||||
@@ -269,7 +287,7 @@ public class AsusACPI
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int DeviceSet(uint DeviceID, int Status, string logName)
|
public int DeviceSet(uint DeviceID, int Status, string? logName)
|
||||||
{
|
{
|
||||||
byte[] args = new byte[8];
|
byte[] args = new byte[8];
|
||||||
BitConverter.GetBytes((uint)DeviceID).CopyTo(args, 0);
|
BitConverter.GetBytes((uint)DeviceID).CopyTo(args, 0);
|
||||||
@@ -278,12 +296,14 @@ public class AsusACPI
|
|||||||
byte[] status = CallMethod(DEVS, args);
|
byte[] status = CallMethod(DEVS, args);
|
||||||
int result = BitConverter.ToInt32(status, 0);
|
int result = BitConverter.ToInt32(status, 0);
|
||||||
|
|
||||||
Logger.WriteLine(logName + " = " + Status + " : " + (result == 1 ? "OK" : result));
|
if (logName is not null)
|
||||||
|
Logger.WriteLine(logName + " = " + Status + " : " + (result == 1 ? "OK" : result));
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public int DeviceSet(uint DeviceID, byte[] Params, string logName)
|
public int DeviceSet(uint DeviceID, byte[] Params, string? logName)
|
||||||
{
|
{
|
||||||
byte[] args = new byte[4 + Params.Length];
|
byte[] args = new byte[4 + Params.Length];
|
||||||
BitConverter.GetBytes((uint)DeviceID).CopyTo(args, 0);
|
BitConverter.GetBytes((uint)DeviceID).CopyTo(args, 0);
|
||||||
@@ -292,7 +312,9 @@ public class AsusACPI
|
|||||||
byte[] status = CallMethod(DEVS, args);
|
byte[] status = CallMethod(DEVS, args);
|
||||||
int result = BitConverter.ToInt32(status, 0);
|
int result = BitConverter.ToInt32(status, 0);
|
||||||
|
|
||||||
Logger.WriteLine(logName + " = " + BitConverter.ToString(Params) + " : " + (result == 1 ? "OK" : result));
|
if (logName is not null)
|
||||||
|
Logger.WriteLine(logName + " = " + BitConverter.ToString(Params) + " : " + (result == 1 ? "OK" : result));
|
||||||
|
|
||||||
return BitConverter.ToInt32(status, 0);
|
return BitConverter.ToInt32(status, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -330,6 +352,56 @@ public class AsusACPI
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int GetFan(AsusFan device)
|
||||||
|
{
|
||||||
|
int fan = -1;
|
||||||
|
|
||||||
|
switch (device)
|
||||||
|
{
|
||||||
|
case AsusFan.GPU:
|
||||||
|
fan = Program.acpi.DeviceGet(GPU_Fan);
|
||||||
|
break;
|
||||||
|
case AsusFan.Mid:
|
||||||
|
fan = Program.acpi.DeviceGet(Mid_Fan);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fan = Program.acpi.DeviceGet(CPU_Fan);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fan < 0)
|
||||||
|
{
|
||||||
|
fan += 65536;
|
||||||
|
if (fan <= 0 || fan > 100) fan = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return fan;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int SetFanRange(AsusFan device, byte[] curve)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (curve.Length != 16) return -1;
|
||||||
|
if (curve.All(singleByte => singleByte == 0)) return -1;
|
||||||
|
|
||||||
|
byte min = (byte)(curve[8] * 255 / 100);
|
||||||
|
byte max = (byte)(curve[15] * 255 / 100);
|
||||||
|
byte[] range = { min, max};
|
||||||
|
|
||||||
|
int result;
|
||||||
|
switch (device)
|
||||||
|
{
|
||||||
|
case AsusFan.GPU:
|
||||||
|
result = DeviceSet(DevsGPUFan, range, "FanRangeGPU");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
result = DeviceSet(DevsCPUFan, range, "FanRangeCPU");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public int SetFanCurve(AsusFan device, byte[] curve)
|
public int SetFanCurve(AsusFan device, byte[] curve)
|
||||||
{
|
{
|
||||||
@@ -338,13 +410,15 @@ public class AsusACPI
|
|||||||
if (curve.All(singleByte => singleByte == 0)) return -1;
|
if (curve.All(singleByte => singleByte == 0)) return -1;
|
||||||
|
|
||||||
int result;
|
int result;
|
||||||
int fanScale = AppConfig.Get("fan_scale", 100);
|
|
||||||
|
int defaultScale = (AppConfig.IsFanScale() && (device == AsusFan.CPU || device == AsusFan.GPU)) ? 130 : 100;
|
||||||
|
int fanScale = AppConfig.Get("fan_scale", defaultScale);
|
||||||
|
|
||||||
if (fanScale != 100 && device == AsusFan.CPU) Logger.WriteLine("Custom fan scale: " + fanScale);
|
if (fanScale != 100 && device == AsusFan.CPU) Logger.WriteLine("Custom fan scale: " + fanScale);
|
||||||
|
|
||||||
// it seems to be a bug, when some old model's bios can go nuts if fan is set to 100%
|
// it seems to be a bug, when some old model's bios can go nuts if fan is set to 100%
|
||||||
|
|
||||||
for (int i = 8; i < curve.Length; i++) curve[i] = (byte)(Math.Max((byte)0, Math.Min((byte)99, curve[i])) * fanScale / 100);
|
for (int i = 8; i < curve.Length; i++) curve[i] = (byte)(Math.Max((byte)0, Math.Min((byte)100, curve[i])) * fanScale / 100);
|
||||||
|
|
||||||
switch (device)
|
switch (device)
|
||||||
{
|
{
|
||||||
@@ -401,7 +475,14 @@ public class AsusACPI
|
|||||||
if (curve.Length != 16) throw new Exception("Incorrect curve");
|
if (curve.Length != 16) throw new Exception("Incorrect curve");
|
||||||
|
|
||||||
var points = new Dictionary<byte, byte>();
|
var points = new Dictionary<byte, byte>();
|
||||||
for (int i = 0; i < 8; i++) points[curve[i]] = curve[i + 8];
|
byte old = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < 8; i++)
|
||||||
|
{
|
||||||
|
if (curve[i] == old) curve[i]++; // preventing 2 points in same spot from default asus profiles
|
||||||
|
points[curve[i]] = curve[i + 8];
|
||||||
|
old = curve[i];
|
||||||
|
}
|
||||||
|
|
||||||
var pointsFixed = new Dictionary<byte, byte>();
|
var pointsFixed = new Dictionary<byte, byte>();
|
||||||
bool fix = false;
|
bool fix = false;
|
||||||
@@ -468,19 +549,20 @@ public class AsusACPI
|
|||||||
DeviceSet(TUF_KB_BRIGHTNESS, param, "TUF Brightness");
|
DeviceSet(TUF_KB_BRIGHTNESS, param, "TUF Brightness");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void TUFKeyboardRGB(int mode, Color color, int speed)
|
public void TUFKeyboardRGB(int mode, Color color, int speed, string? log = "TUF RGB")
|
||||||
{
|
{
|
||||||
|
|
||||||
byte[] setting = new byte[12];
|
byte[] setting = new byte[6];
|
||||||
setting[0] = (byte)0xB4;
|
|
||||||
|
setting[0] = (byte)0xb4;
|
||||||
setting[1] = (byte)mode;
|
setting[1] = (byte)mode;
|
||||||
setting[2] = color.R;
|
setting[2] = color.R;
|
||||||
setting[3] = color.G;
|
setting[3] = color.G;
|
||||||
setting[4] = color.B;
|
setting[4] = color.B;
|
||||||
setting[5] = (byte)speed;
|
setting[5] = (byte)speed;
|
||||||
|
|
||||||
DeviceSet(TUF_KB, setting, "TUF RGB");
|
int result = DeviceSet(TUF_KB, setting, log);
|
||||||
//Debug.WriteLine(BitConverter.ToString(setting));
|
if (result != 1) DeviceSet(TUF_KB2, setting, log);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
126
app/AsusMouseSettings.Designer.cs
generated
126
app/AsusMouseSettings.Designer.cs
generated
@@ -33,6 +33,14 @@
|
|||||||
labelProfile = new Label();
|
labelProfile = new Label();
|
||||||
panelPerformance = new Panel();
|
panelPerformance = new Panel();
|
||||||
panelPerformanceOther = new Panel();
|
panelPerformanceOther = new Panel();
|
||||||
|
panelDeceleration = new Panel();
|
||||||
|
labelDeceleration = new Label();
|
||||||
|
sliderDeceleration = new UI.Slider();
|
||||||
|
labelDecelerationValue = new Label();
|
||||||
|
panelAcceleration = new Panel();
|
||||||
|
labelAcceleration = new Label();
|
||||||
|
sliderAcceleration = new UI.Slider();
|
||||||
|
labelAccelerationValue = new Label();
|
||||||
panelLiftOffDistance = new Panel();
|
panelLiftOffDistance = new Panel();
|
||||||
labelLiftOffDistance = new Label();
|
labelLiftOffDistance = new Label();
|
||||||
comboBoxLiftOffDistance = new UI.RComboBox();
|
comboBoxLiftOffDistance = new UI.RComboBox();
|
||||||
@@ -108,6 +116,8 @@
|
|||||||
panelProfiles.SuspendLayout();
|
panelProfiles.SuspendLayout();
|
||||||
panelPerformance.SuspendLayout();
|
panelPerformance.SuspendLayout();
|
||||||
panelPerformanceOther.SuspendLayout();
|
panelPerformanceOther.SuspendLayout();
|
||||||
|
panelDeceleration.SuspendLayout();
|
||||||
|
panelAcceleration.SuspendLayout();
|
||||||
panelLiftOffDistance.SuspendLayout();
|
panelLiftOffDistance.SuspendLayout();
|
||||||
panelDebounce.SuspendLayout();
|
panelDebounce.SuspendLayout();
|
||||||
panelAngleSnapping.SuspendLayout();
|
panelAngleSnapping.SuspendLayout();
|
||||||
@@ -182,13 +192,15 @@
|
|||||||
panelPerformance.Location = new Point(11, 68);
|
panelPerformance.Location = new Point(11, 68);
|
||||||
panelPerformance.Name = "panelPerformance";
|
panelPerformance.Name = "panelPerformance";
|
||||||
panelPerformance.Padding = new Padding(0, 11, 0, 25);
|
panelPerformance.Padding = new Padding(0, 11, 0, 25);
|
||||||
panelPerformance.Size = new Size(654, 461);
|
panelPerformance.Size = new Size(654, 555);
|
||||||
panelPerformance.TabIndex = 1;
|
panelPerformance.TabIndex = 1;
|
||||||
//
|
//
|
||||||
// panelPerformanceOther
|
// panelPerformanceOther
|
||||||
//
|
//
|
||||||
panelPerformanceOther.AutoSize = true;
|
panelPerformanceOther.AutoSize = true;
|
||||||
panelPerformanceOther.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
panelPerformanceOther.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||||
|
panelPerformanceOther.Controls.Add(panelDeceleration);
|
||||||
|
panelPerformanceOther.Controls.Add(panelAcceleration);
|
||||||
panelPerformanceOther.Controls.Add(panelLiftOffDistance);
|
panelPerformanceOther.Controls.Add(panelLiftOffDistance);
|
||||||
panelPerformanceOther.Controls.Add(panelDebounce);
|
panelPerformanceOther.Controls.Add(panelDebounce);
|
||||||
panelPerformanceOther.Controls.Add(panelAngleSnapping);
|
panelPerformanceOther.Controls.Add(panelAngleSnapping);
|
||||||
@@ -197,9 +209,103 @@
|
|||||||
panelPerformanceOther.Location = new Point(0, 240);
|
panelPerformanceOther.Location = new Point(0, 240);
|
||||||
panelPerformanceOther.Name = "panelPerformanceOther";
|
panelPerformanceOther.Name = "panelPerformanceOther";
|
||||||
panelPerformanceOther.Padding = new Padding(0, 11, 0, 11);
|
panelPerformanceOther.Padding = new Padding(0, 11, 0, 11);
|
||||||
panelPerformanceOther.Size = new Size(654, 196);
|
panelPerformanceOther.Size = new Size(654, 290);
|
||||||
panelPerformanceOther.TabIndex = 49;
|
panelPerformanceOther.TabIndex = 49;
|
||||||
//
|
//
|
||||||
|
// panelDeceleration
|
||||||
|
//
|
||||||
|
panelDeceleration.AutoSize = true;
|
||||||
|
panelDeceleration.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||||
|
panelDeceleration.Controls.Add(labelDeceleration);
|
||||||
|
panelDeceleration.Controls.Add(sliderDeceleration);
|
||||||
|
panelDeceleration.Controls.Add(labelDecelerationValue);
|
||||||
|
panelDeceleration.Dock = DockStyle.Top;
|
||||||
|
panelDeceleration.Location = new Point(0, 232);
|
||||||
|
panelDeceleration.Name = "panelDeceleration";
|
||||||
|
panelDeceleration.Padding = new Padding(5);
|
||||||
|
panelDeceleration.Size = new Size(654, 47);
|
||||||
|
panelDeceleration.TabIndex = 58;
|
||||||
|
//
|
||||||
|
// labelDeceleration
|
||||||
|
//
|
||||||
|
labelDeceleration.Location = new Point(6, 7);
|
||||||
|
labelDeceleration.Margin = new Padding(6, 0, 6, 0);
|
||||||
|
labelDeceleration.Name = "labelDeceleration";
|
||||||
|
labelDeceleration.Size = new Size(348, 33);
|
||||||
|
labelDeceleration.TabIndex = 52;
|
||||||
|
labelDeceleration.Text = "Deceleration";
|
||||||
|
//
|
||||||
|
// sliderDeceleration
|
||||||
|
//
|
||||||
|
sliderDeceleration.AccessibleName = "DPI Slider";
|
||||||
|
sliderDeceleration.Location = new Point(368, 9);
|
||||||
|
sliderDeceleration.Max = 9;
|
||||||
|
sliderDeceleration.Min = 0;
|
||||||
|
sliderDeceleration.Name = "sliderDeceleration";
|
||||||
|
sliderDeceleration.Size = new Size(213, 30);
|
||||||
|
sliderDeceleration.Step = 1;
|
||||||
|
sliderDeceleration.TabIndex = 50;
|
||||||
|
sliderDeceleration.TabStop = false;
|
||||||
|
sliderDeceleration.Text = "sliderBattery";
|
||||||
|
sliderDeceleration.Value = 0;
|
||||||
|
//
|
||||||
|
// labelDecelerationValue
|
||||||
|
//
|
||||||
|
labelDecelerationValue.Location = new Point(590, 9);
|
||||||
|
labelDecelerationValue.Margin = new Padding(6, 0, 6, 0);
|
||||||
|
labelDecelerationValue.Name = "labelDecelerationValue";
|
||||||
|
labelDecelerationValue.Size = new Size(60, 30);
|
||||||
|
labelDecelerationValue.TabIndex = 51;
|
||||||
|
labelDecelerationValue.Text = "0";
|
||||||
|
labelDecelerationValue.TextAlign = ContentAlignment.MiddleRight;
|
||||||
|
//
|
||||||
|
// panelAcceleration
|
||||||
|
//
|
||||||
|
panelAcceleration.AutoSize = true;
|
||||||
|
panelAcceleration.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||||
|
panelAcceleration.Controls.Add(labelAcceleration);
|
||||||
|
panelAcceleration.Controls.Add(sliderAcceleration);
|
||||||
|
panelAcceleration.Controls.Add(labelAccelerationValue);
|
||||||
|
panelAcceleration.Dock = DockStyle.Top;
|
||||||
|
panelAcceleration.Location = new Point(0, 185);
|
||||||
|
panelAcceleration.Name = "panelAcceleration";
|
||||||
|
panelAcceleration.Padding = new Padding(5);
|
||||||
|
panelAcceleration.Size = new Size(654, 47);
|
||||||
|
panelAcceleration.TabIndex = 57;
|
||||||
|
//
|
||||||
|
// labelAcceleration
|
||||||
|
//
|
||||||
|
labelAcceleration.Location = new Point(6, 7);
|
||||||
|
labelAcceleration.Margin = new Padding(6, 0, 6, 0);
|
||||||
|
labelAcceleration.Name = "labelAcceleration";
|
||||||
|
labelAcceleration.Size = new Size(348, 33);
|
||||||
|
labelAcceleration.TabIndex = 52;
|
||||||
|
labelAcceleration.Text = "Acceleration";
|
||||||
|
//
|
||||||
|
// sliderAcceleration
|
||||||
|
//
|
||||||
|
sliderAcceleration.AccessibleName = "DPI Slider";
|
||||||
|
sliderAcceleration.Location = new Point(368, 9);
|
||||||
|
sliderAcceleration.Max = 9;
|
||||||
|
sliderAcceleration.Min = 0;
|
||||||
|
sliderAcceleration.Name = "sliderAcceleration";
|
||||||
|
sliderAcceleration.Size = new Size(213, 30);
|
||||||
|
sliderAcceleration.Step = 1;
|
||||||
|
sliderAcceleration.TabIndex = 50;
|
||||||
|
sliderAcceleration.TabStop = false;
|
||||||
|
sliderAcceleration.Text = "sliderBattery";
|
||||||
|
sliderAcceleration.Value = 0;
|
||||||
|
//
|
||||||
|
// labelAccelerationValue
|
||||||
|
//
|
||||||
|
labelAccelerationValue.Location = new Point(590, 9);
|
||||||
|
labelAccelerationValue.Margin = new Padding(6, 0, 6, 0);
|
||||||
|
labelAccelerationValue.Name = "labelAccelerationValue";
|
||||||
|
labelAccelerationValue.Size = new Size(60, 30);
|
||||||
|
labelAccelerationValue.TabIndex = 51;
|
||||||
|
labelAccelerationValue.Text = "0";
|
||||||
|
labelAccelerationValue.TextAlign = ContentAlignment.MiddleRight;
|
||||||
|
//
|
||||||
// panelLiftOffDistance
|
// panelLiftOffDistance
|
||||||
//
|
//
|
||||||
panelLiftOffDistance.AutoSize = true;
|
panelLiftOffDistance.AutoSize = true;
|
||||||
@@ -656,7 +762,7 @@
|
|||||||
panelLighting.Controls.Add(panelLightingContent);
|
panelLighting.Controls.Add(panelLightingContent);
|
||||||
panelLighting.Controls.Add(panelLightingHeader);
|
panelLighting.Controls.Add(panelLightingHeader);
|
||||||
panelLighting.Dock = DockStyle.Top;
|
panelLighting.Dock = DockStyle.Top;
|
||||||
panelLighting.Location = new Point(11, 529);
|
panelLighting.Location = new Point(11, 623);
|
||||||
panelLighting.Name = "panelLighting";
|
panelLighting.Name = "panelLighting";
|
||||||
panelLighting.Padding = new Padding(0, 0, 0, 25);
|
panelLighting.Padding = new Padding(0, 0, 0, 25);
|
||||||
panelLighting.Size = new Size(654, 329);
|
panelLighting.Size = new Size(654, 329);
|
||||||
@@ -985,7 +1091,7 @@
|
|||||||
panelEnergy.Controls.Add(labelAutoPowerOff);
|
panelEnergy.Controls.Add(labelAutoPowerOff);
|
||||||
panelEnergy.Controls.Add(panelEnergyHeader);
|
panelEnergy.Controls.Add(panelEnergyHeader);
|
||||||
panelEnergy.Dock = DockStyle.Top;
|
panelEnergy.Dock = DockStyle.Top;
|
||||||
panelEnergy.Location = new Point(11, 858);
|
panelEnergy.Location = new Point(11, 952);
|
||||||
panelEnergy.Name = "panelEnergy";
|
panelEnergy.Name = "panelEnergy";
|
||||||
panelEnergy.Padding = new Padding(0, 0, 0, 25);
|
panelEnergy.Padding = new Padding(0, 0, 0, 25);
|
||||||
panelEnergy.Size = new Size(654, 143);
|
panelEnergy.Size = new Size(654, 143);
|
||||||
@@ -1166,7 +1272,7 @@
|
|||||||
panelBottomButtons.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
panelBottomButtons.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||||
panelBottomButtons.Controls.Add(buttonSync);
|
panelBottomButtons.Controls.Add(buttonSync);
|
||||||
panelBottomButtons.Dock = DockStyle.Top;
|
panelBottomButtons.Dock = DockStyle.Top;
|
||||||
panelBottomButtons.Location = new Point(11, 1001);
|
panelBottomButtons.Location = new Point(11, 1095);
|
||||||
panelBottomButtons.Name = "panelBottomButtons";
|
panelBottomButtons.Name = "panelBottomButtons";
|
||||||
panelBottomButtons.Size = new Size(654, 67);
|
panelBottomButtons.Size = new Size(654, 67);
|
||||||
panelBottomButtons.TabIndex = 47;
|
panelBottomButtons.TabIndex = 47;
|
||||||
@@ -1260,6 +1366,8 @@
|
|||||||
panelPerformance.PerformLayout();
|
panelPerformance.PerformLayout();
|
||||||
panelPerformanceOther.ResumeLayout(false);
|
panelPerformanceOther.ResumeLayout(false);
|
||||||
panelPerformanceOther.PerformLayout();
|
panelPerformanceOther.PerformLayout();
|
||||||
|
panelDeceleration.ResumeLayout(false);
|
||||||
|
panelAcceleration.ResumeLayout(false);
|
||||||
panelLiftOffDistance.ResumeLayout(false);
|
panelLiftOffDistance.ResumeLayout(false);
|
||||||
panelDebounce.ResumeLayout(false);
|
panelDebounce.ResumeLayout(false);
|
||||||
panelAngleSnapping.ResumeLayout(false);
|
panelAngleSnapping.ResumeLayout(false);
|
||||||
@@ -1379,5 +1487,13 @@
|
|||||||
private Panel panelAngleSnapping;
|
private Panel panelAngleSnapping;
|
||||||
private Panel panelLiftOffDistance;
|
private Panel panelLiftOffDistance;
|
||||||
private Panel panelDebounce;
|
private Panel panelDebounce;
|
||||||
|
private Panel panelDeceleration;
|
||||||
|
private Label labelDeceleration;
|
||||||
|
private UI.Slider sliderDeceleration;
|
||||||
|
private Label labelDecelerationValue;
|
||||||
|
private Panel panelAcceleration;
|
||||||
|
private Label labelAcceleration;
|
||||||
|
private UI.Slider sliderAcceleration;
|
||||||
|
private Label labelAccelerationValue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -46,6 +46,8 @@ namespace GHelper
|
|||||||
labelChargingState.Text = "(" + Properties.Strings.Charging + ")";
|
labelChargingState.Text = "(" + Properties.Strings.Charging + ")";
|
||||||
labelProfile.Text = Properties.Strings.Profile;
|
labelProfile.Text = Properties.Strings.Profile;
|
||||||
labelButtonDebounce.Text = Properties.Strings.MouseButtonResponse;
|
labelButtonDebounce.Text = Properties.Strings.MouseButtonResponse;
|
||||||
|
labelAcceleration.Text = Properties.Strings.Acceleration;
|
||||||
|
labelDeceleration.Text = Properties.Strings.Deceleration;
|
||||||
|
|
||||||
buttonLightingZoneLogo.Text = Properties.Strings.AuraZoneLogo;
|
buttonLightingZoneLogo.Text = Properties.Strings.AuraZoneLogo;
|
||||||
buttonLightingZoneScroll.Text = Properties.Strings.AuraZoneScroll;
|
buttonLightingZoneScroll.Text = Properties.Strings.AuraZoneScroll;
|
||||||
@@ -80,6 +82,12 @@ namespace GHelper
|
|||||||
sliderButtonDebounce.ValueChanged += SliderButtonDebounce_ValueChanged;
|
sliderButtonDebounce.ValueChanged += SliderButtonDebounce_ValueChanged;
|
||||||
sliderButtonDebounce.MouseUp += SliderButtonDebounce_MouseUp;
|
sliderButtonDebounce.MouseUp += SliderButtonDebounce_MouseUp;
|
||||||
|
|
||||||
|
sliderAcceleration.MouseUp += SliderAcceleration_MouseUp;
|
||||||
|
sliderAcceleration.ValueChanged += SliderAcceleration_ValueChanged;
|
||||||
|
|
||||||
|
sliderDeceleration.MouseUp += SliderDeceleration_MouseUp;
|
||||||
|
sliderDeceleration.ValueChanged += SliderDeceleration_ValueChanged;
|
||||||
|
|
||||||
buttonLightingColor.Click += ButtonLightingColor_Click;
|
buttonLightingColor.Click += ButtonLightingColor_Click;
|
||||||
comboBoxLightingMode.DropDownClosed += ComboBoxLightingMode_DropDownClosed;
|
comboBoxLightingMode.DropDownClosed += ComboBoxLightingMode_DropDownClosed;
|
||||||
sliderBrightness.MouseUp += SliderBrightness_MouseUp;
|
sliderBrightness.MouseUp += SliderBrightness_MouseUp;
|
||||||
@@ -103,6 +111,26 @@ namespace GHelper
|
|||||||
RefreshMouseData();
|
RefreshMouseData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void SliderAcceleration_MouseUp(object? sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
mouse.SetAcceleration(sliderAcceleration.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SliderAcceleration_ValueChanged(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
labelAccelerationValue.Text = sliderAcceleration.Value.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SliderDeceleration_MouseUp(object? sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
mouse.SetDeceleration(sliderDeceleration.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SliderDeceleration_ValueChanged(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
labelDecelerationValue.Text = sliderDeceleration.Value.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
private void SliderButtonDebounce_MouseUp(object? sender, MouseEventArgs e)
|
private void SliderButtonDebounce_MouseUp(object? sender, MouseEventArgs e)
|
||||||
{
|
{
|
||||||
DebounceTime dbt = (DebounceTime)sliderButtonDebounce.Value;
|
DebounceTime dbt = (DebounceTime)sliderButtonDebounce.Value;
|
||||||
@@ -273,8 +301,10 @@ namespace GHelper
|
|||||||
private void ComboBoxAnimationSpeed_DropDownClosed(object? sender, EventArgs e)
|
private void ComboBoxAnimationSpeed_DropDownClosed(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
LightingSetting? ls = mouse.LightingSettingForZone(visibleZone);
|
LightingSetting? ls = mouse.LightingSettingForZone(visibleZone);
|
||||||
ls.AnimationSpeed = (AnimationSpeed)comboBoxAnimationSpeed.SelectedIndex;
|
// 0 => 0x9
|
||||||
|
// 1 => 0x7
|
||||||
|
// 2 => 0x5
|
||||||
|
ls.AnimationSpeed = (AnimationSpeed)(0x9 - (comboBoxAnimationSpeed.SelectedIndex * 0x2));
|
||||||
UpdateLightingSettings(ls, visibleZone);
|
UpdateLightingSettings(ls, visibleZone);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -513,6 +543,24 @@ namespace GHelper
|
|||||||
panelAngleSnapping.Visible = false;
|
panelAngleSnapping.Visible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mouse.HasAcceleration())
|
||||||
|
{
|
||||||
|
sliderAcceleration.Max = mouse.MaxAcceleration();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
panelAcceleration.Visible = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mouse.HasDeceleration())
|
||||||
|
{
|
||||||
|
sliderDeceleration.Max = mouse.MaxDeceleration();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
panelDeceleration.Visible = false;
|
||||||
|
}
|
||||||
|
|
||||||
if (mouse.HasLiftOffSetting())
|
if (mouse.HasLiftOffSetting())
|
||||||
{
|
{
|
||||||
comboBoxLiftOffDistance.Items.AddRange(new string[] {
|
comboBoxLiftOffDistance.Items.AddRange(new string[] {
|
||||||
@@ -556,6 +604,12 @@ namespace GHelper
|
|||||||
labelLowBatteryWarningValue.Visible = false;
|
labelLowBatteryWarningValue.Visible = false;
|
||||||
sliderLowBatteryWarning.Visible = false;
|
sliderLowBatteryWarning.Visible = false;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sliderLowBatteryWarning.Min = 0;
|
||||||
|
sliderLowBatteryWarning.Step = mouse.LowBatteryWarningStep();
|
||||||
|
sliderLowBatteryWarning.Max = mouse.LowBatteryWarningMax();
|
||||||
|
}
|
||||||
|
|
||||||
if (!mouse.HasAutoPowerOff() && !mouse.HasLowBatteryWarning())
|
if (!mouse.HasAutoPowerOff() && !mouse.HasLowBatteryWarning())
|
||||||
{
|
{
|
||||||
@@ -681,6 +735,16 @@ namespace GHelper
|
|||||||
{
|
{
|
||||||
sliderButtonDebounce.Value = (int)mouse.Debounce;
|
sliderButtonDebounce.Value = (int)mouse.Debounce;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mouse.HasAcceleration())
|
||||||
|
{
|
||||||
|
sliderAcceleration.Value = mouse.Acceleration;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mouse.HasDeceleration())
|
||||||
|
{
|
||||||
|
sliderDeceleration.Value = mouse.Deceleration;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void VisualizeBatteryState()
|
private void VisualizeBatteryState()
|
||||||
@@ -768,8 +832,10 @@ namespace GHelper
|
|||||||
else
|
else
|
||||||
pictureBoxLightingColor.BackColor = ls.RGBColor;
|
pictureBoxLightingColor.BackColor = ls.RGBColor;
|
||||||
|
|
||||||
|
//0x09 => 0
|
||||||
comboBoxAnimationSpeed.SelectedIndex = (((int)ls.AnimationSpeed) - 5) / 2;
|
//0x07 => 1
|
||||||
|
//0x05 => 2
|
||||||
|
comboBoxAnimationSpeed.SelectedIndex = 2 - ((((int)ls.AnimationSpeed) - 5) / 2);
|
||||||
comboBoxAnimationDirection.SelectedIndex = (int)ls.AnimationDirection;
|
comboBoxAnimationDirection.SelectedIndex = (int)ls.AnimationDirection;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -797,6 +863,10 @@ namespace GHelper
|
|||||||
private void VisualizeCurrentDPIProfile()
|
private void VisualizeCurrentDPIProfile()
|
||||||
{
|
{
|
||||||
AsusMouseDPI dpi = mouse.DpiSettings[mouse.DpiProfile - 1];
|
AsusMouseDPI dpi = mouse.DpiSettings[mouse.DpiProfile - 1];
|
||||||
|
if (dpi is null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
sliderDPI.Value = (int)dpi.DPI;
|
sliderDPI.Value = (int)dpi.DPI;
|
||||||
pictureDPIColor.BackColor = dpi.Color;
|
pictureDPIColor.BackColor = dpi.Color;
|
||||||
}
|
}
|
||||||
|
|||||||
256
app/AsusUSB.cs
256
app/AsusUSB.cs
@@ -2,6 +2,7 @@
|
|||||||
using GHelper.Helpers;
|
using GHelper.Helpers;
|
||||||
using HidLibrary;
|
using HidLibrary;
|
||||||
using NAudio.Gui;
|
using NAudio.Gui;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
@@ -63,7 +64,7 @@ namespace GHelper
|
|||||||
public static Color Color1 = Color.White;
|
public static Color Color1 = Color.White;
|
||||||
public static Color Color2 = Color.Black;
|
public static Color Color2 = Color.Black;
|
||||||
|
|
||||||
static bool isTuf = AppConfig.IsTUF();
|
static bool isTuf = AppConfig.IsTUF() || AppConfig.IsVivobook();
|
||||||
static bool isStrix = AppConfig.IsStrix();
|
static bool isStrix = AppConfig.IsStrix();
|
||||||
|
|
||||||
static public bool isSingleColor = false;
|
static public bool isSingleColor = false;
|
||||||
@@ -123,7 +124,7 @@ namespace GHelper
|
|||||||
isSingleColor = AppConfig.ContainsModel("GA401") || AppConfig.ContainsModel("X13"); // Mono Color
|
isSingleColor = AppConfig.ContainsModel("GA401") || AppConfig.ContainsModel("X13"); // Mono Color
|
||||||
|
|
||||||
var device = GetDevice(AURA_HID_ID);
|
var device = GetDevice(AURA_HID_ID);
|
||||||
if (device is not null && device.Attributes.Version == 22 && AppConfig.ContainsModel("GA402X")) isSingleColor = true;
|
if (device is not null && (device.Attributes.Version == 22 || device.Attributes.Version == 23) && (AppConfig.ContainsModel("GA402X") || AppConfig.ContainsModel("GA402N"))) isSingleColor = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void Timer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
|
private static void Timer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
|
||||||
@@ -157,34 +158,40 @@ namespace GHelper
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Dictionary<int, string> _modesSingleColor = new Dictionary<int, string>
|
||||||
|
{
|
||||||
|
{ 0, Properties.Strings.AuraStatic },
|
||||||
|
{ 1, Properties.Strings.AuraBreathe },
|
||||||
|
{ 10, Properties.Strings.AuraStrobe },
|
||||||
|
};
|
||||||
|
|
||||||
static Dictionary<int, string> _modes = new Dictionary<int, string>
|
static Dictionary<int, string> _modes = new Dictionary<int, string>
|
||||||
{
|
{
|
||||||
{ 0, Properties.Strings.AuraStatic },
|
{ 0, Properties.Strings.AuraStatic },
|
||||||
{ 1, Properties.Strings.AuraBreathe },
|
{ 1, Properties.Strings.AuraBreathe },
|
||||||
{ 2, Properties.Strings.AuraColorCycle },
|
{ 2, Properties.Strings.AuraColorCycle },
|
||||||
{ 3, Properties.Strings.AuraRainbow },
|
{ 3, Properties.Strings.AuraRainbow },
|
||||||
{ 10, Properties.Strings.AuraStrobe },
|
{ 10, Properties.Strings.AuraStrobe },
|
||||||
{ HEATMAP, "Heatmap"},
|
{ HEATMAP, "Heatmap"},
|
||||||
{ GPUMODE, "GPU Mode" }
|
{ GPUMODE, "GPU Mode" }
|
||||||
};
|
};
|
||||||
|
|
||||||
static Dictionary<int, string> _modesStrix = new Dictionary<int, string>
|
static Dictionary<int, string> _modesStrix = new Dictionary<int, string>
|
||||||
{
|
{
|
||||||
{ 0, Properties.Strings.AuraStatic },
|
{ 0, Properties.Strings.AuraStatic },
|
||||||
{ 1, Properties.Strings.AuraBreathe },
|
{ 1, Properties.Strings.AuraBreathe },
|
||||||
{ 2, Properties.Strings.AuraColorCycle },
|
{ 2, Properties.Strings.AuraColorCycle },
|
||||||
{ 3, Properties.Strings.AuraRainbow },
|
{ 3, Properties.Strings.AuraRainbow },
|
||||||
{ 4, "Star" },
|
{ 4, "Star" },
|
||||||
{ 5, "Rain" },
|
{ 5, "Rain" },
|
||||||
{ 6, "Highlight" },
|
{ 6, "Highlight" },
|
||||||
{ 7, "Laser" },
|
{ 7, "Laser" },
|
||||||
{ 8, "Ripple" },
|
{ 8, "Ripple" },
|
||||||
{ 10, Properties.Strings.AuraStrobe},
|
{ 10, Properties.Strings.AuraStrobe},
|
||||||
{ 11, "Comet" },
|
{ 11, "Comet" },
|
||||||
{ 12, "Flash" },
|
{ 12, "Flash" },
|
||||||
{ HEATMAP, "Heatmap"}
|
{ HEATMAP, "Heatmap"}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
public static Dictionary<int, string> GetModes()
|
public static Dictionary<int, string> GetModes()
|
||||||
@@ -196,10 +203,7 @@ namespace GHelper
|
|||||||
|
|
||||||
if (isSingleColor)
|
if (isSingleColor)
|
||||||
{
|
{
|
||||||
_modes.Remove(2);
|
return _modesSingleColor;
|
||||||
_modes.Remove(3);
|
|
||||||
_modes.Remove(HEATMAP);
|
|
||||||
_modes.Remove(GPUMODE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (AppConfig.IsAdvantageEdition())
|
if (AppConfig.IsAdvantageEdition())
|
||||||
@@ -329,13 +333,15 @@ namespace GHelper
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void ApplyBrightness(int brightness, string log = "Backlight")
|
public static void ApplyBrightness(int brightness, string log = "Backlight", bool delay = false)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
Task.Run(async () =>
|
Task.Run(async () =>
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if (delay) await Task.Delay(TimeSpan.FromSeconds(1));
|
||||||
|
|
||||||
if (isTuf) Program.acpi.TUFKeyboardBrightness(brightness);
|
if (isTuf) Program.acpi.TUFKeyboardBrightness(brightness);
|
||||||
|
|
||||||
byte[] msg = { AURA_HID_ID, 0xba, 0xc5, 0xc4, (byte)brightness };
|
byte[] msg = { AURA_HID_ID, 0xba, 0xc5, 0xc4, (byte)brightness };
|
||||||
@@ -386,63 +392,58 @@ namespace GHelper
|
|||||||
public static void ApplyAuraPower()
|
public static void ApplyAuraPower()
|
||||||
{
|
{
|
||||||
|
|
||||||
Task.Run(async () =>
|
AuraPower flags = new();
|
||||||
|
|
||||||
|
// Keyboard
|
||||||
|
flags.AwakeKeyb = AppConfig.IsNotFalse("keyboard_awake");
|
||||||
|
flags.BootKeyb = AppConfig.IsNotFalse("keyboard_boot");
|
||||||
|
flags.SleepKeyb = AppConfig.IsNotFalse("keyboard_sleep");
|
||||||
|
flags.ShutdownKeyb = AppConfig.IsNotFalse("keyboard_shutdown");
|
||||||
|
|
||||||
|
// Logo
|
||||||
|
flags.AwakeLogo = AppConfig.IsNotFalse("keyboard_awake_logo");
|
||||||
|
flags.BootLogo = AppConfig.IsNotFalse("keyboard_boot_logo");
|
||||||
|
flags.SleepLogo = AppConfig.IsNotFalse("keyboard_sleep_logo");
|
||||||
|
flags.ShutdownLogo = AppConfig.IsNotFalse("keyboard_shutdown_logo");
|
||||||
|
|
||||||
|
// Lightbar
|
||||||
|
flags.AwakeBar = AppConfig.IsNotFalse("keyboard_awake_bar");
|
||||||
|
flags.BootBar = AppConfig.IsNotFalse("keyboard_boot_bar");
|
||||||
|
flags.SleepBar = AppConfig.IsNotFalse("keyboard_sleep_bar");
|
||||||
|
flags.ShutdownBar = AppConfig.IsNotFalse("keyboard_shutdown_bar");
|
||||||
|
|
||||||
|
// Lid
|
||||||
|
flags.AwakeLid = AppConfig.IsNotFalse("keyboard_awake_lid");
|
||||||
|
flags.BootLid = AppConfig.IsNotFalse("keyboard_boot_lid");
|
||||||
|
flags.SleepLid = AppConfig.IsNotFalse("keyboard_sleep_lid");
|
||||||
|
flags.ShutdownLid = AppConfig.IsNotFalse("keyboard_shutdown_lid");
|
||||||
|
|
||||||
|
// Rear Bar
|
||||||
|
flags.AwakeRear = AppConfig.IsNotFalse("keyboard_awake_lid");
|
||||||
|
flags.BootRear = AppConfig.IsNotFalse("keyboard_boot_lid");
|
||||||
|
flags.SleepRear = AppConfig.IsNotFalse("keyboard_sleep_lid");
|
||||||
|
flags.ShutdownRear = AppConfig.IsNotFalse("keyboard_shutdown_lid");
|
||||||
|
|
||||||
|
var devices = GetHidDevices(deviceIds);
|
||||||
|
byte[] msg = AuraPowerMessage(flags);
|
||||||
|
|
||||||
|
foreach (HidDevice device in devices)
|
||||||
{
|
{
|
||||||
|
device.OpenDevice();
|
||||||
AuraPower flags = new();
|
if (device.ReadFeatureData(out byte[] data, AURA_HID_ID))
|
||||||
|
|
||||||
// Keyboard
|
|
||||||
flags.AwakeKeyb = AppConfig.IsNotFalse("keyboard_awake");
|
|
||||||
flags.BootKeyb = AppConfig.IsNotFalse("keyboard_boot");
|
|
||||||
flags.SleepKeyb = AppConfig.IsNotFalse("keyboard_sleep");
|
|
||||||
flags.ShutdownKeyb = AppConfig.IsNotFalse("keyboard_shutdown");
|
|
||||||
|
|
||||||
// Logo
|
|
||||||
flags.AwakeLogo = AppConfig.IsNotFalse("keyboard_awake_logo");
|
|
||||||
flags.BootLogo = AppConfig.IsNotFalse("keyboard_boot_logo");
|
|
||||||
flags.SleepLogo = AppConfig.IsNotFalse("keyboard_sleep_logo");
|
|
||||||
flags.ShutdownLogo = AppConfig.IsNotFalse("keyboard_shutdown_logo");
|
|
||||||
|
|
||||||
// Lightbar
|
|
||||||
flags.AwakeBar = AppConfig.IsNotFalse("keyboard_awake_bar");
|
|
||||||
flags.BootBar = AppConfig.IsNotFalse("keyboard_boot_bar");
|
|
||||||
flags.SleepBar = AppConfig.IsNotFalse("keyboard_sleep_bar");
|
|
||||||
flags.ShutdownBar = AppConfig.IsNotFalse("keyboard_shutdown_bar");
|
|
||||||
|
|
||||||
// Lid
|
|
||||||
flags.AwakeLid = AppConfig.IsNotFalse("keyboard_awake_lid");
|
|
||||||
flags.BootLid = AppConfig.IsNotFalse("keyboard_boot_lid");
|
|
||||||
flags.SleepLid = AppConfig.IsNotFalse("keyboard_sleep_lid");
|
|
||||||
flags.ShutdownLid = AppConfig.IsNotFalse("keyboard_shutdown_lid");
|
|
||||||
|
|
||||||
// Rear Bar
|
|
||||||
flags.AwakeRear = AppConfig.IsNotFalse("keyboard_awake_lid");
|
|
||||||
flags.BootRear = AppConfig.IsNotFalse("keyboard_boot_lid");
|
|
||||||
flags.SleepRear = AppConfig.IsNotFalse("keyboard_sleep_lid");
|
|
||||||
flags.ShutdownRear = AppConfig.IsNotFalse("keyboard_shutdown_lid");
|
|
||||||
|
|
||||||
var devices = GetHidDevices(deviceIds);
|
|
||||||
byte[] msg = AuraPowerMessage(flags);
|
|
||||||
|
|
||||||
foreach (HidDevice device in devices)
|
|
||||||
{
|
{
|
||||||
device.OpenDevice();
|
device.WriteFeatureData(msg);
|
||||||
if (device.ReadFeatureData(out byte[] data, AURA_HID_ID))
|
Logger.WriteLine("USB-KB " + device.Attributes.ProductHexId + ":" + BitConverter.ToString(msg));
|
||||||
{
|
|
||||||
device.WriteFeatureData(msg);
|
|
||||||
Logger.WriteLine("USB-KB " + device.Attributes.ProductHexId + ":" + BitConverter.ToString(msg));
|
|
||||||
}
|
|
||||||
device.CloseDevice();
|
|
||||||
}
|
}
|
||||||
|
device.CloseDevice();
|
||||||
|
}
|
||||||
|
|
||||||
if (isTuf)
|
if (isTuf)
|
||||||
Program.acpi.TUFKeyboardPower(
|
Program.acpi.TUFKeyboardPower(
|
||||||
flags.AwakeKeyb,
|
flags.AwakeKeyb,
|
||||||
flags.BootKeyb,
|
flags.BootKeyb,
|
||||||
flags.SleepKeyb,
|
flags.SleepKeyb,
|
||||||
flags.ShutdownKeyb);
|
flags.ShutdownKeyb);
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -471,7 +472,7 @@ namespace GHelper
|
|||||||
|
|
||||||
if (isTuf)
|
if (isTuf)
|
||||||
{
|
{
|
||||||
Program.acpi.TUFKeyboardRGB(0, color, 0);
|
Program.acpi.TUFKeyboardRGB(0, color, 0, null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -530,6 +531,7 @@ namespace GHelper
|
|||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
//Debug.WriteLine(color.ToString());
|
||||||
auraDevice.Write(AuraMessage(0, color, color, 0));
|
auraDevice.Write(AuraMessage(0, color, color, 0));
|
||||||
auraDevice.Write(MESSAGE_SET);
|
auraDevice.Write(MESSAGE_SET);
|
||||||
}
|
}
|
||||||
@@ -541,7 +543,9 @@ namespace GHelper
|
|||||||
{
|
{
|
||||||
if (AppConfig.Get("aura_mode") != GPUMODE) return;
|
if (AppConfig.Get("aura_mode") != GPUMODE) return;
|
||||||
|
|
||||||
switch (GPUModeControl.GpuMode)
|
Logger.WriteLine(GPUModeControl.gpuMode.ToString());
|
||||||
|
|
||||||
|
switch (GPUModeControl.gpuMode)
|
||||||
{
|
{
|
||||||
case AsusACPI.GPUModeUltimate:
|
case AsusACPI.GPUModeUltimate:
|
||||||
ApplyColor(Color.Red, true);
|
ApplyColor(Color.Red, true);
|
||||||
@@ -579,46 +583,39 @@ namespace GHelper
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int _speed;
|
||||||
Task.Run(async () =>
|
switch (Speed)
|
||||||
{
|
{
|
||||||
|
case 1:
|
||||||
|
_speed = 0xeb;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
_speed = 0xf5;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
_speed = 0xe1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
byte[] msg;
|
||||||
|
var devices = GetHidDevices(deviceIds);
|
||||||
|
|
||||||
int _speed;
|
foreach (HidDevice device in devices)
|
||||||
|
{
|
||||||
switch (Speed)
|
device.OpenDevice();
|
||||||
|
if (device.ReadFeatureData(out byte[] data, AURA_HID_ID))
|
||||||
{
|
{
|
||||||
case 1:
|
msg = AuraMessage(Mode, Color1, Color2, _speed, isSingleColor);
|
||||||
_speed = 0xeb;
|
device.WriteFeatureData(msg);
|
||||||
break;
|
device.WriteFeatureData(MESSAGE_APPLY);
|
||||||
case 2:
|
device.WriteFeatureData(MESSAGE_SET);
|
||||||
_speed = 0xf5;
|
Logger.WriteLine("USB-KB " + device.Attributes.Version + device.Description + device.DevicePath + ":" + BitConverter.ToString(msg));
|
||||||
break;
|
|
||||||
default:
|
|
||||||
_speed = 0xe1;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
device.CloseDevice();
|
||||||
|
}
|
||||||
|
|
||||||
byte[] msg;
|
if (isTuf)
|
||||||
var devices = GetHidDevices(deviceIds);
|
Program.acpi.TUFKeyboardRGB(Mode, Color1, _speed);
|
||||||
|
|
||||||
foreach (HidDevice device in devices)
|
|
||||||
{
|
|
||||||
device.OpenDevice();
|
|
||||||
if (device.ReadFeatureData(out byte[] data, AURA_HID_ID))
|
|
||||||
{
|
|
||||||
msg = AuraMessage(Mode, Color1, Color2, _speed, isSingleColor);
|
|
||||||
device.WriteFeatureData(msg);
|
|
||||||
device.WriteFeatureData(MESSAGE_APPLY);
|
|
||||||
device.WriteFeatureData(MESSAGE_SET);
|
|
||||||
Logger.WriteLine("USB-KB " + device.Attributes.Version + device.Description + device.DevicePath + ":" + BitConverter.ToString(msg));
|
|
||||||
}
|
|
||||||
device.CloseDevice();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isTuf)
|
|
||||||
Program.acpi.TUFKeyboardRGB(Mode, Color1, _speed);
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -646,11 +643,20 @@ namespace GHelper
|
|||||||
|
|
||||||
public static void InitXGM()
|
public static void InitXGM()
|
||||||
{
|
{
|
||||||
SetXGM(LED_INIT1);
|
byte[] ASUS_INIT = Encoding.ASCII.GetBytes("^ASUS Tech.Inc.");
|
||||||
SetXGM(LED_INIT2);
|
|
||||||
SetXGM(LED_INIT3);
|
SetXGM(ASUS_INIT);
|
||||||
SetXGM(LED_INIT4);
|
|
||||||
SetXGM(LED_INIT5);
|
/*
|
||||||
|
SetXGM(new byte[] { 0x5e, 0xd0, 0x02 });
|
||||||
|
SetXGM(new byte[] { 0x5e, 0xd0, 0x03 });
|
||||||
|
SetXGM(ASUS_INIT);
|
||||||
|
SetXGM(new byte[] { 0x5e, 0xd1, 0x02 }); // reset fan
|
||||||
|
SetXGM(ASUS_INIT);
|
||||||
|
SetXGM(new byte[] { 0x5e, 0xce, 0x03 });
|
||||||
|
SetXGM(new byte[] { 0x5e, 0xd0, 0x04 });
|
||||||
|
SetXGM(new byte[] { 0x5e, 0xd0, 0x01 });
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ApplyXGMLight(bool status)
|
public static void ApplyXGMLight(bool status)
|
||||||
|
|||||||
@@ -3,17 +3,33 @@
|
|||||||
internal class BatteryControl
|
internal class BatteryControl
|
||||||
{
|
{
|
||||||
|
|
||||||
|
public static void ToggleBatteryLimitFull()
|
||||||
|
{
|
||||||
|
if (AppConfig.Is("charge_full")) SetBatteryChargeLimit();
|
||||||
|
else SetBatteryLimitFull();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void SetBatteryLimitFull()
|
||||||
|
{
|
||||||
|
AppConfig.Set("charge_full", 1);
|
||||||
|
Program.acpi.DeviceSet(AsusACPI.BatteryLimit, 100, "BatteryLimit");
|
||||||
|
|
||||||
|
Program.settingsForm.VisualiseBatteryFull();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void SetBatteryChargeLimit(int limit = -1)
|
public static void SetBatteryChargeLimit(int limit = -1)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (limit < 0) limit = AppConfig.Get("charge_limit");
|
if (limit < 0) limit = AppConfig.Get("charge_limit");
|
||||||
if (limit < 40 || limit > 100) return;
|
if (limit < 40 || limit > 100) return;
|
||||||
|
|
||||||
Program.settingsForm.VisualiseBattery(limit);
|
|
||||||
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);
|
||||||
|
|
||||||
|
Program.settingsForm.VisualiseBattery(limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
388
app/Display/ScreenCCD.cs
Normal file
388
app/Display/ScreenCCD.cs
Normal file
@@ -0,0 +1,388 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
namespace GHelper.Display
|
||||||
|
{
|
||||||
|
public class ScreenCCD
|
||||||
|
{
|
||||||
|
|
||||||
|
public static bool GetHDRStatus()
|
||||||
|
{
|
||||||
|
var err = GetDisplayConfigBufferSizes(QDC.QDC_ONLY_ACTIVE_PATHS, out var pathCount, out var modeCount);
|
||||||
|
if (err != 0)
|
||||||
|
throw new Win32Exception(err);
|
||||||
|
|
||||||
|
var paths = new DISPLAYCONFIG_PATH_INFO[pathCount];
|
||||||
|
var modes = new DISPLAYCONFIG_MODE_INFO[modeCount];
|
||||||
|
err = QueryDisplayConfig(QDC.QDC_ONLY_ACTIVE_PATHS, ref pathCount, paths, ref modeCount, modes, IntPtr.Zero);
|
||||||
|
if (err != 0)
|
||||||
|
throw new Win32Exception(err);
|
||||||
|
|
||||||
|
string internalName = AppConfig.GetString("internal_display");
|
||||||
|
|
||||||
|
foreach (var path in paths)
|
||||||
|
{
|
||||||
|
// get display name
|
||||||
|
var info = new DISPLAYCONFIG_TARGET_DEVICE_NAME();
|
||||||
|
info.header.type = DISPLAYCONFIG_DEVICE_INFO_TYPE.DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME;
|
||||||
|
info.header.size = Marshal.SizeOf<DISPLAYCONFIG_TARGET_DEVICE_NAME>();
|
||||||
|
info.header.adapterId = path.targetInfo.adapterId;
|
||||||
|
info.header.id = path.targetInfo.id;
|
||||||
|
err = DisplayConfigGetDeviceInfo(ref info);
|
||||||
|
if (err != 0)
|
||||||
|
throw new Win32Exception(err);
|
||||||
|
|
||||||
|
var colorInfo = new DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO();
|
||||||
|
colorInfo.header.type = DISPLAYCONFIG_DEVICE_INFO_TYPE.DISPLAYCONFIG_DEVICE_INFO_GET_ADVANCED_COLOR_INFO;
|
||||||
|
colorInfo.header.size = Marshal.SizeOf<DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO>();
|
||||||
|
colorInfo.header.adapterId = path.targetInfo.adapterId;
|
||||||
|
colorInfo.header.id = path.targetInfo.id;
|
||||||
|
err = DisplayConfigGetDeviceInfo(ref colorInfo);
|
||||||
|
if (err != 0)
|
||||||
|
throw new Win32Exception(err);
|
||||||
|
|
||||||
|
|
||||||
|
if (info.outputTechnology == DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL ||
|
||||||
|
info.outputTechnology == DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED ||
|
||||||
|
info.monitorFriendlyDeviceName == internalName)
|
||||||
|
{
|
||||||
|
Logger.WriteLine(info.monitorFriendlyDeviceName + " HDR: " + colorInfo.advancedColorEnabled);
|
||||||
|
return colorInfo.advancedColorEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum DISPLAYCONFIG_DEVICE_INFO_TYPE
|
||||||
|
{
|
||||||
|
DISPLAYCONFIG_DEVICE_INFO_GET_SOURCE_NAME = 1,
|
||||||
|
DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME = 2,
|
||||||
|
DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_PREFERRED_MODE = 3,
|
||||||
|
DISPLAYCONFIG_DEVICE_INFO_GET_ADAPTER_NAME = 4,
|
||||||
|
DISPLAYCONFIG_DEVICE_INFO_SET_TARGET_PERSISTENCE = 5,
|
||||||
|
DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_BASE_TYPE = 6,
|
||||||
|
DISPLAYCONFIG_DEVICE_INFO_GET_SUPPORT_VIRTUAL_RESOLUTION = 7,
|
||||||
|
DISPLAYCONFIG_DEVICE_INFO_SET_SUPPORT_VIRTUAL_RESOLUTION = 8,
|
||||||
|
DISPLAYCONFIG_DEVICE_INFO_GET_ADVANCED_COLOR_INFO = 9,
|
||||||
|
DISPLAYCONFIG_DEVICE_INFO_SET_ADVANCED_COLOR_STATE = 10,
|
||||||
|
DISPLAYCONFIG_DEVICE_INFO_GET_SDR_WHITE_LEVEL = 11,
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum DISPLAYCONFIG_COLOR_ENCODING
|
||||||
|
{
|
||||||
|
DISPLAYCONFIG_COLOR_ENCODING_RGB = 0,
|
||||||
|
DISPLAYCONFIG_COLOR_ENCODING_YCBCR444 = 1,
|
||||||
|
DISPLAYCONFIG_COLOR_ENCODING_YCBCR422 = 2,
|
||||||
|
DISPLAYCONFIG_COLOR_ENCODING_YCBCR420 = 3,
|
||||||
|
DISPLAYCONFIG_COLOR_ENCODING_INTENSITY = 4,
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum DISPLAYCONFIG_SCALING
|
||||||
|
{
|
||||||
|
DISPLAYCONFIG_SCALING_IDENTITY = 1,
|
||||||
|
DISPLAYCONFIG_SCALING_CENTERED = 2,
|
||||||
|
DISPLAYCONFIG_SCALING_STRETCHED = 3,
|
||||||
|
DISPLAYCONFIG_SCALING_ASPECTRATIOCENTEREDMAX = 4,
|
||||||
|
DISPLAYCONFIG_SCALING_CUSTOM = 5,
|
||||||
|
DISPLAYCONFIG_SCALING_PREFERRED = 128,
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum DISPLAYCONFIG_ROTATION
|
||||||
|
{
|
||||||
|
DISPLAYCONFIG_ROTATION_IDENTITY = 1,
|
||||||
|
DISPLAYCONFIG_ROTATION_ROTATE90 = 2,
|
||||||
|
DISPLAYCONFIG_ROTATION_ROTATE180 = 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY
|
||||||
|
{
|
||||||
|
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_OTHER = -1,
|
||||||
|
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HD15 = 0,
|
||||||
|
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SVIDEO = 1,
|
||||||
|
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPOSITE_VIDEO = 2,
|
||||||
|
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPONENT_VIDEO = 3,
|
||||||
|
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DVI = 4,
|
||||||
|
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HDMI = 5,
|
||||||
|
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_LVDS = 6,
|
||||||
|
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_D_JPN = 8,
|
||||||
|
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDI = 9,
|
||||||
|
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EXTERNAL = 10,
|
||||||
|
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED = 11,
|
||||||
|
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EXTERNAL = 12,
|
||||||
|
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EMBEDDED = 13,
|
||||||
|
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDTVDONGLE = 14,
|
||||||
|
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_MIRACAST = 15,
|
||||||
|
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INDIRECT_WIRED = 16,
|
||||||
|
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INDIRECT_VIRTUAL = 17,
|
||||||
|
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL = unchecked((int)0x80000000),
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum DISPLAYCONFIG_TOPOLOGY_ID
|
||||||
|
{
|
||||||
|
DISPLAYCONFIG_TOPOLOGY_INTERNAL = 0x00000001,
|
||||||
|
DISPLAYCONFIG_TOPOLOGY_CLONE = 0x00000002,
|
||||||
|
DISPLAYCONFIG_TOPOLOGY_EXTEND = 0x00000004,
|
||||||
|
DISPLAYCONFIG_TOPOLOGY_EXTERNAL = 0x00000008,
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum DISPLAYCONFIG_PATH
|
||||||
|
{
|
||||||
|
DISPLAYCONFIG_PATH_ACTIVE = 0x00000001,
|
||||||
|
DISPLAYCONFIG_PATH_PREFERRED_UNSCALED = 0x00000004,
|
||||||
|
DISPLAYCONFIG_PATH_SUPPORT_VIRTUAL_MODE = 0x00000008,
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum DISPLAYCONFIG_SOURCE_FLAGS
|
||||||
|
{
|
||||||
|
DISPLAYCONFIG_SOURCE_IN_USE = 0x00000001,
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum DISPLAYCONFIG_TARGET_FLAGS
|
||||||
|
{
|
||||||
|
DISPLAYCONFIG_TARGET_IN_USE = 0x00000001,
|
||||||
|
DISPLAYCONFIG_TARGET_FORCIBLE = 0x00000002,
|
||||||
|
DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_BOOT = 0x00000004,
|
||||||
|
DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_PATH = 0x00000008,
|
||||||
|
DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_SYSTEM = 0x00000010,
|
||||||
|
DISPLAYCONFIG_TARGET_IS_HMD = 0x00000020,
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum QDC
|
||||||
|
{
|
||||||
|
QDC_ALL_PATHS = 0x00000001,
|
||||||
|
QDC_ONLY_ACTIVE_PATHS = 0x00000002,
|
||||||
|
QDC_DATABASE_CURRENT = 0x00000004,
|
||||||
|
QDC_VIRTUAL_MODE_AWARE = 0x00000010,
|
||||||
|
QDC_INCLUDE_HMD = 0x00000020,
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum DISPLAYCONFIG_SCANLINE_ORDERING
|
||||||
|
{
|
||||||
|
DISPLAYCONFIG_SCANLINE_ORDERING_UNSPECIFIED = 0,
|
||||||
|
DISPLAYCONFIG_SCANLINE_ORDERING_PROGRESSIVE = 1,
|
||||||
|
DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED = 2,
|
||||||
|
DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_UPPERFIELDFIRST = DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED,
|
||||||
|
DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_LOWERFIELDFIRST = 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum DISPLAYCONFIG_PIXELFORMAT
|
||||||
|
{
|
||||||
|
DISPLAYCONFIG_PIXELFORMAT_8BPP = 1,
|
||||||
|
DISPLAYCONFIG_PIXELFORMAT_16BPP = 2,
|
||||||
|
DISPLAYCONFIG_PIXELFORMAT_24BPP = 3,
|
||||||
|
DISPLAYCONFIG_PIXELFORMAT_32BPP = 4,
|
||||||
|
DISPLAYCONFIG_PIXELFORMAT_NONGDI = 5,
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum DISPLAYCONFIG_MODE_INFO_TYPE
|
||||||
|
{
|
||||||
|
DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE = 1,
|
||||||
|
DISPLAYCONFIG_MODE_INFO_TYPE_TARGET = 2,
|
||||||
|
DISPLAYCONFIG_MODE_INFO_TYPE_DESKTOP_IMAGE = 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
private struct DISPLAYCONFIG_DEVICE_INFO_HEADER
|
||||||
|
{
|
||||||
|
public DISPLAYCONFIG_DEVICE_INFO_TYPE type;
|
||||||
|
public int size;
|
||||||
|
public LUID adapterId;
|
||||||
|
public uint id;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
private struct DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO
|
||||||
|
{
|
||||||
|
public DISPLAYCONFIG_DEVICE_INFO_HEADER header;
|
||||||
|
public uint value;
|
||||||
|
public DISPLAYCONFIG_COLOR_ENCODING colorEncoding;
|
||||||
|
public int bitsPerColorChannel;
|
||||||
|
|
||||||
|
public bool advancedColorSupported => (value & 0x1) == 0x1;
|
||||||
|
public bool advancedColorEnabled => (value & 0x2) == 0x2;
|
||||||
|
public bool wideColorEnforced => (value & 0x4) == 0x4;
|
||||||
|
public bool advancedColorForceDisabled => (value & 0x8) == 0x8;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
private struct POINTL
|
||||||
|
{
|
||||||
|
public int x;
|
||||||
|
public int y;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
private struct LUID
|
||||||
|
{
|
||||||
|
public uint LowPart;
|
||||||
|
public int HighPart;
|
||||||
|
|
||||||
|
public long Value => ((long)HighPart << 32) | LowPart;
|
||||||
|
public override string ToString() => Value.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
private struct DISPLAYCONFIG_SOURCE_MODE
|
||||||
|
{
|
||||||
|
public uint width;
|
||||||
|
public uint height;
|
||||||
|
public DISPLAYCONFIG_PIXELFORMAT pixelFormat;
|
||||||
|
public POINTL position;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
private struct DISPLAYCONFIG_RATIONAL
|
||||||
|
{
|
||||||
|
public uint Numerator;
|
||||||
|
public uint Denominator;
|
||||||
|
|
||||||
|
public override string ToString() => Numerator + " / " + Denominator;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
private struct DISPLAYCONFIG_2DREGION
|
||||||
|
{
|
||||||
|
public uint cx;
|
||||||
|
public uint cy;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
private struct DISPLAYCONFIG_DESKTOP_IMAGE_INFO
|
||||||
|
{
|
||||||
|
public POINTL PathSourceSize;
|
||||||
|
public RECT DesktopImageRegion;
|
||||||
|
public RECT DesktopImageClip;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
private struct DISPLAYCONFIG_VIDEO_SIGNAL_INFO
|
||||||
|
{
|
||||||
|
public ulong pixelRate;
|
||||||
|
public DISPLAYCONFIG_RATIONAL hSyncFreq;
|
||||||
|
public DISPLAYCONFIG_RATIONAL vSyncFreq;
|
||||||
|
public DISPLAYCONFIG_2DREGION activeSize;
|
||||||
|
public DISPLAYCONFIG_2DREGION totalSize;
|
||||||
|
public uint videoStandard;
|
||||||
|
public DISPLAYCONFIG_SCANLINE_ORDERING scanLineOrdering;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
private struct DISPLAYCONFIG_TARGET_MODE
|
||||||
|
{
|
||||||
|
public DISPLAYCONFIG_VIDEO_SIGNAL_INFO targetVideoSignalInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Explicit)]
|
||||||
|
private struct DISPLAYCONFIG_MODE_INFO_union
|
||||||
|
{
|
||||||
|
[FieldOffset(0)]
|
||||||
|
public DISPLAYCONFIG_TARGET_MODE targetMode;
|
||||||
|
|
||||||
|
[FieldOffset(0)]
|
||||||
|
public DISPLAYCONFIG_SOURCE_MODE sourceMode;
|
||||||
|
|
||||||
|
[FieldOffset(0)]
|
||||||
|
public DISPLAYCONFIG_DESKTOP_IMAGE_INFO desktopImageInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
private struct DISPLAYCONFIG_PATH_SOURCE_INFO
|
||||||
|
{
|
||||||
|
public LUID adapterId;
|
||||||
|
public uint id;
|
||||||
|
public uint modeInfoIdx;
|
||||||
|
public DISPLAYCONFIG_SOURCE_FLAGS statusFlags;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
private struct DISPLAYCONFIG_PATH_TARGET_INFO
|
||||||
|
{
|
||||||
|
public LUID adapterId;
|
||||||
|
public uint id;
|
||||||
|
public uint modeInfoIdx;
|
||||||
|
public DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY outputTechnology;
|
||||||
|
public DISPLAYCONFIG_ROTATION rotation;
|
||||||
|
public DISPLAYCONFIG_SCALING scaling;
|
||||||
|
public DISPLAYCONFIG_RATIONAL refreshRate;
|
||||||
|
public DISPLAYCONFIG_SCANLINE_ORDERING scanLineOrdering;
|
||||||
|
public bool targetAvailable;
|
||||||
|
public DISPLAYCONFIG_TARGET_FLAGS statusFlags;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
private struct DISPLAYCONFIG_PATH_INFO
|
||||||
|
{
|
||||||
|
public DISPLAYCONFIG_PATH_SOURCE_INFO sourceInfo;
|
||||||
|
public DISPLAYCONFIG_PATH_TARGET_INFO targetInfo;
|
||||||
|
public DISPLAYCONFIG_PATH flags;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
private struct DISPLAYCONFIG_MODE_INFO
|
||||||
|
{
|
||||||
|
public DISPLAYCONFIG_MODE_INFO_TYPE infoType;
|
||||||
|
public uint id;
|
||||||
|
public LUID adapterId;
|
||||||
|
public DISPLAYCONFIG_MODE_INFO_union info;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
|
||||||
|
private struct DISPLAYCONFIG_SOURCE_DEVICE_NAME
|
||||||
|
{
|
||||||
|
public DISPLAYCONFIG_DEVICE_INFO_HEADER header;
|
||||||
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
|
||||||
|
public string viewGdiDeviceName;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
|
||||||
|
private struct DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS
|
||||||
|
{
|
||||||
|
public uint value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
|
||||||
|
private struct DISPLAYCONFIG_TARGET_DEVICE_NAME
|
||||||
|
{
|
||||||
|
public DISPLAYCONFIG_DEVICE_INFO_HEADER header;
|
||||||
|
public DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS flags;
|
||||||
|
public DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY outputTechnology;
|
||||||
|
public ushort edidManufactureId;
|
||||||
|
public ushort edidProductCodeId;
|
||||||
|
public uint connectorInstance;
|
||||||
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
|
||||||
|
public string monitorFriendlyDeviceName;
|
||||||
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
|
||||||
|
public string monitorDevicePat;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
private struct RECT
|
||||||
|
{
|
||||||
|
public int left;
|
||||||
|
public int top;
|
||||||
|
public int right;
|
||||||
|
public int bottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
[DllImport("user32")]
|
||||||
|
private static extern int GetDisplayConfigBufferSizes(QDC flags, out int numPathArrayElements, out int numModeInfoArrayElements);
|
||||||
|
|
||||||
|
[DllImport("user32")]
|
||||||
|
private static extern int QueryDisplayConfig(QDC flags, ref int numPathArrayElements, [In, Out] DISPLAYCONFIG_PATH_INFO[] pathArray, ref int numModeInfoArrayElements, [In, Out] DISPLAYCONFIG_MODE_INFO[] modeInfoArray, out DISPLAYCONFIG_TOPOLOGY_ID currentTopologyId);
|
||||||
|
|
||||||
|
[DllImport("user32")]
|
||||||
|
private static extern int QueryDisplayConfig(QDC flags, ref int numPathArrayElements, [In, Out] DISPLAYCONFIG_PATH_INFO[] pathArray, ref int numModeInfoArrayElements, [In, Out] DISPLAYCONFIG_MODE_INFO[] modeInfoArray, IntPtr currentTopologyId);
|
||||||
|
|
||||||
|
[DllImport("user32")]
|
||||||
|
private static extern int DisplayConfigGetDeviceInfo(ref DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO requestPacket);
|
||||||
|
|
||||||
|
[DllImport("user32")]
|
||||||
|
private static extern int DisplayConfigGetDeviceInfo(ref DISPLAYCONFIG_SOURCE_DEVICE_NAME requestPacket);
|
||||||
|
|
||||||
|
[DllImport("user32")]
|
||||||
|
private static extern int DisplayConfigGetDeviceInfo(ref DISPLAYCONFIG_TARGET_DEVICE_NAME requestPacket);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -59,7 +59,7 @@ namespace GHelper.Display
|
|||||||
|
|
||||||
public void ToogleMiniled()
|
public void ToogleMiniled()
|
||||||
{
|
{
|
||||||
int miniled = (AppConfig.Get("miniled") == 1) ? 0 : 1;
|
int miniled = (Program.acpi.DeviceGet(AsusACPI.ScreenMiniled) == 1) ? 0 : 1;
|
||||||
AppConfig.Set("miniled", miniled);
|
AppConfig.Set("miniled", miniled);
|
||||||
SetScreen(-1, -1, miniled);
|
SetScreen(-1, -1, miniled);
|
||||||
}
|
}
|
||||||
@@ -77,8 +77,13 @@ namespace GHelper.Display
|
|||||||
int overdrive = Program.acpi.DeviceGet(AsusACPI.ScreenOverdrive);
|
int overdrive = Program.acpi.DeviceGet(AsusACPI.ScreenOverdrive);
|
||||||
int miniled = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled);
|
int miniled = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled);
|
||||||
|
|
||||||
|
bool hdr = false;
|
||||||
|
|
||||||
if (miniled >= 0)
|
if (miniled >= 0)
|
||||||
|
{
|
||||||
AppConfig.Set("miniled", miniled);
|
AppConfig.Set("miniled", miniled);
|
||||||
|
hdr = ScreenCCD.GetHDRStatus();
|
||||||
|
}
|
||||||
|
|
||||||
bool screenEnabled = (frequency >= 0);
|
bool screenEnabled = (frequency >= 0);
|
||||||
|
|
||||||
@@ -94,7 +99,8 @@ namespace GHelper.Display
|
|||||||
maxFrequency: maxFrequency,
|
maxFrequency: maxFrequency,
|
||||||
overdrive: overdrive,
|
overdrive: overdrive,
|
||||||
overdriveSetting: overdriveSetting,
|
overdriveSetting: overdriveSetting,
|
||||||
miniled: miniled
|
miniled: miniled,
|
||||||
|
hdr: hdr
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
using System.ComponentModel;
|
using GHelper.Helpers;
|
||||||
|
using NvAPIWrapper.Display;
|
||||||
|
using System.ComponentModel;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace GHelper.Display
|
namespace GHelper.Display
|
||||||
@@ -259,6 +261,49 @@ namespace GHelper.Display
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
[Flags]
|
||||||
|
public enum DisplayDeviceStates : int
|
||||||
|
{
|
||||||
|
ATTACHED_TO_DESKTOP = 0x01,
|
||||||
|
PRIMARY_DEVICE = 0x04,
|
||||||
|
MIRRORING_DRIVER = 0x08,
|
||||||
|
VGA_COMPATIBLE = 0x10,
|
||||||
|
REMOVABLE = 0x20,
|
||||||
|
DISCONNECTED = 0x2000000,
|
||||||
|
REMOTE = 0x4000000,
|
||||||
|
MODESPRUNED = 0x8000000
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
|
||||||
|
public struct DISPLAY_DEVICE
|
||||||
|
{
|
||||||
|
public int cb;
|
||||||
|
|
||||||
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
|
||||||
|
public string DeviceName;
|
||||||
|
|
||||||
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
|
||||||
|
public string DeviceString;
|
||||||
|
|
||||||
|
public DisplayDeviceStates StateFlags;
|
||||||
|
|
||||||
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
|
||||||
|
public string DeviceID;
|
||||||
|
|
||||||
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
|
||||||
|
public string DeviceKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[DllImport(nameof(User32), CharSet = CharSet.Unicode, SetLastError = true)]
|
||||||
|
public static extern bool EnumDisplayDevices(
|
||||||
|
string? lpDevice,
|
||||||
|
uint iDevNum,
|
||||||
|
ref DISPLAY_DEVICE lpDisplayDevice,
|
||||||
|
uint dwFlags);
|
||||||
|
|
||||||
|
|
||||||
private static DISPLAYCONFIG_TARGET_DEVICE_NAME DeviceName(LUID adapterId, uint targetId)
|
private static DISPLAYCONFIG_TARGET_DEVICE_NAME DeviceName(LUID adapterId, uint targetId)
|
||||||
{
|
{
|
||||||
var deviceName = new DISPLAYCONFIG_TARGET_DEVICE_NAME
|
var deviceName = new DISPLAYCONFIG_TARGET_DEVICE_NAME
|
||||||
@@ -298,6 +343,33 @@ namespace GHelper.Display
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static IEnumerable<DISPLAY_DEVICE> GetDisplayDevices()
|
||||||
|
{
|
||||||
|
|
||||||
|
var displayAdapter = new DISPLAY_DEVICE();
|
||||||
|
displayAdapter.cb = Marshal.SizeOf<DISPLAY_DEVICE>();
|
||||||
|
|
||||||
|
var displayAdapterNumber = default(uint);
|
||||||
|
while (EnumDisplayDevices(null, displayAdapterNumber, ref displayAdapter, 1))
|
||||||
|
{
|
||||||
|
var displayMonitor = new DISPLAY_DEVICE();
|
||||||
|
displayMonitor.cb = Marshal.SizeOf<DISPLAY_DEVICE>();
|
||||||
|
|
||||||
|
var displayMonitorNumber = default(uint);
|
||||||
|
while (EnumDisplayDevices(displayAdapter.DeviceName, displayMonitorNumber, ref displayMonitor, 1))
|
||||||
|
{
|
||||||
|
var isAttached = (displayMonitor.StateFlags & DisplayDeviceStates.ATTACHED_TO_DESKTOP) == DisplayDeviceStates.ATTACHED_TO_DESKTOP;
|
||||||
|
var isMirroring = (displayMonitor.StateFlags & DisplayDeviceStates.MIRRORING_DRIVER) == DisplayDeviceStates.MIRRORING_DRIVER;
|
||||||
|
if (isAttached && !isMirroring) yield return displayMonitor;
|
||||||
|
displayMonitorNumber++;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
displayAdapterNumber++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,35 @@
|
|||||||
using System.Runtime.InteropServices;
|
using System.Collections;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
using static GHelper.Display.ScreenInterrogatory;
|
using static GHelper.Display.ScreenInterrogatory;
|
||||||
|
|
||||||
namespace GHelper.Display
|
namespace GHelper.Display
|
||||||
{
|
{
|
||||||
|
|
||||||
|
class DeviceComparer : IComparer
|
||||||
|
{
|
||||||
|
public int Compare(object x, object y)
|
||||||
|
{
|
||||||
|
uint displayX = ((DISPLAYCONFIG_TARGET_DEVICE_NAME)x).connectorInstance;
|
||||||
|
uint displayY = ((DISPLAYCONFIG_TARGET_DEVICE_NAME)y).connectorInstance;
|
||||||
|
|
||||||
|
if (displayX > displayY)
|
||||||
|
return 1;
|
||||||
|
if (displayX < displayY)
|
||||||
|
return -1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ScreenComparer : IComparer
|
||||||
|
{
|
||||||
|
public int Compare(object x, object y)
|
||||||
|
{
|
||||||
|
int displayX = Int32.Parse(((Screen)x).DeviceName.Replace(@"\\.\DISPLAY", ""));
|
||||||
|
int displayY = Int32.Parse(((Screen)y).DeviceName.Replace(@"\\.\DISPLAY", ""));
|
||||||
|
return (new CaseInsensitiveComparer()).Compare(displayX, displayY);
|
||||||
|
}
|
||||||
|
}
|
||||||
internal class ScreenNative
|
internal class ScreenNative
|
||||||
{
|
{
|
||||||
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
|
||||||
@@ -118,39 +145,12 @@ namespace GHelper.Display
|
|||||||
public const int ENUM_CURRENT_SETTINGS = -1;
|
public const int ENUM_CURRENT_SETTINGS = -1;
|
||||||
public const string defaultDevice = @"\\.\DISPLAY1";
|
public const string defaultDevice = @"\\.\DISPLAY1";
|
||||||
|
|
||||||
static bool? _ultimate = null;
|
|
||||||
|
|
||||||
static bool isUltimate
|
private static string? FindInternalName(bool log = false)
|
||||||
{
|
{
|
||||||
get
|
|
||||||
{
|
|
||||||
if (_ultimate is null) _ultimate = (Program.acpi.DeviceGet(AsusACPI.GPUMux) == 0);
|
|
||||||
return (bool)_ultimate;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string? FindLaptopScreen(bool log = false)
|
|
||||||
{
|
|
||||||
string? laptopScreen = null;
|
|
||||||
var screens = Screen.AllScreens;
|
|
||||||
|
|
||||||
/*
|
|
||||||
if (!isUltimate)
|
|
||||||
{
|
|
||||||
foreach (var screen in screens )
|
|
||||||
{
|
|
||||||
if (log) Logger.WriteLine(screen.DeviceName);
|
|
||||||
if (screen.DeviceName == defaultDevice) return defaultDevice;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var devices = GetAllDevices().ToArray();
|
var devices = GetAllDevices().ToArray();
|
||||||
|
|
||||||
int count = 0, displayNum = -1;
|
|
||||||
|
|
||||||
string internalName = AppConfig.GetString("internal_display");
|
string internalName = AppConfig.GetString("internal_display");
|
||||||
|
|
||||||
foreach (var device in devices)
|
foreach (var device in devices)
|
||||||
@@ -159,29 +159,71 @@ namespace GHelper.Display
|
|||||||
device.outputTechnology == DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED ||
|
device.outputTechnology == DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED ||
|
||||||
device.monitorFriendlyDeviceName == internalName)
|
device.monitorFriendlyDeviceName == internalName)
|
||||||
{
|
{
|
||||||
displayNum = count;
|
if (log) Logger.WriteLine(device.monitorDevicePath + " " + device.outputTechnology);
|
||||||
|
|
||||||
AppConfig.Set("internal_display", device.monitorFriendlyDeviceName);
|
AppConfig.Set("internal_display", device.monitorFriendlyDeviceName);
|
||||||
|
var names = device.monitorDevicePath.Split("#");
|
||||||
|
|
||||||
|
if (names.Length > 1) return names[1];
|
||||||
|
else return "";
|
||||||
}
|
}
|
||||||
if (log) Logger.WriteLine(device.monitorFriendlyDeviceName + ":" + device.outputTechnology.ToString() + ": " + ((count < screens.Length) ? screens[count].DeviceName : ""));
|
|
||||||
count++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
count = 0;
|
|
||||||
foreach (var screen in screens)
|
|
||||||
{
|
|
||||||
if (count == displayNum) laptopScreen = screen.DeviceName;
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (displayNum > 0 && count == 0) laptopScreen = defaultDevice;
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.WriteLine(ex.ToString());
|
Logger.WriteLine(ex.ToString());
|
||||||
Logger.WriteLine("Can't detect internal screen");
|
|
||||||
laptopScreen = Screen.PrimaryScreen.DeviceName;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
static string ExtractDisplay(string input)
|
||||||
|
{
|
||||||
|
int index = input.IndexOf('\\', 4); // Start searching from index 4 to skip ""
|
||||||
|
|
||||||
|
if (index != -1)
|
||||||
|
{
|
||||||
|
string extracted = input.Substring(0, index);
|
||||||
|
return extracted;
|
||||||
|
}
|
||||||
|
|
||||||
|
return input;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string? FindLaptopScreen(bool log = false)
|
||||||
|
{
|
||||||
|
string? laptopScreen = null;
|
||||||
|
string? internalName = FindInternalName(log);
|
||||||
|
|
||||||
|
if (internalName == null)
|
||||||
|
{
|
||||||
|
Logger.WriteLine("Internal screen off");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var displays = GetDisplayDevices().ToArray();
|
||||||
|
foreach (var display in displays)
|
||||||
|
{
|
||||||
|
if (log) Logger.WriteLine(display.DeviceID + " " + display.DeviceName);
|
||||||
|
if (display.DeviceID.Contains(internalName))
|
||||||
|
{
|
||||||
|
laptopScreen = ExtractDisplay(display.DeviceName);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.WriteLine(ex.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (laptopScreen is null)
|
||||||
|
{
|
||||||
|
Logger.WriteLine("Default internal screen");
|
||||||
|
laptopScreen = Screen.PrimaryScreen.DeviceName;
|
||||||
|
}
|
||||||
|
|
||||||
return laptopScreen;
|
return laptopScreen;
|
||||||
}
|
}
|
||||||
|
|||||||
31
app/Extra.Designer.cs
generated
31
app/Extra.Designer.cs
generated
@@ -31,6 +31,7 @@ namespace GHelper
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
|
components = new System.ComponentModel.Container();
|
||||||
panelServices = new Panel();
|
panelServices = new Panel();
|
||||||
pictureService = new PictureBox();
|
pictureService = new PictureBox();
|
||||||
labelServices = new Label();
|
labelServices = new Label();
|
||||||
@@ -113,6 +114,8 @@ namespace GHelper
|
|||||||
numericHibernateAfter = new NumericUpDown();
|
numericHibernateAfter = new NumericUpDown();
|
||||||
labelHibernateAfter = new Label();
|
labelHibernateAfter = new Label();
|
||||||
pictureHibernate = new PictureBox();
|
pictureHibernate = new PictureBox();
|
||||||
|
toolTip = new ToolTip(components);
|
||||||
|
checkBootSound = new CheckBox();
|
||||||
panelServices.SuspendLayout();
|
panelServices.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)pictureService).BeginInit();
|
((System.ComponentModel.ISupportInitialize)pictureService).BeginInit();
|
||||||
panelBindingsHeader.SuspendLayout();
|
panelBindingsHeader.SuspendLayout();
|
||||||
@@ -145,7 +148,7 @@ namespace GHelper
|
|||||||
panelServices.Controls.Add(labelServices);
|
panelServices.Controls.Add(labelServices);
|
||||||
panelServices.Controls.Add(buttonServices);
|
panelServices.Controls.Add(buttonServices);
|
||||||
panelServices.Dock = DockStyle.Top;
|
panelServices.Dock = DockStyle.Top;
|
||||||
panelServices.Location = new Point(15, 1279);
|
panelServices.Location = new Point(15, 1321);
|
||||||
panelServices.Name = "panelServices";
|
panelServices.Name = "panelServices";
|
||||||
panelServices.Size = new Size(983, 75);
|
panelServices.Size = new Size(983, 75);
|
||||||
panelServices.TabIndex = 5;
|
panelServices.TabIndex = 5;
|
||||||
@@ -1063,6 +1066,7 @@ namespace GHelper
|
|||||||
panelSettings.Controls.Add(checkAutoToggleClamshellMode);
|
panelSettings.Controls.Add(checkAutoToggleClamshellMode);
|
||||||
panelSettings.Controls.Add(checkTopmost);
|
panelSettings.Controls.Add(checkTopmost);
|
||||||
panelSettings.Controls.Add(checkNoOverdrive);
|
panelSettings.Controls.Add(checkNoOverdrive);
|
||||||
|
panelSettings.Controls.Add(checkBootSound);
|
||||||
panelSettings.Controls.Add(checkUSBC);
|
panelSettings.Controls.Add(checkUSBC);
|
||||||
panelSettings.Controls.Add(checkVariBright);
|
panelSettings.Controls.Add(checkVariBright);
|
||||||
panelSettings.Controls.Add(checkGpuApps);
|
panelSettings.Controls.Add(checkGpuApps);
|
||||||
@@ -1071,14 +1075,14 @@ namespace GHelper
|
|||||||
panelSettings.Location = new Point(15, 921);
|
panelSettings.Location = new Point(15, 921);
|
||||||
panelSettings.Name = "panelSettings";
|
panelSettings.Name = "panelSettings";
|
||||||
panelSettings.Padding = new Padding(20, 5, 11, 5);
|
panelSettings.Padding = new Padding(20, 5, 11, 5);
|
||||||
panelSettings.Size = new Size(983, 304);
|
panelSettings.Size = new Size(983, 346);
|
||||||
panelSettings.TabIndex = 3;
|
panelSettings.TabIndex = 3;
|
||||||
//
|
//
|
||||||
// checkAutoToggleClamshellMode
|
// checkAutoToggleClamshellMode
|
||||||
//
|
//
|
||||||
checkAutoToggleClamshellMode.AutoSize = true;
|
checkAutoToggleClamshellMode.AutoSize = true;
|
||||||
checkAutoToggleClamshellMode.Dock = DockStyle.Top;
|
checkAutoToggleClamshellMode.Dock = DockStyle.Top;
|
||||||
checkAutoToggleClamshellMode.Location = new Point(20, 257);
|
checkAutoToggleClamshellMode.Location = new Point(20, 299);
|
||||||
checkAutoToggleClamshellMode.Name = "checkAutoToggleClamshellMode";
|
checkAutoToggleClamshellMode.Name = "checkAutoToggleClamshellMode";
|
||||||
checkAutoToggleClamshellMode.Padding = new Padding(3);
|
checkAutoToggleClamshellMode.Padding = new Padding(3);
|
||||||
checkAutoToggleClamshellMode.Size = new Size(952, 42);
|
checkAutoToggleClamshellMode.Size = new Size(952, 42);
|
||||||
@@ -1090,7 +1094,7 @@ namespace GHelper
|
|||||||
//
|
//
|
||||||
checkTopmost.AutoSize = true;
|
checkTopmost.AutoSize = true;
|
||||||
checkTopmost.Dock = DockStyle.Top;
|
checkTopmost.Dock = DockStyle.Top;
|
||||||
checkTopmost.Location = new Point(20, 215);
|
checkTopmost.Location = new Point(20, 257);
|
||||||
checkTopmost.Margin = new Padding(4, 3, 4, 3);
|
checkTopmost.Margin = new Padding(4, 3, 4, 3);
|
||||||
checkTopmost.Name = "checkTopmost";
|
checkTopmost.Name = "checkTopmost";
|
||||||
checkTopmost.Padding = new Padding(3);
|
checkTopmost.Padding = new Padding(3);
|
||||||
@@ -1103,7 +1107,7 @@ namespace GHelper
|
|||||||
//
|
//
|
||||||
checkNoOverdrive.AutoSize = true;
|
checkNoOverdrive.AutoSize = true;
|
||||||
checkNoOverdrive.Dock = DockStyle.Top;
|
checkNoOverdrive.Dock = DockStyle.Top;
|
||||||
checkNoOverdrive.Location = new Point(20, 173);
|
checkNoOverdrive.Location = new Point(20, 215);
|
||||||
checkNoOverdrive.Margin = new Padding(4, 3, 4, 3);
|
checkNoOverdrive.Margin = new Padding(4, 3, 4, 3);
|
||||||
checkNoOverdrive.Name = "checkNoOverdrive";
|
checkNoOverdrive.Name = "checkNoOverdrive";
|
||||||
checkNoOverdrive.Padding = new Padding(3);
|
checkNoOverdrive.Padding = new Padding(3);
|
||||||
@@ -1170,7 +1174,7 @@ namespace GHelper
|
|||||||
panelPower.Controls.Add(labelHibernateAfter);
|
panelPower.Controls.Add(labelHibernateAfter);
|
||||||
panelPower.Controls.Add(pictureHibernate);
|
panelPower.Controls.Add(pictureHibernate);
|
||||||
panelPower.Dock = DockStyle.Top;
|
panelPower.Dock = DockStyle.Top;
|
||||||
panelPower.Location = new Point(15, 1225);
|
panelPower.Location = new Point(15, 1267);
|
||||||
panelPower.Name = "panelPower";
|
panelPower.Name = "panelPower";
|
||||||
panelPower.Size = new Size(983, 54);
|
panelPower.Size = new Size(983, 54);
|
||||||
panelPower.TabIndex = 4;
|
panelPower.TabIndex = 4;
|
||||||
@@ -1207,6 +1211,19 @@ namespace GHelper
|
|||||||
pictureHibernate.TabIndex = 22;
|
pictureHibernate.TabIndex = 22;
|
||||||
pictureHibernate.TabStop = false;
|
pictureHibernate.TabStop = false;
|
||||||
//
|
//
|
||||||
|
// checkBootSound
|
||||||
|
//
|
||||||
|
checkBootSound.AutoSize = true;
|
||||||
|
checkBootSound.Dock = DockStyle.Top;
|
||||||
|
checkBootSound.Location = new Point(20, 173);
|
||||||
|
checkBootSound.Margin = new Padding(4, 3, 4, 3);
|
||||||
|
checkBootSound.Name = "checkBootSound";
|
||||||
|
checkBootSound.Padding = new Padding(3);
|
||||||
|
checkBootSound.Size = new Size(952, 42);
|
||||||
|
checkBootSound.TabIndex = 10;
|
||||||
|
checkBootSound.Text = "Boot Sound";
|
||||||
|
checkBootSound.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
// Extra
|
// Extra
|
||||||
//
|
//
|
||||||
AutoScaleDimensions = new SizeF(192F, 192F);
|
AutoScaleDimensions = new SizeF(192F, 192F);
|
||||||
@@ -1353,5 +1370,7 @@ namespace GHelper
|
|||||||
private Label labelHibernateAfter;
|
private Label labelHibernateAfter;
|
||||||
private NumericUpDown numericHibernateAfter;
|
private NumericUpDown numericHibernateAfter;
|
||||||
private CheckBox checkGPUFix;
|
private CheckBox checkGPUFix;
|
||||||
|
private ToolTip toolTip;
|
||||||
|
private CheckBox checkBootSound;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
76
app/Extra.cs
76
app/Extra.cs
@@ -16,25 +16,33 @@ namespace GHelper
|
|||||||
|
|
||||||
const string EMPTY = "--------------";
|
const string EMPTY = "--------------";
|
||||||
|
|
||||||
Dictionary<string, string> customActions = new Dictionary<string, string>
|
|
||||||
{
|
|
||||||
{"", EMPTY},
|
|
||||||
{"mute", Properties.Strings.VolumeMute},
|
|
||||||
{"screenshot", Properties.Strings.PrintScreen},
|
|
||||||
{"play", Properties.Strings.PlayPause},
|
|
||||||
{"aura", Properties.Strings.ToggleAura},
|
|
||||||
{"performance", Properties.Strings.PerformanceMode},
|
|
||||||
{"screen", Properties.Strings.ToggleScreen},
|
|
||||||
{"miniled", Properties.Strings.ToggleMiniled},
|
|
||||||
{"fnlock", Properties.Strings.ToggleFnLock},
|
|
||||||
{"brightness_down", Properties.Strings.BrightnessDown},
|
|
||||||
{"brightness_up", Properties.Strings.BrightnessUp},
|
|
||||||
{"custom", Properties.Strings.Custom}
|
|
||||||
};
|
|
||||||
|
|
||||||
private void SetKeyCombo(ComboBox combo, TextBox txbox, string name)
|
private void SetKeyCombo(ComboBox combo, TextBox txbox, string name)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Dictionary<string, string> customActions = new Dictionary<string, string>
|
||||||
|
{
|
||||||
|
{"", EMPTY},
|
||||||
|
{"mute", Properties.Strings.VolumeMute},
|
||||||
|
{"screenshot", Properties.Strings.PrintScreen},
|
||||||
|
{"play", Properties.Strings.PlayPause},
|
||||||
|
{"aura", Properties.Strings.ToggleAura},
|
||||||
|
{"performance", Properties.Strings.PerformanceMode},
|
||||||
|
{"screen", Properties.Strings.ToggleScreen},
|
||||||
|
{"miniled", Properties.Strings.ToggleMiniled},
|
||||||
|
{"fnlock", Properties.Strings.ToggleFnLock},
|
||||||
|
{"brightness_down", Properties.Strings.BrightnessDown},
|
||||||
|
{"brightness_up", Properties.Strings.BrightnessUp},
|
||||||
|
{"ghelper", Properties.Strings.OpenGHelper},
|
||||||
|
{"custom", Properties.Strings.Custom}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (AppConfig.IsDUO())
|
||||||
|
{
|
||||||
|
customActions.Add("screenpad_down", Properties.Strings.ScreenPadDown);
|
||||||
|
customActions.Add("screenpad_up", Properties.Strings.ScreenPadUp);
|
||||||
|
}
|
||||||
|
|
||||||
switch (name)
|
switch (name)
|
||||||
{
|
{
|
||||||
case "m1":
|
case "m1":
|
||||||
@@ -48,6 +56,7 @@ namespace GHelper
|
|||||||
break;
|
break;
|
||||||
case "m4":
|
case "m4":
|
||||||
customActions[""] = Properties.Strings.OpenGHelper;
|
customActions[""] = Properties.Strings.OpenGHelper;
|
||||||
|
customActions.Remove("ghelper");
|
||||||
break;
|
break;
|
||||||
case "fnf4":
|
case "fnf4":
|
||||||
customActions[""] = Properties.Strings.ToggleAura;
|
customActions[""] = Properties.Strings.ToggleAura;
|
||||||
@@ -59,7 +68,6 @@ namespace GHelper
|
|||||||
break;
|
break;
|
||||||
case "fne":
|
case "fne":
|
||||||
customActions[""] = "Calculator";
|
customActions[""] = "Calculator";
|
||||||
customActions["ghelper"] = Properties.Strings.OpenGHelper;
|
|
||||||
break;
|
break;
|
||||||
case "paddle":
|
case "paddle":
|
||||||
customActions[""] = EMPTY;
|
customActions[""] = EMPTY;
|
||||||
@@ -108,6 +116,7 @@ namespace GHelper
|
|||||||
checkSleep.Text = Properties.Strings.Sleep;
|
checkSleep.Text = Properties.Strings.Sleep;
|
||||||
checkBoot.Text = Properties.Strings.Boot;
|
checkBoot.Text = Properties.Strings.Boot;
|
||||||
checkShutdown.Text = Properties.Strings.Shutdown;
|
checkShutdown.Text = Properties.Strings.Shutdown;
|
||||||
|
checkBootSound.Text = Properties.Strings.BootSound;
|
||||||
|
|
||||||
labelSpeed.Text = Properties.Strings.AnimationSpeed;
|
labelSpeed.Text = Properties.Strings.AnimationSpeed;
|
||||||
//labelBrightness.Text = Properties.Strings.Brightness;
|
//labelBrightness.Text = Properties.Strings.Brightness;
|
||||||
@@ -130,10 +139,13 @@ namespace GHelper
|
|||||||
|
|
||||||
Text = Properties.Strings.ExtraSettings;
|
Text = Properties.Strings.ExtraSettings;
|
||||||
|
|
||||||
if (AppConfig.IsDUO())
|
if (AppConfig.IsARCNM())
|
||||||
{
|
{
|
||||||
customActions.Add("screenpad_down", Properties.Strings.ScreenPadDown);
|
labelM3.Text = "FN+F6";
|
||||||
customActions.Add("screenpad_up", Properties.Strings.ScreenPadUp);
|
labelM1.Visible = comboM1.Visible = textM1.Visible = false;
|
||||||
|
labelM2.Visible = comboM2.Visible = textM2.Visible = false;
|
||||||
|
labelM4.Visible = comboM4.Visible = textM4.Visible = false;
|
||||||
|
labelFNF4.Visible = comboFNF4.Visible = textFNF4.Visible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (AppConfig.NoMKeys())
|
if (AppConfig.NoMKeys())
|
||||||
@@ -183,7 +195,6 @@ namespace GHelper
|
|||||||
SetKeyCombo(comboFNF4, textFNF4, "paddle");
|
SetKeyCombo(comboFNF4, textFNF4, "paddle");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SetKeyCombo(comboM1, textM1, "m1");
|
SetKeyCombo(comboM1, textM1, "m1");
|
||||||
@@ -197,6 +208,10 @@ namespace GHelper
|
|||||||
SetKeyCombo(comboFNE, textFNE, "fne");
|
SetKeyCombo(comboFNE, textFNE, "fne");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (AppConfig.IsStrix())
|
||||||
|
{
|
||||||
|
labelM4.Text = "M5/ROG";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
InitTheme();
|
InitTheme();
|
||||||
@@ -308,6 +323,9 @@ namespace GHelper
|
|||||||
checkGpuApps.Checked = AppConfig.Is("kill_gpu_apps");
|
checkGpuApps.Checked = AppConfig.Is("kill_gpu_apps");
|
||||||
checkGpuApps.CheckedChanged += CheckGpuApps_CheckedChanged;
|
checkGpuApps.CheckedChanged += CheckGpuApps_CheckedChanged;
|
||||||
|
|
||||||
|
checkBootSound.Checked = (Program.acpi.DeviceGet(AsusACPI.BootSound) == 1);
|
||||||
|
checkBootSound.CheckedChanged += CheckBootSound_CheckedChanged;
|
||||||
|
|
||||||
pictureHelp.Click += PictureHelp_Click;
|
pictureHelp.Click += PictureHelp_Click;
|
||||||
buttonServices.Click += ButtonServices_Click;
|
buttonServices.Click += ButtonServices_Click;
|
||||||
|
|
||||||
@@ -317,11 +335,18 @@ namespace GHelper
|
|||||||
checkGPUFix.Checked = AppConfig.IsGPUFix();
|
checkGPUFix.Checked = AppConfig.IsGPUFix();
|
||||||
checkGPUFix.CheckedChanged += CheckGPUFix_CheckedChanged;
|
checkGPUFix.CheckedChanged += CheckGPUFix_CheckedChanged;
|
||||||
|
|
||||||
|
toolTip.SetToolTip(checkAutoToggleClamshellMode, "Disable sleep on lid close when plugged in and external monitor is connected");
|
||||||
|
|
||||||
InitVariBright();
|
InitVariBright();
|
||||||
InitServices();
|
InitServices();
|
||||||
InitHibernate();
|
InitHibernate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void CheckBootSound_CheckedChanged(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Program.acpi.DeviceSet(AsusACPI.BootSound, (checkBootSound.Checked ? 1 : 0), "BootSound");
|
||||||
|
}
|
||||||
|
|
||||||
private void CheckGPUFix_CheckedChanged(object? sender, EventArgs e)
|
private void CheckGPUFix_CheckedChanged(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
AppConfig.Set("gpu_fix", (checkGPUFix.Checked ? 1 : 0));
|
AppConfig.Set("gpu_fix", (checkGPUFix.Checked ? 1 : 0));
|
||||||
@@ -363,8 +388,13 @@ namespace GHelper
|
|||||||
|
|
||||||
private void SliderBrightness_ValueChanged(object? sender, EventArgs e)
|
private void SliderBrightness_ValueChanged(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
AppConfig.Set("keyboard_brightness", sliderBrightness.Value);
|
bool onBattery = SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online;
|
||||||
AppConfig.Set("keyboard_brightness_ac", sliderBrightness.Value);
|
|
||||||
|
if (onBattery)
|
||||||
|
AppConfig.Set("keyboard_brightness_ac", sliderBrightness.Value);
|
||||||
|
else
|
||||||
|
AppConfig.Set("keyboard_brightness", sliderBrightness.Value);
|
||||||
|
|
||||||
AsusUSB.ApplyBrightness(sliderBrightness.Value, "Slider");
|
AsusUSB.ApplyBrightness(sliderBrightness.Value, "Slider");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -393,7 +423,7 @@ namespace GHelper
|
|||||||
{
|
{
|
||||||
buttonServices.Enabled = false;
|
buttonServices.Enabled = false;
|
||||||
|
|
||||||
if (OptimizationService.IsRunning())
|
if (OptimizationService.GetRunningCount() > 0)
|
||||||
{
|
{
|
||||||
labelServices.Text = Properties.Strings.StoppingServices + " ...";
|
labelServices.Text = Properties.Strings.StoppingServices + " ...";
|
||||||
Task.Run(() =>
|
Task.Run(() =>
|
||||||
|
|||||||
@@ -117,4 +117,7 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>17, 17</value>
|
||||||
|
</metadata>
|
||||||
</root>
|
</root>
|
||||||
185
app/Fan/FanSensorControl.cs
Normal file
185
app/Fan/FanSensorControl.cs
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
using GHelper.Mode;
|
||||||
|
|
||||||
|
namespace GHelper.Fan
|
||||||
|
{
|
||||||
|
public class FanSensorControl
|
||||||
|
{
|
||||||
|
public const int DEFAULT_FAN_MIN = 18;
|
||||||
|
public const int DEFAULT_FAN_MAX = 58;
|
||||||
|
|
||||||
|
public const int XGM_FAN_MAX = 72;
|
||||||
|
|
||||||
|
public const int INADEQUATE_MAX = 92;
|
||||||
|
|
||||||
|
const int FAN_COUNT = 3;
|
||||||
|
|
||||||
|
Fans fansForm;
|
||||||
|
ModeControl modeControl = Program.modeControl;
|
||||||
|
|
||||||
|
static int[] measuredMax;
|
||||||
|
static int sameCount = 0;
|
||||||
|
|
||||||
|
static System.Timers.Timer timer = default!;
|
||||||
|
|
||||||
|
static int[] _fanMax = InitFanMax();
|
||||||
|
static bool _fanRpm = AppConfig.IsNotFalse("fan_rpm");
|
||||||
|
|
||||||
|
public FanSensorControl(Fans fansForm)
|
||||||
|
{
|
||||||
|
this.fansForm = fansForm;
|
||||||
|
timer = new System.Timers.Timer(1000);
|
||||||
|
timer.Elapsed += Timer_Elapsed;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int[] InitFanMax()
|
||||||
|
{
|
||||||
|
int[] defaultMax = GetDefaultMax();
|
||||||
|
|
||||||
|
return new int[3] {
|
||||||
|
AppConfig.Get("fan_max_" + (int)AsusFan.CPU, defaultMax[(int)AsusFan.CPU]),
|
||||||
|
AppConfig.Get("fan_max_" + (int)AsusFan.GPU, defaultMax[(int)AsusFan.GPU]),
|
||||||
|
AppConfig.Get("fan_max_" + (int)AsusFan.Mid, defaultMax[(int)AsusFan.Mid])
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int[] GetDefaultMax()
|
||||||
|
{
|
||||||
|
if (AppConfig.ContainsModel("GA401I")) return new int[3] { 78, 76, DEFAULT_FAN_MAX };
|
||||||
|
if (AppConfig.ContainsModel("GA401")) return new int[3] { 71, 73, DEFAULT_FAN_MAX };
|
||||||
|
if (AppConfig.ContainsModel("GA402")) return new int[3] { 55, 56, DEFAULT_FAN_MAX };
|
||||||
|
|
||||||
|
if (AppConfig.ContainsModel("G513R")) return new int[3] { 58, 60, DEFAULT_FAN_MAX };
|
||||||
|
if (AppConfig.ContainsModel("G513Q")) return new int[3] { 69, 69, DEFAULT_FAN_MAX };
|
||||||
|
if (AppConfig.ContainsModel("GA503")) return new int[3] { 64, 64, DEFAULT_FAN_MAX };
|
||||||
|
|
||||||
|
if (AppConfig.ContainsModel("GU603")) return new int[3] { 62, 64, DEFAULT_FAN_MAX };
|
||||||
|
|
||||||
|
if (AppConfig.ContainsModel("FA507R")) return new int[3] { 63, 57, DEFAULT_FAN_MAX };
|
||||||
|
if (AppConfig.ContainsModel("FA507X")) return new int[3] { 63, 68, DEFAULT_FAN_MAX };
|
||||||
|
|
||||||
|
if (AppConfig.ContainsModel("GX650")) return new int[3] { 62, 62, DEFAULT_FAN_MAX };
|
||||||
|
|
||||||
|
if (AppConfig.ContainsModel("G732")) return new int[3] { 61, 60, DEFAULT_FAN_MAX };
|
||||||
|
if (AppConfig.ContainsModel("G713")) return new int[3] { 56, 60, DEFAULT_FAN_MAX };
|
||||||
|
|
||||||
|
if (AppConfig.ContainsModel("Z301")) return new int[3] { 72, 64, DEFAULT_FAN_MAX };
|
||||||
|
|
||||||
|
if (AppConfig.ContainsModel("GV601")) return new int[3] { 78, 59, 85 };
|
||||||
|
|
||||||
|
return new int[3] { DEFAULT_FAN_MAX, DEFAULT_FAN_MAX, DEFAULT_FAN_MAX };
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int GetFanMax(AsusFan device)
|
||||||
|
{
|
||||||
|
if (device == AsusFan.XGM) return XGM_FAN_MAX;
|
||||||
|
|
||||||
|
if (_fanMax[(int)device] < 0 || _fanMax[(int)device] > INADEQUATE_MAX)
|
||||||
|
SetFanMax(device, DEFAULT_FAN_MAX);
|
||||||
|
|
||||||
|
return _fanMax[(int)device];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void SetFanMax(AsusFan device, int value)
|
||||||
|
{
|
||||||
|
_fanMax[(int)device] = value;
|
||||||
|
AppConfig.Set("fan_max_" + (int)device, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool fanRpm
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _fanRpm;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
AppConfig.Set("fan_rpm", value ? 1 : 0);
|
||||||
|
_fanRpm = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string FormatFan(AsusFan device, int value)
|
||||||
|
{
|
||||||
|
if (value < 0) return null;
|
||||||
|
|
||||||
|
if (value > GetFanMax(device) && value <= INADEQUATE_MAX) SetFanMax(device, value);
|
||||||
|
|
||||||
|
if (fanRpm)
|
||||||
|
return Properties.Strings.FanSpeed + ": " + (value * 100).ToString() + "RPM";
|
||||||
|
else
|
||||||
|
return Properties.Strings.FanSpeed + ": " + Math.Min(Math.Round((float)value / GetFanMax(device) * 100), 100).ToString() + "%"; // relatively to max RPM
|
||||||
|
}
|
||||||
|
|
||||||
|
public void StartCalibration()
|
||||||
|
{
|
||||||
|
|
||||||
|
measuredMax = new int[] { 0, 0, 0 };
|
||||||
|
timer.Enabled = true;
|
||||||
|
|
||||||
|
for (int i = 0; i < FAN_COUNT; i++)
|
||||||
|
AppConfig.Remove("fan_max_" + i);
|
||||||
|
|
||||||
|
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AsusACPI.PerformanceTurbo, "ModeCalibration");
|
||||||
|
|
||||||
|
for (int i = 0; i < FAN_COUNT; i++)
|
||||||
|
Program.acpi.SetFanCurve((AsusFan)i, new byte[] { 20, 30, 40, 50, 60, 70, 80, 90, 100, 100, 100, 100, 100, 100, 100, 100 });
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Timer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
|
||||||
|
{
|
||||||
|
int fan;
|
||||||
|
bool same = true;
|
||||||
|
|
||||||
|
for (int i = 0; i < FAN_COUNT; i++)
|
||||||
|
{
|
||||||
|
fan = Program.acpi.GetFan((AsusFan)i);
|
||||||
|
if (fan > measuredMax[i])
|
||||||
|
{
|
||||||
|
measuredMax[i] = fan;
|
||||||
|
same = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (same) sameCount++;
|
||||||
|
else sameCount = 0;
|
||||||
|
|
||||||
|
string label = "Measuring Max Speed - CPU: " + measuredMax[(int)AsusFan.CPU] * 100 + ", GPU: " + measuredMax[(int)AsusFan.GPU] * 100;
|
||||||
|
if (measuredMax[(int)AsusFan.Mid] > 10) label = label + ", Mid: " + measuredMax[(int)AsusFan.Mid] * 100;
|
||||||
|
label = label + " (" + sameCount + "s)";
|
||||||
|
|
||||||
|
fansForm.LabelFansResult(label);
|
||||||
|
|
||||||
|
if (sameCount >= 15)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < FAN_COUNT; i++)
|
||||||
|
{
|
||||||
|
if (measuredMax[i] > 30 && measuredMax[i] < INADEQUATE_MAX) SetFanMax((AsusFan)i, measuredMax[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
sameCount = 0;
|
||||||
|
FinishCalibration();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void FinishCalibration()
|
||||||
|
{
|
||||||
|
|
||||||
|
timer.Enabled = false;
|
||||||
|
modeControl.SetPerformanceMode();
|
||||||
|
|
||||||
|
string label = "Measured - CPU: " + AppConfig.Get("fan_max_" + (int)AsusFan.CPU) * 100;
|
||||||
|
|
||||||
|
if (AppConfig.Get("fan_max_" + (int)AsusFan.GPU) > 0)
|
||||||
|
label = label + ", GPU: " + AppConfig.Get("fan_max_" + (int)AsusFan.GPU) * 100;
|
||||||
|
|
||||||
|
if (AppConfig.Get("fan_max_" + (int)AsusFan.Mid) > 0)
|
||||||
|
label = label + ", Mid: " + AppConfig.Get("fan_max_" + (int)AsusFan.Mid) * 100;
|
||||||
|
|
||||||
|
fansForm.LabelFansResult(label);
|
||||||
|
fansForm.InitAxis();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
211
app/Fans.Designer.cs
generated
211
app/Fans.Designer.cs
generated
@@ -31,14 +31,14 @@ namespace GHelper
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
ChartArea chartArea9 = new ChartArea();
|
ChartArea chartArea1 = new ChartArea();
|
||||||
Title title9 = new Title();
|
Title title1 = new Title();
|
||||||
ChartArea chartArea10 = new ChartArea();
|
ChartArea chartArea2 = new ChartArea();
|
||||||
Title title10 = new Title();
|
Title title2 = new Title();
|
||||||
ChartArea chartArea11 = new ChartArea();
|
ChartArea chartArea3 = new ChartArea();
|
||||||
Title title11 = new Title();
|
Title title3 = new Title();
|
||||||
ChartArea chartArea12 = new ChartArea();
|
ChartArea chartArea4 = new ChartArea();
|
||||||
Title title12 = new Title();
|
Title title4 = new Title();
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Fans));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Fans));
|
||||||
panelFans = new Panel();
|
panelFans = new Panel();
|
||||||
labelTip = new Label();
|
labelTip = new Label();
|
||||||
@@ -55,6 +55,7 @@ namespace GHelper
|
|||||||
picturePerf = new PictureBox();
|
picturePerf = new PictureBox();
|
||||||
labelFans = new Label();
|
labelFans = new Label();
|
||||||
panelApplyFans = new Panel();
|
panelApplyFans = new Panel();
|
||||||
|
buttonCalibrate = new RButton();
|
||||||
labelFansResult = new Label();
|
labelFansResult = new Label();
|
||||||
checkApplyFans = new RCheckBox();
|
checkApplyFans = new RCheckBox();
|
||||||
buttonReset = new RButton();
|
buttonReset = new RButton();
|
||||||
@@ -128,6 +129,10 @@ namespace GHelper
|
|||||||
labelGPUCore = new Label();
|
labelGPUCore = new Label();
|
||||||
trackGPUCore = new TrackBar();
|
trackGPUCore = new TrackBar();
|
||||||
labelGPUCoreTitle = new Label();
|
labelGPUCoreTitle = new Label();
|
||||||
|
panelGPUClockLimit = new Panel();
|
||||||
|
labelGPUClockLimit = new Label();
|
||||||
|
trackGPUClockLimit = new TrackBar();
|
||||||
|
labelGPUClockLimitTitle = new Label();
|
||||||
panelTitleGPU = new Panel();
|
panelTitleGPU = new Panel();
|
||||||
pictureGPU = new PictureBox();
|
pictureGPU = new PictureBox();
|
||||||
labelGPU = new Label();
|
labelGPU = new Label();
|
||||||
@@ -136,10 +141,6 @@ namespace GHelper
|
|||||||
buttonAdvanced = new RButton();
|
buttonAdvanced = new RButton();
|
||||||
buttonGPU = new RButton();
|
buttonGPU = new RButton();
|
||||||
buttonCPU = new RButton();
|
buttonCPU = new RButton();
|
||||||
panelGPUClockLimit = new Panel();
|
|
||||||
labelGPUClockLimit = new Label();
|
|
||||||
trackGPUClockLimit = new TrackBar();
|
|
||||||
labelGPUClockLimitTitle = new Label();
|
|
||||||
panelFans.SuspendLayout();
|
panelFans.SuspendLayout();
|
||||||
tableFanCharts.SuspendLayout();
|
tableFanCharts.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)chartGPU).BeginInit();
|
((System.ComponentModel.ISupportInitialize)chartGPU).BeginInit();
|
||||||
@@ -188,12 +189,12 @@ namespace GHelper
|
|||||||
((System.ComponentModel.ISupportInitialize)trackGPUMemory).BeginInit();
|
((System.ComponentModel.ISupportInitialize)trackGPUMemory).BeginInit();
|
||||||
panelGPUCore.SuspendLayout();
|
panelGPUCore.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)trackGPUCore).BeginInit();
|
((System.ComponentModel.ISupportInitialize)trackGPUCore).BeginInit();
|
||||||
|
panelGPUClockLimit.SuspendLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)trackGPUClockLimit).BeginInit();
|
||||||
panelTitleGPU.SuspendLayout();
|
panelTitleGPU.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)pictureGPU).BeginInit();
|
((System.ComponentModel.ISupportInitialize)pictureGPU).BeginInit();
|
||||||
panelNav.SuspendLayout();
|
panelNav.SuspendLayout();
|
||||||
tableNav.SuspendLayout();
|
tableNav.SuspendLayout();
|
||||||
panelGPUClockLimit.SuspendLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)trackGPUClockLimit).BeginInit();
|
|
||||||
SuspendLayout();
|
SuspendLayout();
|
||||||
//
|
//
|
||||||
// panelFans
|
// panelFans
|
||||||
@@ -239,7 +240,7 @@ namespace GHelper
|
|||||||
tableFanCharts.Location = new Point(0, 66);
|
tableFanCharts.Location = new Point(0, 66);
|
||||||
tableFanCharts.Margin = new Padding(4);
|
tableFanCharts.Margin = new Padding(4);
|
||||||
tableFanCharts.Name = "tableFanCharts";
|
tableFanCharts.Name = "tableFanCharts";
|
||||||
tableFanCharts.Padding = new Padding(10, 0, 10, 10);
|
tableFanCharts.Padding = new Padding(10, 0, 10, 5);
|
||||||
tableFanCharts.RowCount = 2;
|
tableFanCharts.RowCount = 2;
|
||||||
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Percent, 25F));
|
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Percent, 25F));
|
||||||
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Percent, 25F));
|
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Percent, 25F));
|
||||||
@@ -250,60 +251,60 @@ namespace GHelper
|
|||||||
//
|
//
|
||||||
// chartGPU
|
// chartGPU
|
||||||
//
|
//
|
||||||
chartArea9.Name = "ChartArea1";
|
chartArea1.Name = "ChartArea1";
|
||||||
chartGPU.ChartAreas.Add(chartArea9);
|
chartGPU.ChartAreas.Add(chartArea1);
|
||||||
chartGPU.Dock = DockStyle.Fill;
|
chartGPU.Dock = DockStyle.Fill;
|
||||||
chartGPU.Location = new Point(12, 491);
|
chartGPU.Location = new Point(12, 493);
|
||||||
chartGPU.Margin = new Padding(2, 10, 2, 10);
|
chartGPU.Margin = new Padding(2, 10, 2, 10);
|
||||||
chartGPU.Name = "chartGPU";
|
chartGPU.Name = "chartGPU";
|
||||||
chartGPU.Size = new Size(782, 461);
|
chartGPU.Size = new Size(782, 463);
|
||||||
chartGPU.TabIndex = 17;
|
chartGPU.TabIndex = 17;
|
||||||
chartGPU.Text = "chartGPU";
|
chartGPU.Text = "chartGPU";
|
||||||
title9.Name = "Title1";
|
title1.Name = "Title1";
|
||||||
chartGPU.Titles.Add(title9);
|
chartGPU.Titles.Add(title1);
|
||||||
//
|
//
|
||||||
// chartCPU
|
// chartCPU
|
||||||
//
|
//
|
||||||
chartArea10.Name = "ChartArea1";
|
chartArea2.Name = "ChartArea1";
|
||||||
chartCPU.ChartAreas.Add(chartArea10);
|
chartCPU.ChartAreas.Add(chartArea2);
|
||||||
chartCPU.Dock = DockStyle.Fill;
|
chartCPU.Dock = DockStyle.Fill;
|
||||||
chartCPU.Location = new Point(12, 10);
|
chartCPU.Location = new Point(12, 10);
|
||||||
chartCPU.Margin = new Padding(2, 10, 2, 10);
|
chartCPU.Margin = new Padding(2, 10, 2, 10);
|
||||||
chartCPU.Name = "chartCPU";
|
chartCPU.Name = "chartCPU";
|
||||||
chartCPU.Size = new Size(782, 461);
|
chartCPU.Size = new Size(782, 463);
|
||||||
chartCPU.TabIndex = 14;
|
chartCPU.TabIndex = 14;
|
||||||
chartCPU.Text = "chartCPU";
|
chartCPU.Text = "chartCPU";
|
||||||
title10.Name = "Title1";
|
title2.Name = "Title1";
|
||||||
chartCPU.Titles.Add(title10);
|
chartCPU.Titles.Add(title2);
|
||||||
//
|
//
|
||||||
// chartXGM
|
// chartXGM
|
||||||
//
|
//
|
||||||
chartArea11.Name = "ChartAreaXGM";
|
chartArea3.Name = "ChartAreaXGM";
|
||||||
chartXGM.ChartAreas.Add(chartArea11);
|
chartXGM.ChartAreas.Add(chartArea3);
|
||||||
chartXGM.Dock = DockStyle.Fill;
|
chartXGM.Dock = DockStyle.Fill;
|
||||||
chartXGM.Location = new Point(12, 1453);
|
chartXGM.Location = new Point(12, 1459);
|
||||||
chartXGM.Margin = new Padding(2, 10, 2, 10);
|
chartXGM.Margin = new Padding(2, 10, 2, 10);
|
||||||
chartXGM.Name = "chartXGM";
|
chartXGM.Name = "chartXGM";
|
||||||
chartXGM.Size = new Size(782, 464);
|
chartXGM.Size = new Size(782, 463);
|
||||||
chartXGM.TabIndex = 14;
|
chartXGM.TabIndex = 14;
|
||||||
chartXGM.Text = "chartXGM";
|
chartXGM.Text = "chartXGM";
|
||||||
title11.Name = "Title4";
|
title3.Name = "Title4";
|
||||||
chartXGM.Titles.Add(title11);
|
chartXGM.Titles.Add(title3);
|
||||||
chartXGM.Visible = false;
|
chartXGM.Visible = false;
|
||||||
//
|
//
|
||||||
// chartMid
|
// chartMid
|
||||||
//
|
//
|
||||||
chartArea12.Name = "ChartArea3";
|
chartArea4.Name = "ChartArea3";
|
||||||
chartMid.ChartAreas.Add(chartArea12);
|
chartMid.ChartAreas.Add(chartArea4);
|
||||||
chartMid.Dock = DockStyle.Fill;
|
chartMid.Dock = DockStyle.Fill;
|
||||||
chartMid.Location = new Point(12, 972);
|
chartMid.Location = new Point(12, 976);
|
||||||
chartMid.Margin = new Padding(2, 10, 2, 10);
|
chartMid.Margin = new Padding(2, 10, 2, 10);
|
||||||
chartMid.Name = "chartMid";
|
chartMid.Name = "chartMid";
|
||||||
chartMid.Size = new Size(782, 461);
|
chartMid.Size = new Size(782, 463);
|
||||||
chartMid.TabIndex = 14;
|
chartMid.TabIndex = 14;
|
||||||
chartMid.Text = "chartMid";
|
chartMid.Text = "chartMid";
|
||||||
title12.Name = "Title3";
|
title4.Name = "Title3";
|
||||||
chartMid.Titles.Add(title12);
|
chartMid.Titles.Add(title4);
|
||||||
chartMid.Visible = false;
|
chartMid.Visible = false;
|
||||||
//
|
//
|
||||||
// panelTitleFans
|
// panelTitleFans
|
||||||
@@ -410,6 +411,7 @@ namespace GHelper
|
|||||||
//
|
//
|
||||||
// panelApplyFans
|
// panelApplyFans
|
||||||
//
|
//
|
||||||
|
panelApplyFans.Controls.Add(buttonCalibrate);
|
||||||
panelApplyFans.Controls.Add(labelFansResult);
|
panelApplyFans.Controls.Add(labelFansResult);
|
||||||
panelApplyFans.Controls.Add(checkApplyFans);
|
panelApplyFans.Controls.Add(checkApplyFans);
|
||||||
panelApplyFans.Controls.Add(buttonReset);
|
panelApplyFans.Controls.Add(buttonReset);
|
||||||
@@ -420,16 +422,32 @@ namespace GHelper
|
|||||||
panelApplyFans.Size = new Size(806, 116);
|
panelApplyFans.Size = new Size(806, 116);
|
||||||
panelApplyFans.TabIndex = 43;
|
panelApplyFans.TabIndex = 43;
|
||||||
//
|
//
|
||||||
|
// buttonCalibrate
|
||||||
|
//
|
||||||
|
buttonCalibrate.Activated = false;
|
||||||
|
buttonCalibrate.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
|
||||||
|
buttonCalibrate.BackColor = SystemColors.ControlLight;
|
||||||
|
buttonCalibrate.BorderColor = Color.Transparent;
|
||||||
|
buttonCalibrate.BorderRadius = 2;
|
||||||
|
buttonCalibrate.FlatStyle = FlatStyle.Flat;
|
||||||
|
buttonCalibrate.Location = new Point(275, 40);
|
||||||
|
buttonCalibrate.Margin = new Padding(4, 2, 4, 2);
|
||||||
|
buttonCalibrate.Name = "buttonCalibrate";
|
||||||
|
buttonCalibrate.Secondary = true;
|
||||||
|
buttonCalibrate.Size = new Size(141, 50);
|
||||||
|
buttonCalibrate.TabIndex = 43;
|
||||||
|
buttonCalibrate.Text = "Calibrate";
|
||||||
|
buttonCalibrate.UseVisualStyleBackColor = false;
|
||||||
|
//
|
||||||
// labelFansResult
|
// labelFansResult
|
||||||
//
|
//
|
||||||
labelFansResult.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
labelFansResult.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
|
||||||
labelFansResult.ForeColor = Color.Red;
|
labelFansResult.ForeColor = Color.Red;
|
||||||
labelFansResult.Location = new Point(24, 4);
|
labelFansResult.Location = new Point(18, 2);
|
||||||
labelFansResult.Margin = new Padding(4, 0, 4, 0);
|
labelFansResult.Margin = new Padding(4, 0, 4, 0);
|
||||||
labelFansResult.Name = "labelFansResult";
|
labelFansResult.Name = "labelFansResult";
|
||||||
labelFansResult.Size = new Size(762, 32);
|
labelFansResult.Size = new Size(771, 32);
|
||||||
labelFansResult.TabIndex = 42;
|
labelFansResult.TabIndex = 42;
|
||||||
labelFansResult.TextAlign = ContentAlignment.TopRight;
|
|
||||||
labelFansResult.Visible = false;
|
labelFansResult.Visible = false;
|
||||||
//
|
//
|
||||||
// checkApplyFans
|
// checkApplyFans
|
||||||
@@ -458,7 +476,7 @@ namespace GHelper
|
|||||||
buttonReset.Margin = new Padding(4, 2, 4, 2);
|
buttonReset.Margin = new Padding(4, 2, 4, 2);
|
||||||
buttonReset.Name = "buttonReset";
|
buttonReset.Name = "buttonReset";
|
||||||
buttonReset.Secondary = true;
|
buttonReset.Secondary = true;
|
||||||
buttonReset.Size = new Size(274, 50);
|
buttonReset.Size = new Size(252, 50);
|
||||||
buttonReset.TabIndex = 18;
|
buttonReset.TabIndex = 18;
|
||||||
buttonReset.Text = Properties.Strings.FactoryDefaults;
|
buttonReset.Text = Properties.Strings.FactoryDefaults;
|
||||||
buttonReset.UseVisualStyleBackColor = false;
|
buttonReset.UseVisualStyleBackColor = false;
|
||||||
@@ -1337,6 +1355,56 @@ namespace GHelper
|
|||||||
labelGPUCoreTitle.TabIndex = 17;
|
labelGPUCoreTitle.TabIndex = 17;
|
||||||
labelGPUCoreTitle.Text = "Core Clock Offset";
|
labelGPUCoreTitle.Text = "Core Clock Offset";
|
||||||
//
|
//
|
||||||
|
// panelGPUClockLimit
|
||||||
|
//
|
||||||
|
panelGPUClockLimit.AutoSize = true;
|
||||||
|
panelGPUClockLimit.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||||
|
panelGPUClockLimit.Controls.Add(labelGPUClockLimit);
|
||||||
|
panelGPUClockLimit.Controls.Add(trackGPUClockLimit);
|
||||||
|
panelGPUClockLimit.Controls.Add(labelGPUClockLimitTitle);
|
||||||
|
panelGPUClockLimit.Dock = DockStyle.Top;
|
||||||
|
panelGPUClockLimit.Location = new Point(0, 60);
|
||||||
|
panelGPUClockLimit.Margin = new Padding(4);
|
||||||
|
panelGPUClockLimit.MaximumSize = new Size(0, 124);
|
||||||
|
panelGPUClockLimit.Name = "panelGPUClockLimit";
|
||||||
|
panelGPUClockLimit.Size = new Size(520, 124);
|
||||||
|
panelGPUClockLimit.TabIndex = 48;
|
||||||
|
//
|
||||||
|
// labelGPUClockLimit
|
||||||
|
//
|
||||||
|
labelGPUClockLimit.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
labelGPUClockLimit.Location = new Point(326, 16);
|
||||||
|
labelGPUClockLimit.Margin = new Padding(4, 0, 4, 0);
|
||||||
|
labelGPUClockLimit.Name = "labelGPUClockLimit";
|
||||||
|
labelGPUClockLimit.Size = new Size(176, 32);
|
||||||
|
labelGPUClockLimit.TabIndex = 29;
|
||||||
|
labelGPUClockLimit.Text = "1500 MHz";
|
||||||
|
labelGPUClockLimit.TextAlign = ContentAlignment.TopRight;
|
||||||
|
//
|
||||||
|
// trackGPUClockLimit
|
||||||
|
//
|
||||||
|
trackGPUClockLimit.LargeChange = 100;
|
||||||
|
trackGPUClockLimit.Location = new Point(6, 48);
|
||||||
|
trackGPUClockLimit.Margin = new Padding(4, 2, 4, 2);
|
||||||
|
trackGPUClockLimit.Maximum = 3000;
|
||||||
|
trackGPUClockLimit.Name = "trackGPUClockLimit";
|
||||||
|
trackGPUClockLimit.RightToLeft = RightToLeft.No;
|
||||||
|
trackGPUClockLimit.Size = new Size(496, 90);
|
||||||
|
trackGPUClockLimit.SmallChange = 10;
|
||||||
|
trackGPUClockLimit.TabIndex = 18;
|
||||||
|
trackGPUClockLimit.TickFrequency = 50;
|
||||||
|
trackGPUClockLimit.TickStyle = TickStyle.TopLeft;
|
||||||
|
//
|
||||||
|
// labelGPUClockLimitTitle
|
||||||
|
//
|
||||||
|
labelGPUClockLimitTitle.AutoSize = true;
|
||||||
|
labelGPUClockLimitTitle.Location = new Point(10, 16);
|
||||||
|
labelGPUClockLimitTitle.Margin = new Padding(4, 0, 4, 0);
|
||||||
|
labelGPUClockLimitTitle.Name = "labelGPUClockLimitTitle";
|
||||||
|
labelGPUClockLimitTitle.Size = new Size(188, 32);
|
||||||
|
labelGPUClockLimitTitle.TabIndex = 17;
|
||||||
|
labelGPUClockLimitTitle.Text = "Core Clock Limit";
|
||||||
|
//
|
||||||
// panelTitleGPU
|
// panelTitleGPU
|
||||||
//
|
//
|
||||||
panelTitleGPU.AutoSize = true;
|
panelTitleGPU.AutoSize = true;
|
||||||
@@ -1459,56 +1527,6 @@ namespace GHelper
|
|||||||
buttonCPU.TextImageRelation = TextImageRelation.ImageBeforeText;
|
buttonCPU.TextImageRelation = TextImageRelation.ImageBeforeText;
|
||||||
buttonCPU.UseVisualStyleBackColor = false;
|
buttonCPU.UseVisualStyleBackColor = false;
|
||||||
//
|
//
|
||||||
// panelGPUClockLimit
|
|
||||||
//
|
|
||||||
panelGPUClockLimit.AutoSize = true;
|
|
||||||
panelGPUClockLimit.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
|
||||||
panelGPUClockLimit.Controls.Add(labelGPUClockLimit);
|
|
||||||
panelGPUClockLimit.Controls.Add(trackGPUClockLimit);
|
|
||||||
panelGPUClockLimit.Controls.Add(labelGPUClockLimitTitle);
|
|
||||||
panelGPUClockLimit.Dock = DockStyle.Top;
|
|
||||||
panelGPUClockLimit.Location = new Point(0, 60);
|
|
||||||
panelGPUClockLimit.Margin = new Padding(4);
|
|
||||||
panelGPUClockLimit.MaximumSize = new Size(0, 124);
|
|
||||||
panelGPUClockLimit.Name = "panelGPUClockLimit";
|
|
||||||
panelGPUClockLimit.Size = new Size(520, 124);
|
|
||||||
panelGPUClockLimit.TabIndex = 48;
|
|
||||||
//
|
|
||||||
// labelGPUClockLimit
|
|
||||||
//
|
|
||||||
labelGPUClockLimit.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
|
||||||
labelGPUClockLimit.Location = new Point(326, 16);
|
|
||||||
labelGPUClockLimit.Margin = new Padding(4, 0, 4, 0);
|
|
||||||
labelGPUClockLimit.Name = "labelGPUClockLimit";
|
|
||||||
labelGPUClockLimit.Size = new Size(176, 32);
|
|
||||||
labelGPUClockLimit.TabIndex = 29;
|
|
||||||
labelGPUClockLimit.Text = "1500 MHz";
|
|
||||||
labelGPUClockLimit.TextAlign = ContentAlignment.TopRight;
|
|
||||||
//
|
|
||||||
// trackGPUClockLimit
|
|
||||||
//
|
|
||||||
trackGPUClockLimit.LargeChange = 100;
|
|
||||||
trackGPUClockLimit.Location = new Point(6, 48);
|
|
||||||
trackGPUClockLimit.Margin = new Padding(4, 2, 4, 2);
|
|
||||||
trackGPUClockLimit.Maximum = 3000;
|
|
||||||
trackGPUClockLimit.Name = "trackGPUClockLimit";
|
|
||||||
trackGPUClockLimit.RightToLeft = RightToLeft.No;
|
|
||||||
trackGPUClockLimit.Size = new Size(496, 90);
|
|
||||||
trackGPUClockLimit.SmallChange = 10;
|
|
||||||
trackGPUClockLimit.TabIndex = 18;
|
|
||||||
trackGPUClockLimit.TickFrequency = 50;
|
|
||||||
trackGPUClockLimit.TickStyle = TickStyle.TopLeft;
|
|
||||||
//
|
|
||||||
// labelGPUClockLimitTitle
|
|
||||||
//
|
|
||||||
labelGPUClockLimitTitle.AutoSize = true;
|
|
||||||
labelGPUClockLimitTitle.Location = new Point(10, 16);
|
|
||||||
labelGPUClockLimitTitle.Margin = new Padding(4, 0, 4, 0);
|
|
||||||
labelGPUClockLimitTitle.Name = "labelGPUClockLimitTitle";
|
|
||||||
labelGPUClockLimitTitle.Size = new Size(188, 32);
|
|
||||||
labelGPUClockLimitTitle.TabIndex = 17;
|
|
||||||
labelGPUClockLimitTitle.Text = "Core Clock Limit";
|
|
||||||
//
|
|
||||||
// Fans
|
// Fans
|
||||||
//
|
//
|
||||||
AutoScaleDimensions = new SizeF(192F, 192F);
|
AutoScaleDimensions = new SizeF(192F, 192F);
|
||||||
@@ -1597,14 +1615,14 @@ namespace GHelper
|
|||||||
panelGPUCore.ResumeLayout(false);
|
panelGPUCore.ResumeLayout(false);
|
||||||
panelGPUCore.PerformLayout();
|
panelGPUCore.PerformLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)trackGPUCore).EndInit();
|
((System.ComponentModel.ISupportInitialize)trackGPUCore).EndInit();
|
||||||
|
panelGPUClockLimit.ResumeLayout(false);
|
||||||
|
panelGPUClockLimit.PerformLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)trackGPUClockLimit).EndInit();
|
||||||
panelTitleGPU.ResumeLayout(false);
|
panelTitleGPU.ResumeLayout(false);
|
||||||
panelTitleGPU.PerformLayout();
|
panelTitleGPU.PerformLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)pictureGPU).EndInit();
|
((System.ComponentModel.ISupportInitialize)pictureGPU).EndInit();
|
||||||
panelNav.ResumeLayout(false);
|
panelNav.ResumeLayout(false);
|
||||||
tableNav.ResumeLayout(false);
|
tableNav.ResumeLayout(false);
|
||||||
panelGPUClockLimit.ResumeLayout(false);
|
|
||||||
panelGPUClockLimit.PerformLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)trackGPUClockLimit).EndInit();
|
|
||||||
ResumeLayout(false);
|
ResumeLayout(false);
|
||||||
PerformLayout();
|
PerformLayout();
|
||||||
}
|
}
|
||||||
@@ -1711,5 +1729,6 @@ namespace GHelper
|
|||||||
private Label labelGPUClockLimit;
|
private Label labelGPUClockLimit;
|
||||||
private TrackBar trackGPUClockLimit;
|
private TrackBar trackGPUClockLimit;
|
||||||
private Label labelGPUClockLimitTitle;
|
private Label labelGPUClockLimitTitle;
|
||||||
|
private RButton buttonCalibrate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
146
app/Fans.cs
146
app/Fans.cs
@@ -1,4 +1,5 @@
|
|||||||
using GHelper.Gpu.NVidia;
|
using GHelper.Fan;
|
||||||
|
using GHelper.Gpu.NVidia;
|
||||||
using GHelper.Mode;
|
using GHelper.Mode;
|
||||||
using GHelper.UI;
|
using GHelper.UI;
|
||||||
using Ryzen;
|
using Ryzen;
|
||||||
@@ -18,20 +19,23 @@ namespace GHelper
|
|||||||
Series seriesMid;
|
Series seriesMid;
|
||||||
Series seriesXGM;
|
Series seriesXGM;
|
||||||
|
|
||||||
static int MinRPM, MaxRPM;
|
|
||||||
|
|
||||||
static bool gpuVisible = true;
|
static bool gpuVisible = true;
|
||||||
|
static bool fanRpm = true;
|
||||||
|
|
||||||
const int fansMax = 100;
|
const int fansMax = 100;
|
||||||
|
|
||||||
NvidiaGpuControl? nvControl = null;
|
NvidiaGpuControl? nvControl = null;
|
||||||
ModeControl modeControl = Program.modeControl;
|
ModeControl modeControl = Program.modeControl;
|
||||||
|
|
||||||
|
FanSensorControl fanSensorControl;
|
||||||
|
|
||||||
public Fans()
|
public Fans()
|
||||||
{
|
{
|
||||||
|
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
|
fanSensorControl = new FanSensorControl(this);
|
||||||
|
|
||||||
//float dpi = ControlHelper.GetDpiScale(this).Value;
|
//float dpi = ControlHelper.GetDpiScale(this).Value;
|
||||||
//comboModes.Size = new Size(comboModes.Width, (int)dpi * 18);
|
//comboModes.Size = new Size(comboModes.Width, (int)dpi * 18);
|
||||||
comboModes.ClientSize = new Size(comboModes.Width, comboModes.Height - 4);
|
comboModes.ClientSize = new Size(comboModes.Width, comboModes.Height - 4);
|
||||||
@@ -56,10 +60,10 @@ namespace GHelper
|
|||||||
buttonApplyAdvanced.Text = Properties.Strings.Apply;
|
buttonApplyAdvanced.Text = Properties.Strings.Apply;
|
||||||
checkApplyUV.Text = Properties.Strings.AutoApply;
|
checkApplyUV.Text = Properties.Strings.AutoApply;
|
||||||
|
|
||||||
|
buttonCalibrate.Text = Properties.Strings.Calibrate;
|
||||||
|
|
||||||
InitTheme(true);
|
InitTheme(true);
|
||||||
|
|
||||||
MinRPM = 18;
|
|
||||||
MaxRPM = HardwareControl.fanMax;
|
|
||||||
labelTip.Visible = false;
|
labelTip.Visible = false;
|
||||||
labelTip.BackColor = Color.Transparent;
|
labelTip.BackColor = Color.Transparent;
|
||||||
|
|
||||||
@@ -77,15 +81,24 @@ namespace GHelper
|
|||||||
|
|
||||||
chartCPU.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.CPU);
|
chartCPU.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.CPU);
|
||||||
chartCPU.MouseUp += ChartCPU_MouseUp;
|
chartCPU.MouseUp += ChartCPU_MouseUp;
|
||||||
|
chartCPU.MouseLeave += ChartCPU_MouseLeave;
|
||||||
|
|
||||||
chartGPU.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.GPU);
|
chartGPU.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.GPU);
|
||||||
chartGPU.MouseUp += ChartCPU_MouseUp;
|
chartGPU.MouseUp += ChartCPU_MouseUp;
|
||||||
|
chartGPU.MouseLeave += ChartCPU_MouseLeave;
|
||||||
|
|
||||||
chartMid.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.Mid);
|
chartMid.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.Mid);
|
||||||
chartMid.MouseUp += ChartCPU_MouseUp;
|
chartMid.MouseUp += ChartCPU_MouseUp;
|
||||||
|
chartMid.MouseLeave += ChartCPU_MouseLeave;
|
||||||
|
|
||||||
chartXGM.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.XGM);
|
chartXGM.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.XGM);
|
||||||
chartXGM.MouseUp += ChartCPU_MouseUp;
|
chartXGM.MouseUp += ChartCPU_MouseUp;
|
||||||
|
chartXGM.MouseLeave += ChartCPU_MouseLeave;
|
||||||
|
|
||||||
|
chartCPU.MouseClick += ChartCPU_MouseClick;
|
||||||
|
chartGPU.MouseClick += ChartCPU_MouseClick;
|
||||||
|
chartMid.MouseClick += ChartCPU_MouseClick;
|
||||||
|
chartXGM.MouseClick += ChartCPU_MouseClick;
|
||||||
|
|
||||||
buttonReset.Click += ButtonReset_Click;
|
buttonReset.Click += ButtonReset_Click;
|
||||||
|
|
||||||
@@ -135,6 +148,7 @@ namespace GHelper
|
|||||||
trackGPUMemory.MouseUp += TrackGPU_MouseUp;
|
trackGPUMemory.MouseUp += TrackGPU_MouseUp;
|
||||||
trackGPUBoost.MouseUp += TrackGPU_MouseUp;
|
trackGPUBoost.MouseUp += TrackGPU_MouseUp;
|
||||||
trackGPUTemp.MouseUp += TrackGPU_MouseUp;
|
trackGPUTemp.MouseUp += TrackGPU_MouseUp;
|
||||||
|
|
||||||
trackGPUClockLimit.MouseUp += TrackGPU_MouseUp;
|
trackGPUClockLimit.MouseUp += TrackGPU_MouseUp;
|
||||||
|
|
||||||
//labelInfo.MaximumSize = new Size(280, 0);
|
//labelInfo.MaximumSize = new Size(280, 0);
|
||||||
@@ -189,12 +203,42 @@ namespace GHelper
|
|||||||
|
|
||||||
checkApplyUV.Click += CheckApplyUV_Click;
|
checkApplyUV.Click += CheckApplyUV_Click;
|
||||||
|
|
||||||
|
buttonCalibrate.Click += ButtonCalibrate_Click;
|
||||||
|
|
||||||
ToggleNavigation(0);
|
ToggleNavigation(0);
|
||||||
|
|
||||||
|
if (Program.acpi.DeviceGet(AsusACPI.DevsCPUFanCurve) < 0) buttonCalibrate.Visible = false;
|
||||||
|
|
||||||
FormClosed += Fans_FormClosed;
|
FormClosed += Fans_FormClosed;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private void ButtonCalibrate_Click(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
buttonCalibrate.Enabled = false;
|
||||||
|
fanSensorControl.StartCalibration();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ChartCPU_MouseClick(object? sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (sender is null) return;
|
||||||
|
Chart chart = (Chart)sender;
|
||||||
|
|
||||||
|
HitTestResult result = chart.HitTest(e.X, e.Y);
|
||||||
|
|
||||||
|
if ((result.ChartElementType == ChartElementType.AxisLabels || result.ChartElementType == ChartElementType.Axis) && result.Axis == chart.ChartAreas[0].AxisY)
|
||||||
|
{
|
||||||
|
fanRpm = !fanRpm;
|
||||||
|
SetAxis(chartCPU, AsusFan.CPU);
|
||||||
|
SetAxis(chartGPU, AsusFan.GPU);
|
||||||
|
if (chartMid.Visible) SetAxis(chartMid, AsusFan.Mid);
|
||||||
|
if (chartXGM.Visible) SetAxis(chartXGM, AsusFan.XGM);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private void Fans_FormClosed(object? sender, FormClosedEventArgs e)
|
private void Fans_FormClosed(object? sender, FormClosedEventArgs e)
|
||||||
{
|
{
|
||||||
//Because windows charts seem to eat a lot of memory :(
|
//Because windows charts seem to eat a lot of memory :(
|
||||||
@@ -541,34 +585,52 @@ namespace GHelper
|
|||||||
VisualiseGPUSettings();
|
VisualiseGPUSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
static string ChartPercToRPM(int percentage, AsusFan device, string unit = "")
|
static string ChartYLabel(int percentage, AsusFan device, string unit = "")
|
||||||
{
|
{
|
||||||
if (percentage == 0) return "OFF";
|
if (percentage == 0) return "OFF";
|
||||||
|
|
||||||
int Max = MaxRPM;
|
int Min = FanSensorControl.DEFAULT_FAN_MIN;
|
||||||
if (device == AsusFan.XGM) Max = 72;
|
int Max = FanSensorControl.GetFanMax(device);
|
||||||
|
|
||||||
return (200 * Math.Round((float)(MinRPM * 100 + (Max - MinRPM) * percentage) / 200)).ToString() + unit;
|
if (fanRpm)
|
||||||
|
return (200 * Math.Round((float)(Min * 100 + (Max - Min) * percentage) / 200)).ToString() + unit;
|
||||||
|
else
|
||||||
|
return percentage + "%";
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetAxis(Chart chart, AsusFan device)
|
||||||
|
{
|
||||||
|
|
||||||
|
chart.ChartAreas[0].AxisY.CustomLabels.Clear();
|
||||||
|
|
||||||
|
for (int i = 0; i <= fansMax; i += 10)
|
||||||
|
{
|
||||||
|
chart.ChartAreas[0].AxisY.CustomLabels.Add(i - 2, i + 2, ChartYLabel(i, device));
|
||||||
|
}
|
||||||
|
|
||||||
|
//chart.ChartAreas[0].AxisY.CustomLabels.Add(fansMax -2, fansMax + 2, Properties.Strings.RPM);
|
||||||
|
chart.ChartAreas[0].AxisY.Interval = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetChart(Chart chart, AsusFan device)
|
void SetChart(Chart chart, AsusFan device)
|
||||||
{
|
{
|
||||||
|
|
||||||
string title = "";
|
string title = "";
|
||||||
|
string scale = ", RPM/°C";
|
||||||
|
|
||||||
switch (device)
|
switch (device)
|
||||||
{
|
{
|
||||||
case AsusFan.CPU:
|
case AsusFan.CPU:
|
||||||
title = Properties.Strings.FanProfileCPU;
|
title = Properties.Strings.FanProfileCPU + scale;
|
||||||
break;
|
break;
|
||||||
case AsusFan.GPU:
|
case AsusFan.GPU:
|
||||||
title = Properties.Strings.FanProfileGPU;
|
title = Properties.Strings.FanProfileGPU + scale;
|
||||||
break;
|
break;
|
||||||
case AsusFan.Mid:
|
case AsusFan.Mid:
|
||||||
title = Properties.Strings.FanProfileMid;
|
title = Properties.Strings.FanProfileMid + scale;
|
||||||
break;
|
break;
|
||||||
case AsusFan.XGM:
|
case AsusFan.XGM:
|
||||||
title = "XG Mobile";
|
title = "XG Mobile" + scale;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -588,12 +650,7 @@ namespace GHelper
|
|||||||
chart.ChartAreas[0].AxisX.LineColor = chartGrid;
|
chart.ChartAreas[0].AxisX.LineColor = chartGrid;
|
||||||
chart.ChartAreas[0].AxisY.LineColor = chartGrid;
|
chart.ChartAreas[0].AxisY.LineColor = chartGrid;
|
||||||
|
|
||||||
for (int i = 0; i <= fansMax - 10; i += 10)
|
SetAxis(chart, device);
|
||||||
chart.ChartAreas[0].AxisY.CustomLabels.Add(i - 2, i + 2, ChartPercToRPM(i, device));
|
|
||||||
|
|
||||||
chart.ChartAreas[0].AxisY.CustomLabels.Add(fansMax - 2, fansMax + 2, Properties.Strings.RPM);
|
|
||||||
|
|
||||||
chart.ChartAreas[0].AxisY.Interval = 10;
|
|
||||||
|
|
||||||
if (chart.Legends.Count > 0)
|
if (chart.Legends.Count > 0)
|
||||||
chart.Legends[0].Enabled = false;
|
chart.Legends[0].Enabled = false;
|
||||||
@@ -635,7 +692,14 @@ namespace GHelper
|
|||||||
comboBoost.SelectedIndex = Math.Min(boost, comboBoost.Items.Count - 1);
|
comboBoost.SelectedIndex = Math.Min(boost, comboBoost.Items.Count - 1);
|
||||||
|
|
||||||
string powerMode = PowerNative.GetPowerMode();
|
string powerMode = PowerNative.GetPowerMode();
|
||||||
comboPowerMode.SelectedValue = powerMode;
|
bool batterySaver = PowerNative.GetBatterySaverStatus();
|
||||||
|
|
||||||
|
comboPowerMode.Enabled = !batterySaver;
|
||||||
|
|
||||||
|
if (batterySaver)
|
||||||
|
comboPowerMode.SelectedIndex = 0;
|
||||||
|
else
|
||||||
|
comboPowerMode.SelectedValue = powerMode;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -646,6 +710,8 @@ namespace GHelper
|
|||||||
|
|
||||||
if (PowerNative.GetDefaultPowerMode(Modes.GetCurrentBase()) != powerMode)
|
if (PowerNative.GetDefaultPowerMode(Modes.GetCurrentBase()) != powerMode)
|
||||||
AppConfig.SetMode("powermode", powerMode);
|
AppConfig.SetMode("powermode", powerMode);
|
||||||
|
else
|
||||||
|
AppConfig.RemoveMode("powermode");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ComboBoost_Changed(object? sender, EventArgs e)
|
private void ComboBoost_Changed(object? sender, EventArgs e)
|
||||||
@@ -677,16 +743,34 @@ namespace GHelper
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void InitAxis()
|
||||||
|
{
|
||||||
|
if (this == null || this.Text == "") return;
|
||||||
|
|
||||||
|
Invoke(delegate
|
||||||
|
{
|
||||||
|
buttonCalibrate.Enabled = true;
|
||||||
|
SetAxis(chartCPU, AsusFan.CPU);
|
||||||
|
SetAxis(chartGPU, AsusFan.GPU);
|
||||||
|
if (chartMid.Visible) SetAxis(chartMid, AsusFan.Mid);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public void LabelFansResult(string text)
|
public void LabelFansResult(string text)
|
||||||
{
|
{
|
||||||
labelFansResult.Text = text;
|
if (text.Length > 0) Logger.WriteLine(text);
|
||||||
labelFansResult.Visible = (text.Length > 0);
|
|
||||||
|
if (this == null || this.Text == "") return;
|
||||||
|
|
||||||
|
Invoke(delegate
|
||||||
|
{
|
||||||
|
labelFansResult.Text = text;
|
||||||
|
labelFansResult.Visible = (text.Length > 0);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Fans_FormClosing(object? sender, FormClosingEventArgs e)
|
private void Fans_FormClosing(object? sender, FormClosingEventArgs e)
|
||||||
{
|
{
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (e.CloseReason == CloseReason.UserClosing)
|
if (e.CloseReason == CloseReason.UserClosing)
|
||||||
{
|
{
|
||||||
@@ -946,11 +1030,10 @@ namespace GHelper
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ChartCPU_MouseUp(object? sender, MouseEventArgs e)
|
private void Chart_Save()
|
||||||
{
|
{
|
||||||
curPoint = null;
|
curPoint = null;
|
||||||
curIndex = -1;
|
curIndex = -1;
|
||||||
|
|
||||||
labelTip.Visible = false;
|
labelTip.Visible = false;
|
||||||
|
|
||||||
SaveProfile(seriesCPU, AsusFan.CPU);
|
SaveProfile(seriesCPU, AsusFan.CPU);
|
||||||
@@ -963,8 +1046,19 @@ namespace GHelper
|
|||||||
SaveProfile(seriesXGM, AsusFan.XGM);
|
SaveProfile(seriesXGM, AsusFan.XGM);
|
||||||
|
|
||||||
modeControl.AutoFans();
|
modeControl.AutoFans();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ChartCPU_MouseUp(object? sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
Chart_Save();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void ChartCPU_MouseLeave(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
curPoint = null;
|
||||||
|
curIndex = -1;
|
||||||
|
labelTip.Visible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ChartCPU_MouseMove(object? sender, MouseEventArgs e, AsusFan device)
|
private void ChartCPU_MouseMove(object? sender, MouseEventArgs e, AsusFan device)
|
||||||
@@ -1028,7 +1122,7 @@ namespace GHelper
|
|||||||
tip = true;
|
tip = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
labelTip.Text = Math.Round(curPoint.XValue) + "C, " + ChartPercToRPM((int)curPoint.YValues[0], device, " " + Properties.Strings.RPM);
|
labelTip.Text = Math.Round(curPoint.XValue) + "C, " + ChartYLabel((int)curPoint.YValues[0], device, " " + Properties.Strings.RPM);
|
||||||
labelTip.Top = e.Y + ((Control)sender).Top;
|
labelTip.Top = e.Y + ((Control)sender).Top;
|
||||||
labelTip.Left = e.X - 50;
|
labelTip.Left = e.X - 50;
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
||||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||||
<AssemblyVersion>0.110</AssemblyVersion>
|
<AssemblyVersion>0.128</AssemblyVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||||
|
|||||||
@@ -10,7 +10,9 @@ namespace GHelper.Gpu
|
|||||||
SettingsForm settings;
|
SettingsForm settings;
|
||||||
ScreenControl screenControl = new ScreenControl();
|
ScreenControl screenControl = new ScreenControl();
|
||||||
|
|
||||||
public static int GpuMode;
|
public static int gpuMode;
|
||||||
|
public static bool? gpuExists = null;
|
||||||
|
|
||||||
|
|
||||||
public GPUModeControl(SettingsForm settingsForm)
|
public GPUModeControl(SettingsForm settingsForm)
|
||||||
{
|
{
|
||||||
@@ -22,30 +24,37 @@ namespace GHelper.Gpu
|
|||||||
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);
|
||||||
|
|
||||||
|
if (mux < 0) mux = Program.acpi.DeviceGet(AsusACPI.GPUMuxVivo);
|
||||||
|
|
||||||
Logger.WriteLine("Eco flag : " + eco);
|
Logger.WriteLine("Eco flag : " + eco);
|
||||||
Logger.WriteLine("Mux flag : " + mux);
|
Logger.WriteLine("Mux flag : " + mux);
|
||||||
|
|
||||||
|
settings.VisualiseGPUButtons(eco >= 0, mux >= 0);
|
||||||
|
|
||||||
if (mux == 0)
|
if (mux == 0)
|
||||||
{
|
{
|
||||||
GpuMode = AsusACPI.GPUModeUltimate;
|
gpuMode = AsusACPI.GPUModeUltimate;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (eco == 1)
|
if (eco == 1)
|
||||||
GpuMode = AsusACPI.GPUModeEco;
|
gpuMode = AsusACPI.GPUModeEco;
|
||||||
else
|
else
|
||||||
GpuMode = AsusACPI.GPUModeStandard;
|
gpuMode = AsusACPI.GPUModeStandard;
|
||||||
|
|
||||||
// Ultimate mode not supported
|
|
||||||
if (mux != 1) settings.HideUltimateMode();
|
|
||||||
// GPU mode not supported
|
// GPU mode not supported
|
||||||
if (eco < 0 && mux < 0) settings.HideGPUModes();
|
if (eco < 0 && mux < 0)
|
||||||
|
{
|
||||||
|
if (gpuExists is null) gpuExists = Program.acpi.GetFan(AsusFan.GPU) >= 0;
|
||||||
|
settings.HideGPUModes((bool)gpuExists);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AppConfig.Set("gpu_mode", GpuMode);
|
AppConfig.Set("gpu_mode", gpuMode);
|
||||||
|
settings.VisualiseGPUMode(gpuMode);
|
||||||
|
|
||||||
|
AsusUSB.ApplyGPUColor();
|
||||||
|
|
||||||
InitXGM();
|
|
||||||
settings.VisualiseGPUMode(GpuMode);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -65,12 +74,15 @@ namespace GHelper.Gpu
|
|||||||
var restart = false;
|
var restart = false;
|
||||||
var changed = false;
|
var changed = false;
|
||||||
|
|
||||||
|
int status;
|
||||||
|
|
||||||
if (CurrentGPU == AsusACPI.GPUModeUltimate)
|
if (CurrentGPU == AsusACPI.GPUModeUltimate)
|
||||||
{
|
{
|
||||||
DialogResult dialogResult = MessageBox.Show(Properties.Strings.AlertUltimateOff, Properties.Strings.AlertUltimateTitle, MessageBoxButtons.YesNo);
|
DialogResult dialogResult = MessageBox.Show(Properties.Strings.AlertUltimateOff, Properties.Strings.AlertUltimateTitle, MessageBoxButtons.YesNo);
|
||||||
if (dialogResult == DialogResult.Yes)
|
if (dialogResult == DialogResult.Yes)
|
||||||
{
|
{
|
||||||
Program.acpi.DeviceSet(AsusACPI.GPUMux, 1, "GPUMux");
|
status = Program.acpi.DeviceSet(AsusACPI.GPUMux, 1, "GPUMux");
|
||||||
|
if (status != 1) Program.acpi.DeviceSet(AsusACPI.GPUMuxVivo, 1, "GPUMuxVivo");
|
||||||
restart = true;
|
restart = true;
|
||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
@@ -85,7 +97,8 @@ namespace GHelper.Gpu
|
|||||||
Program.acpi.SetGPUEco(0);
|
Program.acpi.SetGPUEco(0);
|
||||||
Thread.Sleep(100);
|
Thread.Sleep(100);
|
||||||
}
|
}
|
||||||
Program.acpi.DeviceSet(AsusACPI.GPUMux, 0, "GPUMux");
|
status = Program.acpi.DeviceSet(AsusACPI.GPUMux, 0, "GPUMux");
|
||||||
|
if (status != 1) Program.acpi.DeviceSet(AsusACPI.GPUMuxVivo, 0, "GPUMuxVivo");
|
||||||
restart = true;
|
restart = true;
|
||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
@@ -152,7 +165,7 @@ namespace GHelper.Gpu
|
|||||||
|
|
||||||
if (status == 0 && eco == 1 && hardWay) RestartGPU();
|
if (status == 0 && eco == 1 && hardWay) RestartGPU();
|
||||||
|
|
||||||
await Task.Delay(TimeSpan.FromMilliseconds(100));
|
await Task.Delay(TimeSpan.FromMilliseconds(AppConfig.Get("refresh_delay", 500)));
|
||||||
|
|
||||||
settings.Invoke(delegate
|
settings.Invoke(delegate
|
||||||
{
|
{
|
||||||
@@ -189,7 +202,7 @@ namespace GHelper.Gpu
|
|||||||
{
|
{
|
||||||
|
|
||||||
bool GpuAuto = AppConfig.Is("gpu_auto");
|
bool GpuAuto = AppConfig.Is("gpu_auto");
|
||||||
bool ForceGPU = AppConfig.ContainsModel("503");
|
bool ForceGPU = AppConfig.IsForceSetGPUMode();
|
||||||
|
|
||||||
int GpuMode = AppConfig.Get("gpu_mode");
|
int GpuMode = AppConfig.Get("gpu_mode");
|
||||||
|
|
||||||
@@ -268,9 +281,12 @@ namespace GHelper.Gpu
|
|||||||
|
|
||||||
public void InitXGM()
|
public void InitXGM()
|
||||||
{
|
{
|
||||||
bool connected = Program.acpi.IsXGConnected();
|
if (Program.acpi.IsXGConnected())
|
||||||
int activated = Program.acpi.DeviceGet(AsusACPI.GPUXG);
|
{
|
||||||
settings.VisualizeXGM(connected, activated == 1);
|
//Program.acpi.DeviceSet(AsusACPI.GPUXGInit, 1, "XG Init");
|
||||||
|
AsusUSB.InitXGM();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ToggleXGM()
|
public void ToggleXGM()
|
||||||
@@ -282,7 +298,9 @@ namespace GHelper.Gpu
|
|||||||
|
|
||||||
if (Program.acpi.DeviceGet(AsusACPI.GPUXG) == 1)
|
if (Program.acpi.DeviceGet(AsusACPI.GPUXG) == 1)
|
||||||
{
|
{
|
||||||
|
AsusUSB.ResetXGM();
|
||||||
HardwareControl.KillGPUApps();
|
HardwareControl.KillGPUApps();
|
||||||
|
|
||||||
DialogResult dialogResult = MessageBox.Show("Did you close all applications running on XG Mobile?", "Disabling XG Mobile", MessageBoxButtons.YesNo);
|
DialogResult dialogResult = MessageBox.Show("Did you close all applications running on XG Mobile?", "Disabling XG Mobile", MessageBoxButtons.YesNo);
|
||||||
if (dialogResult == DialogResult.Yes)
|
if (dialogResult == DialogResult.Yes)
|
||||||
{
|
{
|
||||||
@@ -292,7 +310,14 @@ namespace GHelper.Gpu
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Program.acpi.DeviceSet(AsusACPI.GPUXG, 1, "GPU XGM");
|
|
||||||
|
if (AppConfig.Is("xgm_special"))
|
||||||
|
Program.acpi.DeviceSet(AsusACPI.GPUXG, 0x101, "GPU XGM");
|
||||||
|
else
|
||||||
|
Program.acpi.DeviceSet(AsusACPI.GPUXG, 1, "GPU XGM");
|
||||||
|
|
||||||
|
InitXGM();
|
||||||
|
|
||||||
AsusUSB.ApplyXGMLight(AppConfig.Is("xmg_light"));
|
AsusUSB.ApplyXGMLight(AppConfig.Is("xmg_light"));
|
||||||
|
|
||||||
await Task.Delay(TimeSpan.FromSeconds(15));
|
await Task.Delay(TimeSpan.FromSeconds(15));
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using GHelper;
|
using GHelper;
|
||||||
|
using GHelper.Fan;
|
||||||
using GHelper.Gpu;
|
using GHelper.Gpu;
|
||||||
using GHelper.Gpu.NVidia;
|
using GHelper.Gpu.NVidia;
|
||||||
using GHelper.Gpu.AMD;
|
using GHelper.Gpu.AMD;
|
||||||
@@ -10,9 +11,6 @@ using System.Management;
|
|||||||
public static class HardwareControl
|
public static class HardwareControl
|
||||||
{
|
{
|
||||||
|
|
||||||
const int DEFAULT_FAN_MAX = 58;
|
|
||||||
const int INADEQUATE_MAX = 80;
|
|
||||||
|
|
||||||
public static IGpuControl? GpuControl;
|
public static IGpuControl? GpuControl;
|
||||||
|
|
||||||
public static float? cpuTemp = -1;
|
public static float? cpuTemp = -1;
|
||||||
@@ -35,65 +33,6 @@ public static class HardwareControl
|
|||||||
|
|
||||||
static long lastUpdate;
|
static long lastUpdate;
|
||||||
|
|
||||||
static int _fanMax = DEFAULT_FAN_MAX;
|
|
||||||
static bool _fanRpm = false;
|
|
||||||
|
|
||||||
public static int fanMax
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return _fanMax;
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
AppConfig.Set("fan_max", value);
|
|
||||||
_fanMax = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static bool fanRpm
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return _fanRpm;
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
AppConfig.Set("fan_rpm", value ? 1 : 0);
|
|
||||||
_fanRpm = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static HardwareControl()
|
|
||||||
{
|
|
||||||
_fanMax = AppConfig.Get("fan_max");
|
|
||||||
if (_fanMax > INADEQUATE_MAX) _fanMax = -1; // skipping inadvequate settings
|
|
||||||
|
|
||||||
if (_fanMax < 0 && AppConfig.ContainsModel("401")) _fanMax = 72;
|
|
||||||
if (_fanMax < 0 && AppConfig.ContainsModel("503")) _fanMax = 68;
|
|
||||||
if (_fanMax < 0) _fanMax = DEFAULT_FAN_MAX;
|
|
||||||
|
|
||||||
_fanRpm = AppConfig.Is("fan_rpm");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string FormatFan(int fan)
|
|
||||||
{
|
|
||||||
// fix for old models
|
|
||||||
if (fan < 0)
|
|
||||||
{
|
|
||||||
fan += 65536;
|
|
||||||
if (fan <= 0 || fan > 100) return null; //nothing reasonable
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fan > fanMax && fan <= INADEQUATE_MAX) fanMax = fan;
|
|
||||||
|
|
||||||
if (fanRpm)
|
|
||||||
return GHelper.Properties.Strings.FanSpeed + ": " + (fan * 100).ToString() + "RPM";
|
|
||||||
else
|
|
||||||
return GHelper.Properties.Strings.FanSpeed + ": " + Math.Min(Math.Round((float)fan / fanMax * 100), 100).ToString() + "%"; // relatively to 6000 rpm
|
|
||||||
}
|
|
||||||
|
|
||||||
private static int GetGpuUse()
|
private static int GetGpuUse()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -141,7 +80,7 @@ public static class HardwareControl
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.WriteLine("Discharge Reading: " + ex.Message);
|
Debug.WriteLine("Discharge Reading: " + ex.Message);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -163,7 +102,7 @@ public static class HardwareControl
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.WriteLine("Full Charge Reading: " + ex.Message);
|
Debug.WriteLine("Full Charge Reading: " + ex.Message);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -186,7 +125,7 @@ public static class HardwareControl
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.WriteLine("Design Capacity Reading: " + ex.Message);
|
Debug.WriteLine("Design Capacity Reading: " + ex.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -246,9 +185,9 @@ public static class HardwareControl
|
|||||||
gpuTemp = -1;
|
gpuTemp = -1;
|
||||||
gpuUse = -1;
|
gpuUse = -1;
|
||||||
|
|
||||||
cpuFan = FormatFan(Program.acpi.DeviceGet(AsusACPI.CPU_Fan));
|
cpuFan = FanSensorControl.FormatFan(AsusFan.CPU, Program.acpi.GetFan(AsusFan.CPU));
|
||||||
gpuFan = FormatFan(Program.acpi.DeviceGet(AsusACPI.GPU_Fan));
|
gpuFan = FanSensorControl.FormatFan(AsusFan.GPU, Program.acpi.GetFan(AsusFan.GPU));
|
||||||
midFan = FormatFan(Program.acpi.DeviceGet(AsusACPI.Mid_Fan));
|
midFan = FanSensorControl.FormatFan(AsusFan.Mid, Program.acpi.GetFan(AsusFan.Mid));
|
||||||
|
|
||||||
cpuTemp = GetCPUTemp();
|
cpuTemp = GetCPUTemp();
|
||||||
|
|
||||||
@@ -328,6 +267,7 @@ public static class HardwareControl
|
|||||||
if (_gpuControl.IsValid)
|
if (_gpuControl.IsValid)
|
||||||
{
|
{
|
||||||
GpuControl = _gpuControl;
|
GpuControl = _gpuControl;
|
||||||
|
if (GpuControl.FullName.Contains("6850M")) AppConfig.Set("xgm_special", 1);
|
||||||
Logger.WriteLine(GpuControl.FullName);
|
Logger.WriteLine(GpuControl.FullName);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -95,6 +95,10 @@ namespace GHelper.Helpers
|
|||||||
|
|
||||||
if (IsClamshellEnabled())
|
if (IsClamshellEnabled())
|
||||||
ToggleLidAction();
|
ToggleLidAction();
|
||||||
|
|
||||||
|
if (Program.settingsForm.Visible)
|
||||||
|
Program.screenControl.InitScreen();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int CheckAndSaveLidAction()
|
private static int CheckAndSaveLidAction()
|
||||||
|
|||||||
@@ -55,6 +55,12 @@ namespace GHelper.Helpers
|
|||||||
return Process.GetProcessesByName("AsusOptimization").Count() > 0;
|
return Process.GetProcessesByName("AsusOptimization").Count() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool IsOSDRunning()
|
||||||
|
{
|
||||||
|
return Process.GetProcessesByName("AsusOSD").Count() > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static int GetRunningCount()
|
public static int GetRunningCount()
|
||||||
{
|
{
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ public class Startup
|
|||||||
|
|
||||||
public static bool IsScheduled()
|
public static bool IsScheduled()
|
||||||
{
|
{
|
||||||
TaskService taskService = new TaskService();
|
using (TaskService taskService = new TaskService())
|
||||||
return (taskService.RootFolder.AllTasks.Any(t => t.Name == taskName));
|
return (taskService.RootFolder.AllTasks.Any(t => t.Name == taskName));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ReScheduleAdmin()
|
public static void ReScheduleAdmin()
|
||||||
@@ -23,6 +23,26 @@ public class Startup
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void StartupCheck()
|
||||||
|
{
|
||||||
|
using (TaskService taskService = new TaskService())
|
||||||
|
{
|
||||||
|
var task = taskService.RootFolder.AllTasks.FirstOrDefault(t => t.Name == taskName);
|
||||||
|
if (task != null)
|
||||||
|
{
|
||||||
|
string strExeFilePath = Application.ExecutablePath.Trim();
|
||||||
|
string action = task.Definition.Actions.FirstOrDefault()!.ToString().Trim();
|
||||||
|
if (!strExeFilePath.Equals(action, StringComparison.OrdinalIgnoreCase) && !File.Exists(action))
|
||||||
|
{
|
||||||
|
Logger.WriteLine("File doesn't exist: " + action);
|
||||||
|
Logger.WriteLine("Rescheduling to: " + strExeFilePath);
|
||||||
|
UnSchedule();
|
||||||
|
Schedule();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void Schedule()
|
public static void Schedule()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using GHelper.Mode;
|
|||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Management;
|
using System.Management;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace GHelper.Input
|
namespace GHelper.Input
|
||||||
{
|
{
|
||||||
@@ -103,7 +104,12 @@ namespace GHelper.Input
|
|||||||
string actionM1 = AppConfig.GetString("m1");
|
string actionM1 = AppConfig.GetString("m1");
|
||||||
string actionM2 = AppConfig.GetString("m2");
|
string actionM2 = AppConfig.GetString("m2");
|
||||||
|
|
||||||
if (keyProfile != Keys.None) hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control, keyProfile);
|
if (keyProfile != Keys.None)
|
||||||
|
{
|
||||||
|
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control, keyProfile);
|
||||||
|
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, keyProfile);
|
||||||
|
}
|
||||||
|
|
||||||
if (keyApp != Keys.None) hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control, keyApp);
|
if (keyApp != Keys.None) hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control, keyApp);
|
||||||
|
|
||||||
if (!AppConfig.Is("skip_hotkeys"))
|
if (!AppConfig.Is("skip_hotkeys"))
|
||||||
@@ -126,27 +132,70 @@ namespace GHelper.Input
|
|||||||
if (AppConfig.Is("fn_lock") && !AppConfig.ContainsModel("VivoBook"))
|
if (AppConfig.Is("fn_lock") && !AppConfig.ContainsModel("VivoBook"))
|
||||||
for (Keys i = Keys.F1; i <= Keys.F11; i++) hook.RegisterHotKey(ModifierKeys.None, i);
|
for (Keys i = Keys.F1; i <= Keys.F11; i++) hook.RegisterHotKey(ModifierKeys.None, i);
|
||||||
|
|
||||||
|
// Arrow-lock group
|
||||||
|
if (AppConfig.Is("arrow_lock") && AppConfig.IsDUO())
|
||||||
|
{
|
||||||
|
hook.RegisterHotKey(ModifierKeys.None, Keys.Left);
|
||||||
|
hook.RegisterHotKey(ModifierKeys.None, Keys.Right);
|
||||||
|
hook.RegisterHotKey(ModifierKeys.None, Keys.Up);
|
||||||
|
hook.RegisterHotKey(ModifierKeys.None, Keys.Down);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static int[] ParseHexValues(string input)
|
||||||
|
{
|
||||||
|
string pattern = @"\b(0x[0-9A-Fa-f]{1,2}|[0-9A-Fa-f]{1,2})\b";
|
||||||
|
|
||||||
|
if (!Regex.IsMatch(input, $"^{pattern}(\\s+{pattern})*$")) return new int[0];
|
||||||
|
|
||||||
|
MatchCollection matches = Regex.Matches(input, pattern);
|
||||||
|
|
||||||
|
int[] hexValues = new int[matches.Count];
|
||||||
|
|
||||||
|
for (int i = 0; i < matches.Count; i++)
|
||||||
|
{
|
||||||
|
string hexValueStr = matches[i].Value;
|
||||||
|
int hexValue = int.Parse(hexValueStr.StartsWith("0x", StringComparison.OrdinalIgnoreCase)
|
||||||
|
? hexValueStr.Substring(2)
|
||||||
|
: hexValueStr, System.Globalization.NumberStyles.HexNumber);
|
||||||
|
|
||||||
|
hexValues[i] = hexValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
return hexValues;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void CustomKey(string configKey = "m3")
|
static void CustomKey(string configKey = "m3")
|
||||||
{
|
{
|
||||||
string command = AppConfig.GetString(configKey + "_custom");
|
string command = AppConfig.GetString(configKey + "_custom");
|
||||||
int intKey;
|
int[] hexKeys = new int[0];
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
intKey = Convert.ToInt32(command, 16);
|
hexKeys = ParseHexValues(command);
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
intKey = -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch (hexKeys.Length)
|
||||||
if (intKey > 0)
|
{
|
||||||
KeyboardHook.KeyPress((Keys)intKey);
|
case 1:
|
||||||
else
|
KeyboardHook.KeyPress((Keys)hexKeys[0]);
|
||||||
LaunchProcess(command);
|
break;
|
||||||
|
case 2:
|
||||||
|
KeyboardHook.KeyKeyPress((Keys)hexKeys[0], (Keys)hexKeys[1]);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
KeyboardHook.KeyKeyKeyPress((Keys)hexKeys[0], (Keys)hexKeys[1], (Keys)hexKeys[3]);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
LaunchProcess(command);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -168,7 +217,7 @@ namespace GHelper.Input
|
|||||||
|
|
||||||
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(delta) + "%", (delta < 0) ? ToastIcon.BrightnessDown : ToastIcon.BrightnessUp);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -250,7 +299,7 @@ namespace GHelper.Input
|
|||||||
SetBrightness(+10);
|
SetBrightness(+10);
|
||||||
break;
|
break;
|
||||||
case Keys.F9:
|
case Keys.F9:
|
||||||
KeyboardHook.KeyWinPress(Keys.P);
|
KeyboardHook.KeyKeyPress(Keys.LWin, Keys.P);
|
||||||
break;
|
break;
|
||||||
case Keys.F10:
|
case Keys.F10:
|
||||||
HandleOptimizationEvent(107);
|
HandleOptimizationEvent(107);
|
||||||
@@ -259,7 +308,7 @@ namespace GHelper.Input
|
|||||||
HandleOptimizationEvent(108);
|
HandleOptimizationEvent(108);
|
||||||
break;
|
break;
|
||||||
case Keys.F12:
|
case Keys.F12:
|
||||||
KeyboardHook.KeyWinPress(Keys.A);
|
KeyboardHook.KeyKeyPress(Keys.LWin, Keys.A);
|
||||||
break;
|
break;
|
||||||
case Keys.VolumeDown:
|
case Keys.VolumeDown:
|
||||||
KeyProcess("m1");
|
KeyProcess("m1");
|
||||||
@@ -267,6 +316,18 @@ namespace GHelper.Input
|
|||||||
case Keys.VolumeUp:
|
case Keys.VolumeUp:
|
||||||
KeyProcess("m2");
|
KeyProcess("m2");
|
||||||
break;
|
break;
|
||||||
|
case Keys.Left:
|
||||||
|
KeyboardHook.KeyPress(Keys.Home);
|
||||||
|
break;
|
||||||
|
case Keys.Right:
|
||||||
|
KeyboardHook.KeyPress(Keys.End);
|
||||||
|
break;
|
||||||
|
case Keys.Up:
|
||||||
|
KeyboardHook.KeyPress(Keys.PageUp);
|
||||||
|
break;
|
||||||
|
case Keys.Down:
|
||||||
|
KeyboardHook.KeyPress(Keys.PageDown);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -280,6 +341,11 @@ namespace GHelper.Input
|
|||||||
if (e.Key == Keys.F20) KeyProcess("m3");
|
if (e.Key == Keys.F20) KeyProcess("m3");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (e.Modifier == (ModifierKeys.Control | ModifierKeys.Shift | ModifierKeys.Alt))
|
||||||
|
{
|
||||||
|
if (e.Key == keyProfile) modeControl.CyclePerformanceMode(true);
|
||||||
|
}
|
||||||
|
|
||||||
if (e.Modifier == (ModifierKeys.Control))
|
if (e.Modifier == (ModifierKeys.Control))
|
||||||
{
|
{
|
||||||
switch (e.Key)
|
switch (e.Key)
|
||||||
@@ -345,7 +411,7 @@ namespace GHelper.Input
|
|||||||
break;
|
break;
|
||||||
case "screen":
|
case "screen":
|
||||||
Logger.WriteLine("Screen off toggle");
|
Logger.WriteLine("Screen off toggle");
|
||||||
NativeMethods.TurnOffScreen(Program.settingsForm.Handle);
|
NativeMethods.TurnOffScreen();
|
||||||
break;
|
break;
|
||||||
case "miniled":
|
case "miniled":
|
||||||
screenControl.ToogleMiniled();
|
screenControl.ToogleMiniled();
|
||||||
@@ -354,13 +420,20 @@ namespace GHelper.Input
|
|||||||
Program.settingsForm.BeginInvoke(Program.settingsForm.CycleAuraMode);
|
Program.settingsForm.BeginInvoke(Program.settingsForm.CycleAuraMode);
|
||||||
break;
|
break;
|
||||||
case "performance":
|
case "performance":
|
||||||
modeControl.CyclePerformanceMode();
|
modeControl.CyclePerformanceMode(Control.ModifierKeys == Keys.Shift);
|
||||||
break;
|
break;
|
||||||
case "ghelper":
|
case "ghelper":
|
||||||
Program.settingsForm.BeginInvoke(delegate
|
try
|
||||||
{
|
{
|
||||||
Program.SettingsToggle();
|
Program.settingsForm.BeginInvoke(delegate
|
||||||
});
|
{
|
||||||
|
Program.SettingsToggle();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Debug.WriteLine(ex);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case "fnlock":
|
case "fnlock":
|
||||||
ToggleFnLock();
|
ToggleFnLock();
|
||||||
@@ -368,6 +441,7 @@ namespace GHelper.Input
|
|||||||
case "micmute":
|
case "micmute":
|
||||||
bool muteStatus = Audio.ToggleMute();
|
bool muteStatus = Audio.ToggleMute();
|
||||||
Program.toast.RunToast(muteStatus ? "Muted" : "Unmuted", muteStatus ? ToastIcon.MicrophoneMute : ToastIcon.Microphone);
|
Program.toast.RunToast(muteStatus ? "Muted" : "Unmuted", muteStatus ? ToastIcon.MicrophoneMute : ToastIcon.Microphone);
|
||||||
|
if (AppConfig.IsVivobook()) Program.acpi.DeviceSet(AsusACPI.MICMUTE_LED, muteStatus ? 1 : 0, "MicmuteLed");
|
||||||
break;
|
break;
|
||||||
case "brightness_up":
|
case "brightness_up":
|
||||||
SetBrightness(+10);
|
SetBrightness(+10);
|
||||||
@@ -401,6 +475,20 @@ namespace GHelper.Input
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void ToggleTouchpad()
|
||||||
|
{
|
||||||
|
KeyboardHook.KeyKeyKeyPress(Keys.ControlKey, Keys.LWin, Keys.F24);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ToggleArrowLock()
|
||||||
|
{
|
||||||
|
int arLock = AppConfig.Is("arrow_lock") ? 0 : 1;
|
||||||
|
AppConfig.Set("arrow_lock", arLock);
|
||||||
|
|
||||||
|
Program.settingsForm.BeginInvoke(Program.inputDispatcher.RegisterKeys);
|
||||||
|
Program.toast.RunToast("Arrow-Lock " + (arLock == 1 ? "On" : "Off"), ToastIcon.FnLock);
|
||||||
|
}
|
||||||
|
|
||||||
public static void ToggleFnLock()
|
public static void ToggleFnLock()
|
||||||
{
|
{
|
||||||
int fnLock = AppConfig.Is("fn_lock") ? 0 : 1;
|
int fnLock = AppConfig.Is("fn_lock") ? 0 : 1;
|
||||||
@@ -435,7 +523,7 @@ namespace GHelper.Input
|
|||||||
// We'll special-case the translation of those.
|
// We'll special-case the translation of those.
|
||||||
if (AppConfig.IsAlly())
|
if (AppConfig.IsAlly())
|
||||||
{
|
{
|
||||||
switch(EventID)
|
switch (EventID)
|
||||||
{
|
{
|
||||||
|
|
||||||
// This is both the M1 and M2 keys.
|
// This is both the M1 and M2 keys.
|
||||||
@@ -466,11 +554,14 @@ namespace GHelper.Input
|
|||||||
case 56: // M4 / Rog button
|
case 56: // M4 / Rog button
|
||||||
KeyProcess("m4");
|
KeyProcess("m4");
|
||||||
return;
|
return;
|
||||||
|
case 55: // Arconym
|
||||||
|
KeyProcess("m6");
|
||||||
|
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
|
||||||
modeControl.CyclePerformanceMode();
|
modeControl.CyclePerformanceMode(Control.ModifierKeys == Keys.Shift);
|
||||||
return;
|
return;
|
||||||
case 179: // FN+F4
|
case 179: // FN+F4
|
||||||
case 178: // FN+F4
|
case 178: // FN+F4
|
||||||
@@ -482,6 +573,9 @@ namespace GHelper.Input
|
|||||||
case 78: // Fn + ESC
|
case 78: // Fn + ESC
|
||||||
ToggleFnLock();
|
ToggleFnLock();
|
||||||
return;
|
return;
|
||||||
|
case 75: // Fn + ESC
|
||||||
|
ToggleArrowLock();
|
||||||
|
return;
|
||||||
case 189: // Tablet mode
|
case 189: // Tablet mode
|
||||||
TabletMode();
|
TabletMode();
|
||||||
return;
|
return;
|
||||||
@@ -495,7 +589,7 @@ namespace GHelper.Input
|
|||||||
SetBacklight(4);
|
SetBacklight(4);
|
||||||
return;
|
return;
|
||||||
case 53: // FN+F6 on GA-502DU model
|
case 53: // FN+F6 on GA-502DU model
|
||||||
NativeMethods.TurnOffScreen(Program.settingsForm.Handle);
|
NativeMethods.TurnOffScreen();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -519,13 +613,18 @@ namespace GHelper.Input
|
|||||||
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Brightness_Up, "Brightness");
|
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Brightness_Up, "Brightness");
|
||||||
break;
|
break;
|
||||||
case 107: // FN+F10
|
case 107: // FN+F10
|
||||||
AsusUSB.TouchpadToggle();
|
ToggleTouchpad();
|
||||||
Thread.Sleep(200);
|
Thread.Sleep(200);
|
||||||
Program.toast.RunToast(GetTouchpadState() ? "On" : "Off", ToastIcon.Touchpad);
|
Program.toast.RunToast(GetTouchpadState() ? "On" : "Off", ToastIcon.Touchpad);
|
||||||
break;
|
break;
|
||||||
case 108: // FN+F11
|
case 108: // FN+F11
|
||||||
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.KB_Sleep, "Sleep");
|
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.KB_Sleep, "Sleep");
|
||||||
break;
|
break;
|
||||||
|
case 106: // Screenpad button on DUO
|
||||||
|
SetScreenpad(100);
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -547,9 +646,7 @@ namespace GHelper.Input
|
|||||||
public static void SetBacklightAuto(bool init = false)
|
public static void SetBacklightAuto(bool init = false)
|
||||||
{
|
{
|
||||||
if (init) AsusUSB.Init();
|
if (init) AsusUSB.Init();
|
||||||
|
AsusUSB.ApplyBrightness(GetBacklight(), "Auto", init);
|
||||||
//if (!OptimizationService.IsRunning())
|
|
||||||
AsusUSB.ApplyBrightness(GetBacklight(), "Auto");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SetBacklight(int delta, bool force = false)
|
public static void SetBacklight(int delta, bool force = false)
|
||||||
@@ -575,22 +672,45 @@ namespace GHelper.Input
|
|||||||
AsusUSB.ApplyBrightness(backlight, "HotKey");
|
AsusUSB.ApplyBrightness(backlight, "HotKey");
|
||||||
}
|
}
|
||||||
|
|
||||||
string[] backlightNames = new string[] { "Off", "Low", "Mid", "Max" };
|
if (!OptimizationService.IsOSDRunning())
|
||||||
Program.toast.RunToast(backlightNames[backlight], delta > 0 ? ToastIcon.BacklightUp : ToastIcon.BacklightDown);
|
{
|
||||||
|
string[] backlightNames = new string[] { "Off", "Low", "Mid", "Max" };
|
||||||
|
Program.toast.RunToast(backlightNames[backlight], delta > 0 ? ToastIcon.BacklightUp : ToastIcon.BacklightDown);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SetScreenpad(int delta)
|
public static void SetScreenpad(int delta)
|
||||||
{
|
{
|
||||||
int brightness = AppConfig.Get("screenpad", 100);
|
int brightness = AppConfig.Get("screenpad", 100);
|
||||||
brightness = Math.Max(Math.Min(100, brightness + delta), 0);
|
|
||||||
|
if (delta == 100)
|
||||||
|
{
|
||||||
|
if (brightness < 0) brightness = 100;
|
||||||
|
else if (brightness >= 100) brightness = 0;
|
||||||
|
else brightness = -10;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
brightness = Math.Max(Math.Min(100, brightness + delta), -10);
|
||||||
|
}
|
||||||
|
|
||||||
AppConfig.Set("screenpad", brightness);
|
AppConfig.Set("screenpad", brightness);
|
||||||
|
|
||||||
Program.acpi.DeviceSet(AsusACPI.ScreenPadBrightness, (brightness * 255 / 100), "Screenpad");
|
if (brightness >= 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, 1, "ScreenpadOn");
|
||||||
if (brightness == 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, brightness, "ScreenpadToggle");
|
|
||||||
|
|
||||||
Program.toast.RunToast($"Screen Pad {brightness}", delta > 0 ? ToastIcon.BrightnessUp : ToastIcon.BrightnessDown);
|
Program.acpi.DeviceSet(AsusACPI.ScreenPadBrightness, Math.Max(brightness * 255 / 100, 0), "Screenpad");
|
||||||
|
|
||||||
|
if (brightness < 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, 0, "ScreenpadOff");
|
||||||
|
|
||||||
|
string toast;
|
||||||
|
|
||||||
|
if (brightness < 0) toast = "Off";
|
||||||
|
else if (brightness == 0) toast = "Hidden";
|
||||||
|
else toast = brightness.ToString() + "%";
|
||||||
|
|
||||||
|
Program.toast.RunToast($"Screen Pad {toast}", delta > 0 ? ToastIcon.BrightnessUp : ToastIcon.BrightnessDown);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -603,11 +723,14 @@ namespace GHelper.Input
|
|||||||
|
|
||||||
//string executable = command.Split(' ')[0];
|
//string executable = command.Split(' ')[0];
|
||||||
//string arguments = command.Substring(executable.Length).Trim();
|
//string arguments = command.Substring(executable.Length).Trim();
|
||||||
|
ProcessStartInfo startInfo = new ProcessStartInfo("cmd", "/C " + command);
|
||||||
|
|
||||||
|
startInfo.RedirectStandardOutput = true;
|
||||||
|
startInfo.RedirectStandardError = true;
|
||||||
|
startInfo.UseShellExecute = false;
|
||||||
|
startInfo.CreateNoWindow = true;
|
||||||
|
|
||||||
ProcessStartInfo startInfo = new ProcessStartInfo();
|
|
||||||
startInfo.UseShellExecute = true;
|
|
||||||
startInfo.WorkingDirectory = Environment.CurrentDirectory;
|
startInfo.WorkingDirectory = Environment.CurrentDirectory;
|
||||||
startInfo.FileName = command;
|
|
||||||
//startInfo.Arguments = arguments;
|
//startInfo.Arguments = arguments;
|
||||||
Process proc = Process.Start(startInfo);
|
Process proc = Process.Start(startInfo);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,21 +17,33 @@ public sealed class KeyboardHook : IDisposable
|
|||||||
|
|
||||||
public const int KEYEVENTF_EXTENDEDKEY = 1;
|
public const int KEYEVENTF_EXTENDEDKEY = 1;
|
||||||
public const int KEYEVENTF_KEYUP = 2;
|
public const int KEYEVENTF_KEYUP = 2;
|
||||||
|
|
||||||
private const byte VK_LWIN = 0x5B;
|
private const byte VK_LWIN = 0x5B;
|
||||||
|
private const byte VK_LCONTROL = 0xA2;
|
||||||
|
|
||||||
public static void KeyPress(Keys key)
|
public static void KeyPress(Keys key)
|
||||||
{
|
{
|
||||||
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
|
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void KeyWinPress(Keys key)
|
public static void KeyKeyPress(Keys key, Keys key2)
|
||||||
{
|
{
|
||||||
keybd_event(VK_LWIN, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
|
|
||||||
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
|
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
|
||||||
|
keybd_event((byte)key2, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
|
||||||
|
keybd_event((byte)key2, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
|
||||||
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
|
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
|
||||||
keybd_event(VK_LWIN, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void KeyKeyKeyPress(Keys key, Keys key2, Keys key3)
|
||||||
|
{
|
||||||
|
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
|
||||||
|
keybd_event((byte)key2, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
|
||||||
|
keybd_event((byte)key3, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
|
||||||
|
|
||||||
|
keybd_event((byte)key3, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
|
||||||
|
keybd_event((byte)key2, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
|
||||||
|
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Represents the window that is used internally to get the messages.
|
/// Represents the window that is used internally to get the messages.
|
||||||
|
|||||||
302
app/Matrix.Designer.cs
generated
Normal file
302
app/Matrix.Designer.cs
generated
Normal file
@@ -0,0 +1,302 @@
|
|||||||
|
namespace GHelper
|
||||||
|
{
|
||||||
|
partial class Matrix
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
pictureMatrix = new PictureBox();
|
||||||
|
trackZoom = new TrackBar();
|
||||||
|
buttonPicture = new UI.RButton();
|
||||||
|
panelPicture = new Panel();
|
||||||
|
panelMain = new Panel();
|
||||||
|
panelButtons = new Panel();
|
||||||
|
buttonReset = new UI.RButton();
|
||||||
|
panelScaling = new Panel();
|
||||||
|
comboScaling = new UI.RComboBox();
|
||||||
|
labelScaling = new Label();
|
||||||
|
panelZoom = new Panel();
|
||||||
|
labelZoom = new Label();
|
||||||
|
labelZoomTitle = new Label();
|
||||||
|
panelRotation = new Panel();
|
||||||
|
comboRotation = new UI.RComboBox();
|
||||||
|
labelRotation = new Label();
|
||||||
|
((System.ComponentModel.ISupportInitialize)pictureMatrix).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)trackZoom).BeginInit();
|
||||||
|
panelPicture.SuspendLayout();
|
||||||
|
panelMain.SuspendLayout();
|
||||||
|
panelButtons.SuspendLayout();
|
||||||
|
panelScaling.SuspendLayout();
|
||||||
|
panelZoom.SuspendLayout();
|
||||||
|
panelRotation.SuspendLayout();
|
||||||
|
SuspendLayout();
|
||||||
|
//
|
||||||
|
// pictureMatrix
|
||||||
|
//
|
||||||
|
pictureMatrix.BackColor = Color.Black;
|
||||||
|
pictureMatrix.Cursor = Cursors.SizeAll;
|
||||||
|
pictureMatrix.Location = new Point(731, 27);
|
||||||
|
pictureMatrix.Name = "pictureMatrix";
|
||||||
|
pictureMatrix.Size = new Size(81, 73);
|
||||||
|
pictureMatrix.TabIndex = 0;
|
||||||
|
pictureMatrix.TabStop = false;
|
||||||
|
//
|
||||||
|
// trackZoom
|
||||||
|
//
|
||||||
|
trackZoom.LargeChange = 50;
|
||||||
|
trackZoom.Location = new Point(16, 52);
|
||||||
|
trackZoom.Maximum = 200;
|
||||||
|
trackZoom.Minimum = 10;
|
||||||
|
trackZoom.Name = "trackZoom";
|
||||||
|
trackZoom.Size = new Size(782, 90);
|
||||||
|
trackZoom.SmallChange = 10;
|
||||||
|
trackZoom.TabIndex = 2;
|
||||||
|
trackZoom.TickFrequency = 20;
|
||||||
|
trackZoom.TickStyle = TickStyle.TopLeft;
|
||||||
|
trackZoom.Value = 100;
|
||||||
|
//
|
||||||
|
// buttonPicture
|
||||||
|
//
|
||||||
|
buttonPicture.Activated = false;
|
||||||
|
buttonPicture.BackColor = SystemColors.ControlLight;
|
||||||
|
buttonPicture.BorderColor = Color.Transparent;
|
||||||
|
buttonPicture.BorderRadius = 5;
|
||||||
|
buttonPicture.FlatAppearance.BorderSize = 0;
|
||||||
|
buttonPicture.FlatStyle = FlatStyle.Flat;
|
||||||
|
buttonPicture.Image = Properties.Resources.icons8_matrix_32;
|
||||||
|
buttonPicture.Location = new Point(16, 19);
|
||||||
|
buttonPicture.Name = "buttonPicture";
|
||||||
|
buttonPicture.Secondary = true;
|
||||||
|
buttonPicture.Size = new Size(258, 56);
|
||||||
|
buttonPicture.TabIndex = 3;
|
||||||
|
buttonPicture.Text = "Picture / Gif";
|
||||||
|
buttonPicture.TextAlign = ContentAlignment.MiddleRight;
|
||||||
|
buttonPicture.TextImageRelation = TextImageRelation.ImageBeforeText;
|
||||||
|
buttonPicture.UseVisualStyleBackColor = false;
|
||||||
|
//
|
||||||
|
// panelPicture
|
||||||
|
//
|
||||||
|
panelPicture.BackColor = Color.Black;
|
||||||
|
panelPicture.Controls.Add(pictureMatrix);
|
||||||
|
panelPicture.Dock = DockStyle.Top;
|
||||||
|
panelPicture.Location = new Point(0, 0);
|
||||||
|
panelPicture.Name = "panelPicture";
|
||||||
|
panelPicture.Size = new Size(834, 419);
|
||||||
|
panelPicture.TabIndex = 4;
|
||||||
|
//
|
||||||
|
// panelMain
|
||||||
|
//
|
||||||
|
panelMain.Controls.Add(panelButtons);
|
||||||
|
panelMain.Controls.Add(panelRotation);
|
||||||
|
panelMain.Controls.Add(panelScaling);
|
||||||
|
panelMain.Controls.Add(panelZoom);
|
||||||
|
panelMain.Controls.Add(panelPicture);
|
||||||
|
panelMain.Dock = DockStyle.Top;
|
||||||
|
panelMain.Location = new Point(20, 20);
|
||||||
|
panelMain.Name = "panelMain";
|
||||||
|
panelMain.Size = new Size(834, 924);
|
||||||
|
panelMain.TabIndex = 5;
|
||||||
|
//
|
||||||
|
// panelButtons
|
||||||
|
//
|
||||||
|
panelButtons.Controls.Add(buttonReset);
|
||||||
|
panelButtons.Controls.Add(buttonPicture);
|
||||||
|
panelButtons.Dock = DockStyle.Top;
|
||||||
|
panelButtons.Location = new Point(0, 720);
|
||||||
|
panelButtons.Name = "panelButtons";
|
||||||
|
panelButtons.Size = new Size(834, 94);
|
||||||
|
panelButtons.TabIndex = 6;
|
||||||
|
//
|
||||||
|
// buttonReset
|
||||||
|
//
|
||||||
|
buttonReset.Activated = false;
|
||||||
|
buttonReset.BackColor = SystemColors.ControlLight;
|
||||||
|
buttonReset.BorderColor = Color.Transparent;
|
||||||
|
buttonReset.BorderRadius = 5;
|
||||||
|
buttonReset.FlatAppearance.BorderSize = 0;
|
||||||
|
buttonReset.FlatStyle = FlatStyle.Flat;
|
||||||
|
buttonReset.Image = Properties.Resources.icons8_refresh_32;
|
||||||
|
buttonReset.Location = new Point(290, 19);
|
||||||
|
buttonReset.Name = "buttonReset";
|
||||||
|
buttonReset.Secondary = true;
|
||||||
|
buttonReset.Size = new Size(258, 56);
|
||||||
|
buttonReset.TabIndex = 4;
|
||||||
|
buttonReset.Text = "Reset";
|
||||||
|
buttonReset.TextAlign = ContentAlignment.MiddleRight;
|
||||||
|
buttonReset.TextImageRelation = TextImageRelation.ImageBeforeText;
|
||||||
|
buttonReset.UseVisualStyleBackColor = false;
|
||||||
|
//
|
||||||
|
// panelScaling
|
||||||
|
//
|
||||||
|
panelScaling.Controls.Add(comboScaling);
|
||||||
|
panelScaling.Controls.Add(labelScaling);
|
||||||
|
panelScaling.Dock = DockStyle.Top;
|
||||||
|
panelScaling.Location = new Point(0, 564);
|
||||||
|
panelScaling.Name = "panelScaling";
|
||||||
|
panelScaling.Size = new Size(834, 78);
|
||||||
|
panelScaling.TabIndex = 7;
|
||||||
|
//
|
||||||
|
// comboScaling
|
||||||
|
//
|
||||||
|
comboScaling.BorderColor = Color.White;
|
||||||
|
comboScaling.ButtonColor = Color.FromArgb(255, 255, 255);
|
||||||
|
comboScaling.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
comboScaling.FormattingEnabled = true;
|
||||||
|
comboScaling.ItemHeight = 32;
|
||||||
|
comboScaling.Items.AddRange(new object[] { "Default", "Low", "High", "Bilinear", "Bicubic", "NearestNeighbor", "HighQualityBilinear", "HighQualityBicubic" });
|
||||||
|
comboScaling.Location = new Point(229, 17);
|
||||||
|
comboScaling.Margin = new Padding(4, 11, 4, 8);
|
||||||
|
comboScaling.Name = "comboScaling";
|
||||||
|
comboScaling.Size = new Size(322, 40);
|
||||||
|
comboScaling.TabIndex = 17;
|
||||||
|
//
|
||||||
|
// labelScaling
|
||||||
|
//
|
||||||
|
labelScaling.AutoSize = true;
|
||||||
|
labelScaling.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
labelScaling.Location = new Point(16, 20);
|
||||||
|
labelScaling.Name = "labelScaling";
|
||||||
|
labelScaling.Size = new Size(185, 32);
|
||||||
|
labelScaling.TabIndex = 4;
|
||||||
|
labelScaling.Text = "Scaling Quality";
|
||||||
|
//
|
||||||
|
// panelZoom
|
||||||
|
//
|
||||||
|
panelZoom.AutoSize = true;
|
||||||
|
panelZoom.Controls.Add(labelZoom);
|
||||||
|
panelZoom.Controls.Add(labelZoomTitle);
|
||||||
|
panelZoom.Controls.Add(trackZoom);
|
||||||
|
panelZoom.Dock = DockStyle.Top;
|
||||||
|
panelZoom.Location = new Point(0, 419);
|
||||||
|
panelZoom.Name = "panelZoom";
|
||||||
|
panelZoom.Size = new Size(834, 145);
|
||||||
|
panelZoom.TabIndex = 5;
|
||||||
|
//
|
||||||
|
// labelZoom
|
||||||
|
//
|
||||||
|
labelZoom.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||||
|
labelZoom.AutoSize = true;
|
||||||
|
labelZoom.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
labelZoom.Location = new Point(731, 17);
|
||||||
|
labelZoom.Name = "labelZoom";
|
||||||
|
labelZoom.Size = new Size(77, 32);
|
||||||
|
labelZoom.TabIndex = 4;
|
||||||
|
labelZoom.Text = "Zoom";
|
||||||
|
//
|
||||||
|
// labelZoomTitle
|
||||||
|
//
|
||||||
|
labelZoomTitle.AutoSize = true;
|
||||||
|
labelZoomTitle.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
labelZoomTitle.Location = new Point(16, 17);
|
||||||
|
labelZoomTitle.Name = "labelZoomTitle";
|
||||||
|
labelZoomTitle.Size = new Size(81, 32);
|
||||||
|
labelZoomTitle.TabIndex = 3;
|
||||||
|
labelZoomTitle.Text = "Zoom";
|
||||||
|
//
|
||||||
|
// panelRotation
|
||||||
|
//
|
||||||
|
panelRotation.Controls.Add(comboRotation);
|
||||||
|
panelRotation.Controls.Add(labelRotation);
|
||||||
|
panelRotation.Dock = DockStyle.Top;
|
||||||
|
panelRotation.Location = new Point(0, 642);
|
||||||
|
panelRotation.Name = "panelRotation";
|
||||||
|
panelRotation.Size = new Size(834, 78);
|
||||||
|
panelRotation.TabIndex = 8;
|
||||||
|
//
|
||||||
|
// comboRotation
|
||||||
|
//
|
||||||
|
comboRotation.BorderColor = Color.White;
|
||||||
|
comboRotation.ButtonColor = Color.FromArgb(255, 255, 255);
|
||||||
|
comboRotation.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
comboRotation.FormattingEnabled = true;
|
||||||
|
comboRotation.ItemHeight = 32;
|
||||||
|
comboRotation.Items.AddRange(new object[] { "Straight", "Diagonal" });
|
||||||
|
comboRotation.Location = new Point(229, 17);
|
||||||
|
comboRotation.Margin = new Padding(4, 11, 4, 8);
|
||||||
|
comboRotation.Name = "comboRotation";
|
||||||
|
comboRotation.Size = new Size(322, 40);
|
||||||
|
comboRotation.TabIndex = 17;
|
||||||
|
//
|
||||||
|
// labelRotation
|
||||||
|
//
|
||||||
|
labelRotation.AutoSize = true;
|
||||||
|
labelRotation.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
labelRotation.Location = new Point(16, 20);
|
||||||
|
labelRotation.Name = "labelRotation";
|
||||||
|
labelRotation.Size = new Size(190, 32);
|
||||||
|
labelRotation.TabIndex = 4;
|
||||||
|
labelRotation.Text = "Image Rotation";
|
||||||
|
//
|
||||||
|
// Matrix
|
||||||
|
//
|
||||||
|
AutoScaleDimensions = new SizeF(192F, 192F);
|
||||||
|
AutoScaleMode = AutoScaleMode.Dpi;
|
||||||
|
AutoSize = true;
|
||||||
|
ClientSize = new Size(874, 978);
|
||||||
|
Controls.Add(panelMain);
|
||||||
|
MaximizeBox = false;
|
||||||
|
MinimizeBox = false;
|
||||||
|
MinimumSize = new Size(900, 0);
|
||||||
|
Name = "Matrix";
|
||||||
|
Padding = new Padding(20);
|
||||||
|
ShowIcon = false;
|
||||||
|
ShowInTaskbar = false;
|
||||||
|
Text = "Matrix";
|
||||||
|
((System.ComponentModel.ISupportInitialize)pictureMatrix).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)trackZoom).EndInit();
|
||||||
|
panelPicture.ResumeLayout(false);
|
||||||
|
panelMain.ResumeLayout(false);
|
||||||
|
panelMain.PerformLayout();
|
||||||
|
panelButtons.ResumeLayout(false);
|
||||||
|
panelScaling.ResumeLayout(false);
|
||||||
|
panelScaling.PerformLayout();
|
||||||
|
panelZoom.ResumeLayout(false);
|
||||||
|
panelZoom.PerformLayout();
|
||||||
|
panelRotation.ResumeLayout(false);
|
||||||
|
panelRotation.PerformLayout();
|
||||||
|
ResumeLayout(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private PictureBox pictureMatrix;
|
||||||
|
private TrackBar trackZoom;
|
||||||
|
private UI.RButton buttonPicture;
|
||||||
|
private Panel panelPicture;
|
||||||
|
private Panel panelMain;
|
||||||
|
private Panel panelZoom;
|
||||||
|
private Label labelZoom;
|
||||||
|
private Label labelZoomTitle;
|
||||||
|
private Panel panelButtons;
|
||||||
|
private UI.RButton buttonReset;
|
||||||
|
private Panel panelScaling;
|
||||||
|
private Label labelScaling;
|
||||||
|
private UI.RComboBox comboScaling;
|
||||||
|
private Panel panelRotation;
|
||||||
|
private UI.RComboBox comboRotation;
|
||||||
|
private Label labelRotation;
|
||||||
|
}
|
||||||
|
}
|
||||||
222
app/Matrix.cs
Normal file
222
app/Matrix.cs
Normal file
@@ -0,0 +1,222 @@
|
|||||||
|
using GHelper.AnimeMatrix;
|
||||||
|
using GHelper.UI;
|
||||||
|
|
||||||
|
namespace GHelper
|
||||||
|
{
|
||||||
|
public partial class Matrix : RForm
|
||||||
|
{
|
||||||
|
|
||||||
|
public AniMatrixControl matrixControl = Program.settingsForm.matrixControl;
|
||||||
|
|
||||||
|
private bool Dragging;
|
||||||
|
private int xPos;
|
||||||
|
private int yPos;
|
||||||
|
|
||||||
|
private int baseX;
|
||||||
|
private int baseY;
|
||||||
|
|
||||||
|
private float uiScale;
|
||||||
|
|
||||||
|
Image picture;
|
||||||
|
MemoryStream ms = new MemoryStream();
|
||||||
|
|
||||||
|
public Matrix()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
InitTheme(true);
|
||||||
|
|
||||||
|
Shown += Matrix_Shown;
|
||||||
|
FormClosing += Matrix_FormClosed;
|
||||||
|
|
||||||
|
buttonPicture.Click += ButtonPicture_Click;
|
||||||
|
buttonReset.Click += ButtonReset_Click;
|
||||||
|
|
||||||
|
pictureMatrix.MouseUp += PictureMatrix_MouseUp;
|
||||||
|
pictureMatrix.MouseMove += PictureMatrix_MouseMove;
|
||||||
|
pictureMatrix.MouseDown += PictureMatrix_MouseDown;
|
||||||
|
|
||||||
|
trackZoom.MouseUp += TrackZoom_MouseUp;
|
||||||
|
trackZoom.ValueChanged += TrackZoom_Changed;
|
||||||
|
|
||||||
|
trackZoom.Value = Math.Min(trackZoom.Maximum, AppConfig.Get("matrix_zoom", 100));
|
||||||
|
VisualiseZoom();
|
||||||
|
|
||||||
|
comboScaling.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||||
|
comboScaling.SelectedIndex = AppConfig.Get("matrix_quality", 0);
|
||||||
|
comboScaling.SelectedValueChanged += ComboScaling_SelectedValueChanged;
|
||||||
|
|
||||||
|
comboRotation.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||||
|
comboRotation.SelectedIndex = AppConfig.Get("matrix_rotation", 0);
|
||||||
|
comboRotation.SelectedValueChanged += ComboRotation_SelectedValueChanged; ;
|
||||||
|
|
||||||
|
|
||||||
|
uiScale = panelPicture.Width / matrixControl.device.MaxColumns / 3;
|
||||||
|
panelPicture.Height = (int)(matrixControl.device.MaxRows * uiScale);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ComboRotation_SelectedValueChanged(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
AppConfig.Set("matrix_rotation", comboRotation.SelectedIndex);
|
||||||
|
SetMatrixPicture(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ComboScaling_SelectedValueChanged(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
AppConfig.Set("matrix_quality", comboScaling.SelectedIndex);
|
||||||
|
SetMatrixPicture(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Matrix_FormClosed(object? sender, FormClosingEventArgs e)
|
||||||
|
{
|
||||||
|
if (picture is not null) picture.Dispose();
|
||||||
|
if (ms is not null) ms.Dispose();
|
||||||
|
|
||||||
|
pictureMatrix.Dispose();
|
||||||
|
|
||||||
|
GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void VisualiseZoom()
|
||||||
|
{
|
||||||
|
labelZoom.Text = trackZoom.Value + "%";
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ButtonReset_Click(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
AppConfig.Set("matrix_zoom", 100);
|
||||||
|
AppConfig.Set("matrix_x", 0);
|
||||||
|
AppConfig.Set("matrix_y", 0);
|
||||||
|
|
||||||
|
trackZoom.Value = 100;
|
||||||
|
|
||||||
|
SetMatrixPicture();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TrackZoom_MouseUp(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
AppConfig.Set("matrix_zoom", trackZoom.Value);
|
||||||
|
SetMatrixPicture();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TrackZoom_Changed(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
VisualiseZoom();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void PictureMatrix_MouseDown(object? sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Button == MouseButtons.Left)
|
||||||
|
{
|
||||||
|
Dragging = true;
|
||||||
|
xPos = e.X;
|
||||||
|
yPos = e.Y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PictureMatrix_MouseMove(object? sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
Control c = sender as Control;
|
||||||
|
if (Dragging && c != null)
|
||||||
|
{
|
||||||
|
c.Top = e.Y + c.Top - yPos;
|
||||||
|
c.Left = e.X + c.Left - xPos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PictureMatrix_MouseUp(object? sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
Dragging = false;
|
||||||
|
|
||||||
|
Control c = sender as Control;
|
||||||
|
|
||||||
|
int matrixX = (int)((baseX - c.Left) / uiScale);
|
||||||
|
int matrixY = (int)((baseY - c.Top) / uiScale);
|
||||||
|
|
||||||
|
AppConfig.Set("matrix_x", matrixX);
|
||||||
|
AppConfig.Set("matrix_y", matrixY);
|
||||||
|
|
||||||
|
SetMatrixPicture(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Matrix_Shown(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
FormPosition();
|
||||||
|
SetMatrixPicture();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetMatrixPicture(bool visualise = true)
|
||||||
|
{
|
||||||
|
matrixControl.SetMatrixPicture(AppConfig.GetString("matrix_picture"), visualise);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ButtonPicture_Click(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
matrixControl.OpenMatrixPicture();
|
||||||
|
|
||||||
|
}
|
||||||
|
public void FormPosition()
|
||||||
|
{
|
||||||
|
if (Height > Program.settingsForm.Height)
|
||||||
|
{
|
||||||
|
Top = Program.settingsForm.Top + Program.settingsForm.Height - Height;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Height = Program.settingsForm.Height;
|
||||||
|
Top = Program.settingsForm.Top;
|
||||||
|
}
|
||||||
|
|
||||||
|
Left = Program.settingsForm.Left - Width - 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void VisualiseMatrix(string fileName)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (picture is not null) picture.Dispose();
|
||||||
|
|
||||||
|
using (var fs = new FileStream(fileName, FileMode.Open))
|
||||||
|
{
|
||||||
|
|
||||||
|
ms.SetLength(0);
|
||||||
|
fs.CopyTo(ms);
|
||||||
|
ms.Position = 0;
|
||||||
|
fs.Close();
|
||||||
|
|
||||||
|
picture = Image.FromStream(ms);
|
||||||
|
|
||||||
|
int width = picture.Width;
|
||||||
|
int height = picture.Height;
|
||||||
|
|
||||||
|
int matrixX = AppConfig.Get("matrix_x", 0);
|
||||||
|
int matrixY = AppConfig.Get("matrix_y", 0);
|
||||||
|
int matrixZoom = AppConfig.Get("matrix_zoom", 100);
|
||||||
|
|
||||||
|
|
||||||
|
float scale = Math.Min((float)panelPicture.Width / (float)width, (float)panelPicture.Height / (float)height) * matrixZoom / 100;
|
||||||
|
|
||||||
|
pictureMatrix.Width = (int)(width * scale);
|
||||||
|
pictureMatrix.Height = (int)(height * scale);
|
||||||
|
|
||||||
|
baseX = panelPicture.Width - pictureMatrix.Width;
|
||||||
|
baseY = 0;
|
||||||
|
|
||||||
|
pictureMatrix.Left = baseX - (int)(matrixX * uiScale);
|
||||||
|
pictureMatrix.Top = baseY - (int)(matrixY * uiScale);
|
||||||
|
|
||||||
|
pictureMatrix.SizeMode = PictureBoxSizeMode.Zoom;
|
||||||
|
pictureMatrix.Image = picture;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
120
app/Matrix.resx
Normal file
120
app/Matrix.resx
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
||||||
@@ -70,7 +70,16 @@ namespace GHelper.Mode
|
|||||||
|
|
||||||
Modes.SetCurrent(mode);
|
Modes.SetCurrent(mode);
|
||||||
|
|
||||||
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AppConfig.IsManualModeRequired() ? AsusACPI.PerformanceManual : Modes.GetBase(mode), "Mode");
|
int status = Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AppConfig.IsManualModeRequired() ? AsusACPI.PerformanceManual : Modes.GetBase(mode), "Mode");
|
||||||
|
|
||||||
|
// Vivobook fallback
|
||||||
|
if (status != 1)
|
||||||
|
{
|
||||||
|
int vivoMode = Modes.GetBase(mode);
|
||||||
|
if (vivoMode == 1) vivoMode = 2;
|
||||||
|
else if (vivoMode == 2) vivoMode = 1;
|
||||||
|
Program.acpi.DeviceSet(AsusACPI.VivoBookMode, vivoMode, "VivoMode");
|
||||||
|
}
|
||||||
|
|
||||||
if (AppConfig.Is("xgm_fan") && Program.acpi.IsXGConnected()) AsusUSB.ResetXGM();
|
if (AppConfig.Is("xgm_fan") && Program.acpi.IsXGConnected()) AsusUSB.ResetXGM();
|
||||||
|
|
||||||
@@ -110,9 +119,9 @@ namespace GHelper.Mode
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void CyclePerformanceMode()
|
public void CyclePerformanceMode(bool back = false)
|
||||||
{
|
{
|
||||||
SetPerformanceMode(Modes.GetNext(Control.ModifierKeys == Keys.Shift), true);
|
SetPerformanceMode(Modes.GetNext(back), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AutoFans(bool force = false)
|
public void AutoFans(bool force = false)
|
||||||
@@ -125,6 +134,7 @@ namespace GHelper.Mode
|
|||||||
bool xgmFan = false;
|
bool xgmFan = false;
|
||||||
if (AppConfig.Is("xgm_fan") && Program.acpi.IsXGConnected())
|
if (AppConfig.Is("xgm_fan") && Program.acpi.IsXGConnected())
|
||||||
{
|
{
|
||||||
|
//AsusUSB.InitXGM();
|
||||||
AsusUSB.SetXGMFan(AppConfig.GetFanConfig(AsusFan.XGM));
|
AsusUSB.SetXGMFan(AppConfig.GetFanConfig(AsusFan.XGM));
|
||||||
xgmFan = true;
|
xgmFan = true;
|
||||||
}
|
}
|
||||||
@@ -139,10 +149,16 @@ namespace GHelper.Mode
|
|||||||
// something went wrong, resetting to default profile
|
// something went wrong, resetting to default profile
|
||||||
if (cpuResult != 1 || gpuResult != 1)
|
if (cpuResult != 1 || gpuResult != 1)
|
||||||
{
|
{
|
||||||
int mode = Modes.GetCurrentBase();
|
cpuResult = Program.acpi.SetFanRange(AsusFan.CPU, AppConfig.GetFanConfig(AsusFan.CPU));
|
||||||
Logger.WriteLine("ASUS BIOS rejected fan curve, resetting mode to " + mode);
|
gpuResult = Program.acpi.SetFanRange(AsusFan.GPU, AppConfig.GetFanConfig(AsusFan.GPU));
|
||||||
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, mode, "Reset Mode");
|
|
||||||
settings.LabelFansResult("ASUS BIOS rejected fan curve");
|
if (cpuResult != 1 || gpuResult != 1)
|
||||||
|
{
|
||||||
|
int mode = Modes.GetCurrentBase();
|
||||||
|
Logger.WriteLine("ASUS BIOS rejected fan curve, resetting mode to " + mode);
|
||||||
|
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, mode, "Reset Mode");
|
||||||
|
settings.LabelFansResult("ASUS BIOS rejected fan curve");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -153,6 +153,13 @@ namespace GHelper.Mode
|
|||||||
Guid guidScheme = new Guid(scheme);
|
Guid guidScheme = new Guid(scheme);
|
||||||
|
|
||||||
uint status = PowerGetEffectiveOverlayScheme(out Guid activeScheme);
|
uint status = PowerGetEffectiveOverlayScheme(out Guid activeScheme);
|
||||||
|
|
||||||
|
if (GetBatterySaverStatus())
|
||||||
|
{
|
||||||
|
Logger.WriteLine("Battery Saver detected");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (status != 0 || activeScheme != guidScheme)
|
if (status != 0 || activeScheme != guidScheme)
|
||||||
{
|
{
|
||||||
status = PowerSetActiveOverlayScheme(guidScheme);
|
status = PowerSetActiveOverlayScheme(guidScheme);
|
||||||
@@ -288,6 +295,48 @@ namespace GHelper.Mode
|
|||||||
Logger.WriteLine("Setting Hibernate after " + seconds + ": " + (hrAC == 0 ? "OK" : hrAC));
|
Logger.WriteLine("Setting Hibernate after " + seconds + ": " + (hrAC == 0 ? "OK" : hrAC));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[DllImport("Kernel32")]
|
||||||
|
private static extern bool GetSystemPowerStatus(SystemPowerStatus sps);
|
||||||
|
public enum ACLineStatus : byte
|
||||||
|
{
|
||||||
|
Offline = 0, Online = 1, Unknown = 255
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum BatteryFlag : byte
|
||||||
|
{
|
||||||
|
High = 1,
|
||||||
|
Low = 2,
|
||||||
|
Critical = 4,
|
||||||
|
Charging = 8,
|
||||||
|
NoSystemBattery = 128,
|
||||||
|
Unknown = 255
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fields must mirror their unmanaged counterparts, in order
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public class SystemPowerStatus
|
||||||
|
{
|
||||||
|
public ACLineStatus ACLineStatus;
|
||||||
|
public BatteryFlag BatteryFlag;
|
||||||
|
public Byte BatteryLifePercent;
|
||||||
|
public Byte SystemStatusFlag;
|
||||||
|
public Int32 BatteryLifeTime;
|
||||||
|
public Int32 BatteryFullLifeTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool GetBatterySaverStatus()
|
||||||
|
{
|
||||||
|
SystemPowerStatus sps = new SystemPowerStatus();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
GetSystemPowerStatus(sps);
|
||||||
|
return (sps.SystemStatusFlag > 0);
|
||||||
|
} catch (Exception ex)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,9 +32,9 @@ public class NativeMethods
|
|||||||
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
||||||
private static extern uint FormatMessage(uint dwFlags, IntPtr lpSource, uint dwMessageId, uint dwLanguageId, out string lpBuffer, uint nSize, IntPtr Arguments);
|
private static extern uint FormatMessage(uint dwFlags, IntPtr lpSource, uint dwMessageId, uint dwLanguageId, out string lpBuffer, uint nSize, IntPtr Arguments);
|
||||||
|
|
||||||
public static void TurnOffScreen(IntPtr handle)
|
public static void TurnOffScreen()
|
||||||
{
|
{
|
||||||
IntPtr result = SendMessage(handle, WM_SYSCOMMAND, (IntPtr)SC_MONITORPOWER, (IntPtr)MONITOR_OFF);
|
IntPtr result = SendMessage(-1, WM_SYSCOMMAND, (IntPtr)SC_MONITORPOWER, (IntPtr)MONITOR_OFF);
|
||||||
if (result == IntPtr.Zero)
|
if (result == IntPtr.Zero)
|
||||||
{
|
{
|
||||||
int error = Marshal.GetLastWin32Error();
|
int error = Marshal.GetLastWin32Error();
|
||||||
|
|||||||
@@ -141,7 +141,6 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
{
|
{
|
||||||
private static string[] POLLING_RATES = { "125 Hz", "250 Hz", "500 Hz", "1000 Hz", "2000 Hz", "4000 Hz", "8000 Hz", "16000 Hz" };
|
private static string[] POLLING_RATES = { "125 Hz", "250 Hz", "500 Hz", "1000 Hz", "2000 Hz", "4000 Hz", "8000 Hz", "16000 Hz" };
|
||||||
internal const bool PACKET_LOGGER_ALWAYS_ON = false;
|
internal const bool PACKET_LOGGER_ALWAYS_ON = false;
|
||||||
internal const int ASUS_MOUSE_PACKET_SIZE = 65;
|
|
||||||
|
|
||||||
public event EventHandler? Disconnect;
|
public event EventHandler? Disconnect;
|
||||||
public event EventHandler? BatteryUpdated;
|
public event EventHandler? BatteryUpdated;
|
||||||
@@ -149,6 +148,8 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
|
|
||||||
private readonly string path;
|
private readonly string path;
|
||||||
|
|
||||||
|
protected byte reportId = 0x00;
|
||||||
|
|
||||||
public bool IsDeviceReady { get; protected set; }
|
public bool IsDeviceReady { get; protected set; }
|
||||||
|
|
||||||
private void SetDeviceReady(bool ready)
|
private void SetDeviceReady(bool ready)
|
||||||
@@ -180,6 +181,8 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
public bool AngleSnapping { get; protected set; }
|
public bool AngleSnapping { get; protected set; }
|
||||||
public short AngleAdjustmentDegrees { get; protected set; }
|
public short AngleAdjustmentDegrees { get; protected set; }
|
||||||
public DebounceTime Debounce { get; protected set; }
|
public DebounceTime Debounce { get; protected set; }
|
||||||
|
public int Acceleration { get; protected set; }
|
||||||
|
public int Deceleration { get; protected set; }
|
||||||
|
|
||||||
|
|
||||||
public AsusMouse(ushort vendorId, ushort productId, string path, bool wireless) : base(vendorId, productId)
|
public AsusMouse(ushort vendorId, ushort productId, string path, bool wireless) : base(vendorId, productId)
|
||||||
@@ -195,7 +198,12 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
{
|
{
|
||||||
LightingSetting = new LightingSetting[SupportedLightingZones().Length];
|
LightingSetting = new LightingSetting[SupportedLightingZones().Length];
|
||||||
}
|
}
|
||||||
|
this.reportId = 0x00;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AsusMouse(ushort vendorId, ushort productId, string path, bool wireless, byte reportId) : this(vendorId, productId, path, wireless)
|
||||||
|
{
|
||||||
|
this.reportId = reportId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool Equals(object? obj)
|
public override bool Equals(object? obj)
|
||||||
@@ -265,6 +273,11 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
return 300;
|
return 300;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual int USBPacketSize()
|
||||||
|
{
|
||||||
|
return 65;
|
||||||
|
}
|
||||||
|
|
||||||
public override void SetProvider()
|
public override void SetProvider()
|
||||||
{
|
{
|
||||||
_usbProvider = new WindowsUsbProvider(_vendorId, _productId, path, USBTimeout());
|
_usbProvider = new WindowsUsbProvider(_vendorId, _productId, path, USBTimeout());
|
||||||
@@ -279,7 +292,7 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool IsPacketLoggerEnabled()
|
protected static bool IsPacketLoggerEnabled()
|
||||||
{
|
{
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
return true;
|
return true;
|
||||||
@@ -307,59 +320,87 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
[MethodImpl(MethodImplOptions.Synchronized)]
|
[MethodImpl(MethodImplOptions.Synchronized)]
|
||||||
protected virtual byte[]? WriteForResponse(byte[] packet)
|
protected virtual byte[]? WriteForResponse(byte[] packet)
|
||||||
{
|
{
|
||||||
byte[] response = new byte[ASUS_MOUSE_PACKET_SIZE];
|
Array.Resize(ref packet, USBPacketSize());
|
||||||
|
|
||||||
try
|
|
||||||
|
byte[] response = new byte[USBPacketSize()];
|
||||||
|
response[0] = reportId;
|
||||||
|
|
||||||
|
int retries = 3;
|
||||||
|
|
||||||
|
while (retries > 0)
|
||||||
{
|
{
|
||||||
if (IsPacketLoggerEnabled())
|
response = new byte[USBPacketSize()];
|
||||||
Logger.WriteLine(GetDisplayName() + ": Sending packet: " + ByteArrayToString(packet));
|
|
||||||
|
|
||||||
long time = MeasuredIO(Write, packet);
|
try
|
||||||
Logger.WriteLine(GetDisplayName() + ": Write took " + time + "ms");
|
|
||||||
|
|
||||||
time = MeasuredIO(Read, response);
|
|
||||||
Logger.WriteLine(GetDisplayName() + ": Read took " + time + "ms");
|
|
||||||
|
|
||||||
if (IsPacketLoggerEnabled())
|
|
||||||
Logger.WriteLine(GetDisplayName() + ": Read packet: " + ByteArrayToString(response));
|
|
||||||
|
|
||||||
if (IsMouseError(response))
|
|
||||||
{
|
{
|
||||||
Logger.WriteLine(GetDisplayName() + ": Mouse returned error (FF AA). Packet probably not supported by mouse firmware.");
|
if (IsPacketLoggerEnabled())
|
||||||
//Error. Mouse could not understand or process the sent packet
|
Logger.WriteLine(GetDisplayName() + ": Sending packet: " + ByteArrayToString(packet)
|
||||||
return response;
|
+ " Try " + (retries - 2) + " of 3");
|
||||||
}
|
|
||||||
|
long time = MeasuredIO(Write, packet);
|
||||||
|
Logger.WriteLine(GetDisplayName() + ": Write took " + time + "ms");
|
||||||
|
|
||||||
//Not the response we were looking for, continue reading
|
|
||||||
while (response[0] != packet[0] || response[1] != packet[1] || response[2] != packet[2])
|
|
||||||
{
|
|
||||||
Logger.WriteLine(GetDisplayName() + ": Read wrong packet left in buffer: " + ByteArrayToString(response) + ". Retrying...");
|
|
||||||
//Read again
|
|
||||||
time = MeasuredIO(Read, response);
|
time = MeasuredIO(Read, response);
|
||||||
Logger.WriteLine(GetDisplayName() + ": Read took " + time + "ms");
|
Logger.WriteLine(GetDisplayName() + ": Read took " + time + "ms");
|
||||||
|
|
||||||
|
|
||||||
|
if (IsMouseError(response))
|
||||||
|
{
|
||||||
|
if (IsPacketLoggerEnabled())
|
||||||
|
Logger.WriteLine(GetDisplayName() + ": Read packet: " + ByteArrayToString(response));
|
||||||
|
|
||||||
|
Logger.WriteLine(GetDisplayName() + ": Mouse returned error (FF AA). Packet probably not supported by mouse firmware.");
|
||||||
|
//Error. Mouse could not understand or process the sent packet
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (response[1] == 0 && response[2] == 0 && response[3] == 0)
|
||||||
|
{
|
||||||
|
if (IsPacketLoggerEnabled())
|
||||||
|
Logger.WriteLine(GetDisplayName() + ": Read packet: " + ByteArrayToString(response));
|
||||||
|
Logger.WriteLine(GetDisplayName() + ": Received empty packet. Stopping here.");
|
||||||
|
//Empty packet
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Not the response we were looking for, continue reading
|
||||||
|
while (response[0] != packet[0] || response[1] != packet[1] || response[2] != packet[2])
|
||||||
|
{
|
||||||
|
if (IsPacketLoggerEnabled())
|
||||||
|
Logger.WriteLine(GetDisplayName() + ": Read wrong packet left in buffer: " + ByteArrayToString(response) + ". Retrying...");
|
||||||
|
//Read again
|
||||||
|
time = MeasuredIO(Read, response);
|
||||||
|
Logger.WriteLine(GetDisplayName() + ": Read took " + time + "ms");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsPacketLoggerEnabled())
|
||||||
|
Logger.WriteLine(GetDisplayName() + ": Read packet: " + ByteArrayToString(response));
|
||||||
|
|
||||||
|
|
||||||
|
return response;
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (IOException e)
|
||||||
|
{
|
||||||
|
Logger.WriteLine(GetDisplayName() + ": Failed to read packet " + e.Message);
|
||||||
|
OnDisconnect();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
catch (TimeoutException e)
|
||||||
|
{
|
||||||
|
Logger.WriteLine(GetDisplayName() + ": Timeout reading packet " + e.Message + " Trying again.");
|
||||||
|
retries--;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
catch (ObjectDisposedException)
|
||||||
|
{
|
||||||
|
Logger.WriteLine(GetDisplayName() + ": Channel closed ");
|
||||||
|
OnDisconnect();
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (IOException e)
|
return null;
|
||||||
{
|
|
||||||
Logger.WriteLine(GetDisplayName() + ": Failed to read packet " + e.Message);
|
|
||||||
OnDisconnect();
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
catch (TimeoutException e)
|
|
||||||
{
|
|
||||||
Logger.WriteLine(GetDisplayName() + ": Timeout reading packet " + e.Message);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
catch (ObjectDisposedException)
|
|
||||||
{
|
|
||||||
Logger.WriteLine(GetDisplayName() + ": Channel closed ");
|
|
||||||
OnDisconnect();
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return response;
|
|
||||||
}
|
}
|
||||||
public abstract string GetDisplayName();
|
public abstract string GetDisplayName();
|
||||||
|
|
||||||
@@ -386,6 +427,7 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
ReadPollingRate();
|
ReadPollingRate();
|
||||||
ReadLiftOffDistance();
|
ReadLiftOffDistance();
|
||||||
ReadDebounce();
|
ReadDebounce();
|
||||||
|
ReadAcceleration();
|
||||||
ReadLightingSetting();
|
ReadLightingSetting();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -403,6 +445,16 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual int LowBatteryWarningStep()
|
||||||
|
{
|
||||||
|
return 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual int LowBatteryWarningMax()
|
||||||
|
{
|
||||||
|
return 50;
|
||||||
|
}
|
||||||
|
|
||||||
public virtual bool HasLowBatteryWarning()
|
public virtual bool HasLowBatteryWarning()
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@@ -410,7 +462,7 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
|
|
||||||
protected virtual byte[] GetBatteryReportPacket()
|
protected virtual byte[] GetBatteryReportPacket()
|
||||||
{
|
{
|
||||||
return new byte[] { 0x00, 0x12, 0x07 };
|
return new byte[] { reportId, 0x12, 0x07 };
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual int ParseBattery(byte[] packet)
|
protected virtual int ParseBattery(byte[] packet)
|
||||||
@@ -452,7 +504,7 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
}
|
}
|
||||||
protected virtual byte[] GetUpdateEnergySettingsPacket(int lowBatteryWarning, PowerOffSetting powerOff)
|
protected virtual byte[] GetUpdateEnergySettingsPacket(int lowBatteryWarning, PowerOffSetting powerOff)
|
||||||
{
|
{
|
||||||
return new byte[] { 0x00, 0x51, 0x37, 0x00, 0x00, (byte)powerOff, 0x00, (byte)lowBatteryWarning };
|
return new byte[] { reportId, 0x51, 0x37, 0x00, 0x00, (byte)powerOff, 0x00, (byte)lowBatteryWarning };
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetEnergySettings(int lowBatteryWarning, PowerOffSetting powerOff)
|
public void SetEnergySettings(int lowBatteryWarning, PowerOffSetting powerOff)
|
||||||
@@ -538,7 +590,7 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
return packet[11];
|
return packet[11];
|
||||||
}
|
}
|
||||||
Logger.WriteLine(GetDisplayName() + ": Failed to decode active profile");
|
Logger.WriteLine(GetDisplayName() + ": Failed to decode active profile");
|
||||||
return 1;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual int ParseDPIProfile(byte[] packet)
|
protected virtual int ParseDPIProfile(byte[] packet)
|
||||||
@@ -553,12 +605,12 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
|
|
||||||
protected virtual byte[] GetReadProfilePacket()
|
protected virtual byte[] GetReadProfilePacket()
|
||||||
{
|
{
|
||||||
return new byte[] { 0x00, 0x12, 0x00 };
|
return new byte[] { reportId, 0x12, 0x00 };
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual byte[] GetUpdateProfilePacket(int profile)
|
protected virtual byte[] GetUpdateProfilePacket(int profile)
|
||||||
{
|
{
|
||||||
return new byte[] { 0x00, 0x50, 0x02, (byte)profile };
|
return new byte[] { reportId, 0x50, 0x02, (byte)profile };
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ReadProfile()
|
public void ReadProfile()
|
||||||
@@ -667,20 +719,20 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
|
|
||||||
protected virtual byte[] GetReadPollingRatePacket()
|
protected virtual byte[] GetReadPollingRatePacket()
|
||||||
{
|
{
|
||||||
return new byte[] { 0x00, 0x12, 0x04, 0x00 };
|
return new byte[] { reportId, 0x12, 0x04, 0x00 };
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual byte[] GetUpdatePollingRatePacket(PollingRate pollingRate)
|
protected virtual byte[] GetUpdatePollingRatePacket(PollingRate pollingRate)
|
||||||
{
|
{
|
||||||
return new byte[] { 0x00, 0x51, 0x31, 0x04, 0x00, (byte)pollingRate };
|
return new byte[] { reportId, 0x51, 0x31, 0x04, 0x00, (byte)pollingRate };
|
||||||
}
|
}
|
||||||
protected virtual byte[] GetUpdateAngleSnappingPacket(bool angleSnapping)
|
protected virtual byte[] GetUpdateAngleSnappingPacket(bool angleSnapping)
|
||||||
{
|
{
|
||||||
return new byte[] { 0x00, 0x51, 0x31, 0x06, 0x00, (byte)(angleSnapping ? 0x01 : 0x00) };
|
return new byte[] { reportId, 0x51, 0x31, 0x06, 0x00, (byte)(angleSnapping ? 0x01 : 0x00) };
|
||||||
}
|
}
|
||||||
protected virtual byte[] GetUpdateAngleAdjustmentPacket(short angleAdjustment)
|
protected virtual byte[] GetUpdateAngleAdjustmentPacket(short angleAdjustment)
|
||||||
{
|
{
|
||||||
return new byte[] { 0x00, 0x51, 0x31, 0x0B, 0x00, (byte)(angleAdjustment & 0xFF), (byte)((angleAdjustment >> 8) & 0xFF) };
|
return new byte[] { reportId, 0x51, 0x31, 0x0B, 0x00, (byte)(angleAdjustment & 0xFF), (byte)((angleAdjustment >> 8) & 0xFF) };
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual PollingRate ParsePollingRate(byte[] packet)
|
protected virtual PollingRate ParsePollingRate(byte[] packet)
|
||||||
@@ -791,6 +843,126 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
this.AngleAdjustmentDegrees = angleAdjustment;
|
this.AngleAdjustmentDegrees = angleAdjustment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------
|
||||||
|
// Acceleration/Deceleration
|
||||||
|
// ------------------------------------------------------------------------------
|
||||||
|
public virtual bool HasAcceleration()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual bool HasDeceleration()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual int MaxAcceleration()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
public virtual int MaxDeceleration()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual byte[] GetChangeAccelerationPacket(int acceleration)
|
||||||
|
{
|
||||||
|
return new byte[] { reportId, 0x51, 0x31, 0x07, 0x00, (byte)acceleration };
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual byte[] GetChangeDecelerationPacket(int deceleration)
|
||||||
|
{
|
||||||
|
return new byte[] { reportId, 0x51, 0x31, 0x08, 0x00, (byte)deceleration };
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void SetAcceleration(int acceleration)
|
||||||
|
{
|
||||||
|
if (!HasAcceleration())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (acceleration > MaxAcceleration() || acceleration < 0)
|
||||||
|
{
|
||||||
|
Logger.WriteLine(GetDisplayName() + ": Acceleration " + acceleration + " is invalid.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
WriteForResponse(GetChangeAccelerationPacket(acceleration));
|
||||||
|
FlushSettings();
|
||||||
|
|
||||||
|
Logger.WriteLine(GetDisplayName() + ": Acceleration set to " + acceleration);
|
||||||
|
this.Acceleration = acceleration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void SetDeceleration(int deceleration)
|
||||||
|
{
|
||||||
|
if (!HasDeceleration())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (deceleration > MaxDeceleration() || deceleration < 0)
|
||||||
|
{
|
||||||
|
Logger.WriteLine(GetDisplayName() + ": Deceleration " + deceleration + " is invalid.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
WriteForResponse(GetChangeDecelerationPacket(deceleration));
|
||||||
|
FlushSettings();
|
||||||
|
|
||||||
|
Logger.WriteLine(GetDisplayName() + ": Deceleration set to " + deceleration);
|
||||||
|
this.Deceleration = deceleration;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual byte[] GetReadAccelerationPacket()
|
||||||
|
{
|
||||||
|
return new byte[] { reportId, 0x12, 0x04, 0x01 };
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual int ParseAcceleration(byte[] packet)
|
||||||
|
{
|
||||||
|
if (packet[1] != 0x12 || packet[2] != 0x04 || packet[3] != 0x01)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return packet[5];
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual int ParseDeceleration(byte[] packet)
|
||||||
|
{
|
||||||
|
if (packet[1] != 0x12 || packet[2] != 0x04 || packet[3] != 0x01)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return packet[7];
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void ReadAcceleration()
|
||||||
|
{
|
||||||
|
if (!HasAcceleration() && !HasDeceleration())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
byte[]? response = WriteForResponse(GetReadAccelerationPacket());
|
||||||
|
if (response is null) return;
|
||||||
|
|
||||||
|
if (HasAcceleration())
|
||||||
|
{
|
||||||
|
Acceleration = ParseAcceleration(response);
|
||||||
|
Logger.WriteLine(GetDisplayName() + ": Read Acceleration: " + Acceleration);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HasDeceleration())
|
||||||
|
{
|
||||||
|
Deceleration = ParseDeceleration(response);
|
||||||
|
Logger.WriteLine(GetDisplayName() + ": Read Deceleration: " + Deceleration);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------
|
||||||
// DPI
|
// DPI
|
||||||
// ------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------
|
||||||
@@ -826,12 +998,12 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
|
|
||||||
protected virtual byte[] GetChangeDPIProfilePacket(int profile)
|
protected virtual byte[] GetChangeDPIProfilePacket(int profile)
|
||||||
{
|
{
|
||||||
return new byte[] { 0x00, 0x51, 0x31, 0x0A, 0x00, (byte)profile };
|
return new byte[] { reportId, 0x51, 0x31, 0x0A, 0x00, (byte)profile };
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual byte[] GetChangeDPIProfilePacket2(int profile)
|
protected virtual byte[] GetChangeDPIProfilePacket2(int profile)
|
||||||
{
|
{
|
||||||
return new byte[] { 0x00, 0x51, 0x31, 0x09, 0x00, (byte)profile };
|
return new byte[] { reportId, 0x51, 0x31, 0x09, 0x00, (byte)profile };
|
||||||
}
|
}
|
||||||
|
|
||||||
//profiles start to count at 1
|
//profiles start to count at 1
|
||||||
@@ -863,10 +1035,10 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
{
|
{
|
||||||
if (!HasXYDPI())
|
if (!HasXYDPI())
|
||||||
{
|
{
|
||||||
return new byte[] { 0x00, 0x12, 0x04, 0x00 };
|
return new byte[] { reportId, 0x12, 0x04, 0x00 };
|
||||||
}
|
}
|
||||||
|
|
||||||
return new byte[] { 0x00, 0x12, 0x04, 0x02 };
|
return new byte[] { reportId, 0x12, 0x04, 0x02 };
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual byte[]? GetUpdateDPIPacket(AsusMouseDPI dpi, int profile)
|
protected virtual byte[]? GetUpdateDPIPacket(AsusMouseDPI dpi, int profile)
|
||||||
@@ -883,11 +1055,11 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
|
|
||||||
if (HasDPIColors())
|
if (HasDPIColors())
|
||||||
{
|
{
|
||||||
return new byte[] { 0x00, 0x51, 0x31, (byte)(profile - 1), 0x00, (byte)(dpiEncoded & 0xFF), (byte)((dpiEncoded >> 8) & 0xFF), dpi.Color.R, dpi.Color.G, dpi.Color.B };
|
return new byte[] { reportId, 0x51, 0x31, (byte)(profile - 1), 0x00, (byte)(dpiEncoded & 0xFF), (byte)((dpiEncoded >> 8) & 0xFF), dpi.Color.R, dpi.Color.G, dpi.Color.B };
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return new byte[] { 0x00, 0x51, 0x31, (byte)(profile - 1), 0x00, (byte)(dpiEncoded & 0xFF), (byte)((dpiEncoded >> 8) & 0xFF) };
|
return new byte[] { reportId, 0x51, 0x31, (byte)(profile - 1), 0x00, (byte)(dpiEncoded & 0xFF), (byte)((dpiEncoded >> 8) & 0xFF) };
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -918,7 +1090,7 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
|
|
||||||
protected virtual byte[] GetReadDPIColorsPacket()
|
protected virtual byte[] GetReadDPIColorsPacket()
|
||||||
{
|
{
|
||||||
return new byte[] { 0x00, 0x12, 0x04, 0x03 };
|
return new byte[] { reportId, 0x12, 0x04, 0x03 };
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void ParseDPIColors(byte[] packet)
|
protected virtual void ParseDPIColors(byte[] packet)
|
||||||
@@ -996,13 +1168,13 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
|
|
||||||
protected virtual byte[] GetReadLiftOffDistancePacket()
|
protected virtual byte[] GetReadLiftOffDistancePacket()
|
||||||
{
|
{
|
||||||
return new byte[] { 0x00, 0x12, 0x06 };
|
return new byte[] { reportId, 0x12, 0x06 };
|
||||||
}
|
}
|
||||||
|
|
||||||
//This also resets the "calibration" to default. There is no seperate command to only set the lift off distance
|
//This also resets the "calibration" to default. There is no seperate command to only set the lift off distance
|
||||||
protected virtual byte[] GetUpdateLiftOffDistancePacket(LiftOffDistance liftOffDistance)
|
protected virtual byte[] GetUpdateLiftOffDistancePacket(LiftOffDistance liftOffDistance)
|
||||||
{
|
{
|
||||||
return new byte[] { 0x00, 0x51, 0x35, 0xFF, 0x00, 0xFF, ((byte)liftOffDistance) };
|
return new byte[] { reportId, 0x51, 0x35, 0xFF, 0x00, 0xFF, ((byte)liftOffDistance) };
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual LiftOffDistance ParseLiftOffDistance(byte[] packet)
|
protected virtual LiftOffDistance ParseLiftOffDistance(byte[] packet)
|
||||||
@@ -1071,13 +1243,13 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
|
|
||||||
protected virtual byte[] GetReadDebouncePacket()
|
protected virtual byte[] GetReadDebouncePacket()
|
||||||
{
|
{
|
||||||
return new byte[] { 0x00, 0x12, 0x04, 0x00 };
|
return new byte[] { reportId, 0x12, 0x04, 0x00 };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected virtual byte[] GetUpdateDebouncePacket(DebounceTime debounce)
|
protected virtual byte[] GetUpdateDebouncePacket(DebounceTime debounce)
|
||||||
{
|
{
|
||||||
return new byte[] { 0x00, 0x51, 0x31, 0x05, 0x00, ((byte)debounce) };
|
return new byte[] { reportId, 0x51, 0x31, 0x05, 0x00, ((byte)debounce) };
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual DebounceTime ParseDebounce(byte[] packet)
|
protected virtual DebounceTime ParseDebounce(byte[] packet)
|
||||||
@@ -1261,7 +1433,7 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
idx = IndexForZone(zone);
|
idx = IndexForZone(zone);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new byte[] { 0x00, 0x12, 0x03, (byte)idx };
|
return new byte[] { reportId, 0x12, 0x03, (byte)idx };
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual byte[] GetUpdateLightingModePacket(LightingSetting lightingSetting, LightingZone zone)
|
protected virtual byte[] GetUpdateLightingModePacket(LightingSetting lightingSetting, LightingZone zone)
|
||||||
@@ -1279,7 +1451,7 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
lightingSetting.LightingMode = LightingMode.ColorCycle;
|
lightingSetting.LightingMode = LightingMode.ColorCycle;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new byte[] { 0x00, 0x51, 0x28, (byte)zone, 0x00,
|
return new byte[] { reportId, 0x51, 0x28, (byte)zone, 0x00,
|
||||||
IndexForLightingMode(lightingSetting.LightingMode),
|
IndexForLightingMode(lightingSetting.LightingMode),
|
||||||
(byte)lightingSetting.Brightness,
|
(byte)lightingSetting.Brightness,
|
||||||
lightingSetting.RGBColor.R, lightingSetting.RGBColor.G, lightingSetting.RGBColor.B,
|
lightingSetting.RGBColor.R, lightingSetting.RGBColor.G, lightingSetting.RGBColor.B,
|
||||||
@@ -1375,7 +1547,7 @@ namespace GHelper.Peripherals.Mouse
|
|||||||
|
|
||||||
protected virtual byte[] GetSaveProfilePacket()
|
protected virtual byte[] GetSaveProfilePacket()
|
||||||
{
|
{
|
||||||
return new byte[] { 0x00, 0x50, 0x03 };
|
return new byte[] { reportId, 0x50, 0x03 };
|
||||||
}
|
}
|
||||||
|
|
||||||
public void FlushSettings()
|
public void FlushSettings()
|
||||||
|
|||||||
174
app/Peripherals/Mouse/Models/HarpeAceAimLab.cs
Normal file
174
app/Peripherals/Mouse/Models/HarpeAceAimLab.cs
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
|
||||||
|
namespace GHelper.Peripherals.Mouse.Models
|
||||||
|
{
|
||||||
|
//P713_Wireless
|
||||||
|
public class HarpeAceAimLabEdition : AsusMouse
|
||||||
|
{
|
||||||
|
public HarpeAceAimLabEdition() : base(0x0B05, 0x1A94, "mi_00", true)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected HarpeAceAimLabEdition(ushort productId, bool wireless, string endpoint, byte reportId) : base(0x0B05, productId, endpoint, wireless, reportId)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int DPIProfileCount()
|
||||||
|
{
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string GetDisplayName()
|
||||||
|
{
|
||||||
|
return "ROG Harpe Ace Aim Lab Edition (Wireless)";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public override PollingRate[] SupportedPollingrates()
|
||||||
|
{
|
||||||
|
return new PollingRate[] {
|
||||||
|
PollingRate.PR125Hz,
|
||||||
|
PollingRate.PR250Hz,
|
||||||
|
PollingRate.PR500Hz,
|
||||||
|
PollingRate.PR1000Hz
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int ProfileCount()
|
||||||
|
{
|
||||||
|
return 5;
|
||||||
|
}
|
||||||
|
public override int MaxDPI()
|
||||||
|
{
|
||||||
|
return 36_000;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int MinDPI()
|
||||||
|
{
|
||||||
|
return 50;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasXYDPI()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasDebounceSetting()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasLiftOffSetting()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasRGB()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override LightingZone[] SupportedLightingZones()
|
||||||
|
{
|
||||||
|
return new LightingZone[] { LightingZone.Scrollwheel };
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool IsLightingModeSupported(LightingMode lightingMode)
|
||||||
|
{
|
||||||
|
return lightingMode == LightingMode.Static
|
||||||
|
|| lightingMode == LightingMode.Breathing
|
||||||
|
|| lightingMode == LightingMode.ColorCycle
|
||||||
|
|| lightingMode == LightingMode.React
|
||||||
|
|| lightingMode == LightingMode.BatteryState
|
||||||
|
|| lightingMode == LightingMode.Off;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasAutoPowerOff()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasAngleSnapping()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasAngleTuning()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasLowBatteryWarning()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasDPIColors()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int AngleTuningStep()
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int AngleTuningMin()
|
||||||
|
{
|
||||||
|
return -30;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int AngleTuningMax()
|
||||||
|
{
|
||||||
|
return 30;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasAcceleration()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasDeceleration()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int MaxAcceleration()
|
||||||
|
{
|
||||||
|
return 9;
|
||||||
|
}
|
||||||
|
public override int MaxDeceleration()
|
||||||
|
{
|
||||||
|
return 9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class HarpeAceAimLabEditionWired : HarpeAceAimLabEdition
|
||||||
|
{
|
||||||
|
public HarpeAceAimLabEditionWired() : base(0x1A92, false, "mi_00", 0x00)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string GetDisplayName()
|
||||||
|
{
|
||||||
|
return "ROG Harpe Ace Aim Lab Edition (Wired)";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class HarpeAceAimLabEditionOmni : HarpeAceAimLabEdition
|
||||||
|
{
|
||||||
|
public HarpeAceAimLabEditionOmni() : base(0x1ACE, true, "mi_02&col03", 0x03)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string GetDisplayName()
|
||||||
|
{
|
||||||
|
return "ROG Harpe Ace Aim Lab Edition (OMNI)";
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int USBPacketSize()
|
||||||
|
{
|
||||||
|
return 64;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
106
app/Peripherals/Mouse/Models/KerisWirelssAimpoint.cs
Normal file
106
app/Peripherals/Mouse/Models/KerisWirelssAimpoint.cs
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
namespace GHelper.Peripherals.Mouse.Models
|
||||||
|
{
|
||||||
|
//P709_Wireless
|
||||||
|
public class KerisWirelssAimpoint : AsusMouse
|
||||||
|
{
|
||||||
|
public KerisWirelssAimpoint() : base(0x0B05, 0x1A68, "mi_00", true)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected KerisWirelssAimpoint(ushort vendorId, bool wireless) : base(0x0B05, vendorId, "mi_00", wireless)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int DPIProfileCount()
|
||||||
|
{
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string GetDisplayName()
|
||||||
|
{
|
||||||
|
return "ROG Keris Wireless Aimpoint (Wireless)";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public override PollingRate[] SupportedPollingrates()
|
||||||
|
{
|
||||||
|
return new PollingRate[] {
|
||||||
|
PollingRate.PR125Hz,
|
||||||
|
PollingRate.PR250Hz,
|
||||||
|
PollingRate.PR500Hz,
|
||||||
|
PollingRate.PR1000Hz
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int ProfileCount()
|
||||||
|
{
|
||||||
|
return 5;
|
||||||
|
}
|
||||||
|
public override int MaxDPI()
|
||||||
|
{
|
||||||
|
return 36_000;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasXYDPI()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasDebounceSetting()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasLiftOffSetting()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasRGB()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override LightingZone[] SupportedLightingZones()
|
||||||
|
{
|
||||||
|
return new LightingZone[] { LightingZone.Logo };
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasAutoPowerOff()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasAngleSnapping()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasAngleTuning()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasLowBatteryWarning()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasDPIColors()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class KerisWirelssAimpointWired : KerisWirelssAimpoint
|
||||||
|
{
|
||||||
|
public KerisWirelssAimpointWired() : base(0x1A66, false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string GetDisplayName()
|
||||||
|
{
|
||||||
|
return "ROG Keris Wireless Aimpoint (Wired)";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
209
app/Peripherals/Mouse/Models/PugioII.cs
Normal file
209
app/Peripherals/Mouse/Models/PugioII.cs
Normal file
@@ -0,0 +1,209 @@
|
|||||||
|
|
||||||
|
namespace GHelper.Peripherals.Mouse.Models
|
||||||
|
{
|
||||||
|
//P705
|
||||||
|
public class PugioII : AsusMouse
|
||||||
|
{
|
||||||
|
public PugioII() : base(0x0B05, 0x1908, "mi_00", true)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected PugioII(ushort vendorId, bool wireless) : base(0x0B05, vendorId, "mi_00", wireless)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public override int DPIProfileCount()
|
||||||
|
{
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string GetDisplayName()
|
||||||
|
{
|
||||||
|
return "ROG Pugio II (Wireless)";
|
||||||
|
}
|
||||||
|
|
||||||
|
public override PollingRate[] SupportedPollingrates()
|
||||||
|
{
|
||||||
|
return new PollingRate[] {
|
||||||
|
PollingRate.PR125Hz,
|
||||||
|
PollingRate.PR250Hz,
|
||||||
|
PollingRate.PR500Hz,
|
||||||
|
PollingRate.PR1000Hz
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public override int ProfileCount()
|
||||||
|
{
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
public override int MaxDPI()
|
||||||
|
{
|
||||||
|
return 16_000;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasDebounceSetting()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
public override bool HasLiftOffSetting()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
public override int DPIIncrements()
|
||||||
|
{
|
||||||
|
return 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasRGB()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
public override int MaxBrightness()
|
||||||
|
{
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override LightingZone[] SupportedLightingZones()
|
||||||
|
{
|
||||||
|
return new LightingZone[] { LightingZone.Logo, LightingZone.Scrollwheel, LightingZone.Underglow };
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasAutoPowerOff()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasAngleSnapping()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasAngleTuning()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasLowBatteryWarning()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int LowBatteryWarningStep()
|
||||||
|
{
|
||||||
|
return 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int LowBatteryWarningMax()
|
||||||
|
{
|
||||||
|
return 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override int ParseBattery(byte[] packet)
|
||||||
|
{
|
||||||
|
return base.ParseBattery(packet) * 25;
|
||||||
|
}
|
||||||
|
protected override int ParseLowBatteryWarning(byte[] packet)
|
||||||
|
{
|
||||||
|
return base.ParseLowBatteryWarning(packet) * 25;
|
||||||
|
}
|
||||||
|
protected override byte[] GetUpdateEnergySettingsPacket(int lowBatteryWarning, PowerOffSetting powerOff)
|
||||||
|
{
|
||||||
|
return base.GetUpdateEnergySettingsPacket(lowBatteryWarning / 25, powerOff);
|
||||||
|
}
|
||||||
|
protected override byte[] GetReadLightingModePacket(LightingZone zone)
|
||||||
|
{
|
||||||
|
return new byte[] { 0x00, 0x12, 0x03, 0x00 };
|
||||||
|
}
|
||||||
|
|
||||||
|
protected LightingSetting? ParseLightingSetting(byte[] packet, LightingZone zone)
|
||||||
|
{
|
||||||
|
if (packet[1] != 0x12 || packet[2] != 0x03)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
int offset = 5 + (((int)zone) * 5);
|
||||||
|
|
||||||
|
LightingSetting setting = new LightingSetting();
|
||||||
|
|
||||||
|
setting.LightingMode = LightingModeForIndex(packet[offset + 0]);
|
||||||
|
setting.Brightness = packet[offset + 1];
|
||||||
|
|
||||||
|
setting.RGBColor = Color.FromArgb(packet[offset + 2], packet[offset + 3], packet[offset + 4]);
|
||||||
|
|
||||||
|
setting.AnimationDirection = SupportsAnimationDirection(setting.LightingMode)
|
||||||
|
? (AnimationDirection)packet[21]
|
||||||
|
: AnimationDirection.Clockwise;
|
||||||
|
|
||||||
|
if (setting.AnimationDirection != AnimationDirection.Clockwise
|
||||||
|
&& setting.AnimationDirection != AnimationDirection.CounterClockwise)
|
||||||
|
{
|
||||||
|
setting.AnimationDirection = AnimationDirection.Clockwise;
|
||||||
|
}
|
||||||
|
|
||||||
|
setting.RandomColor = SupportsRandomColor(setting.LightingMode) && packet[22] == 0x01;
|
||||||
|
setting.AnimationSpeed = SupportsAnimationSpeed(setting.LightingMode)
|
||||||
|
? (AnimationSpeed)packet[23]
|
||||||
|
: AnimationSpeed.Medium;
|
||||||
|
|
||||||
|
//If the mouse reports an out of range value, which it does when the current setting has no speed option, chose medium as default
|
||||||
|
if (setting.AnimationSpeed != AnimationSpeed.Fast
|
||||||
|
&& setting.AnimationSpeed != AnimationSpeed.Medium
|
||||||
|
&& setting.AnimationSpeed != AnimationSpeed.Slow)
|
||||||
|
{
|
||||||
|
setting.AnimationSpeed = AnimationSpeed.Medium;
|
||||||
|
}
|
||||||
|
return setting;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void ReadLightingSetting()
|
||||||
|
{
|
||||||
|
if (!HasRGB())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//Mouse sends all lighting zones in one response
|
||||||
|
//21: Direction
|
||||||
|
//22: Random
|
||||||
|
//23: Speed
|
||||||
|
// 20 21 22 23
|
||||||
|
//00 12 03 00 00 [03 04 00 00 ff] [03 04 00 00 ff] [03 04 00 00 ff] 00 04 00 00
|
||||||
|
//00 12 03 00 00 [05 02 ff 00 ff] [05 02 ff 00 ff] [05 02 ff 00 ff] 00 01 01 00
|
||||||
|
//00 12 03 00 00 [03 01 00 00 ff] [03 01 00 00 ff] [03 01 00 00 ff] 00 01 00 01
|
||||||
|
byte[]? response = WriteForResponse(GetReadLightingModePacket(LightingZone.All));
|
||||||
|
if (response is null) return;
|
||||||
|
|
||||||
|
LightingZone[] lz = SupportedLightingZones();
|
||||||
|
for (int i = 0; i < lz.Length; ++i)
|
||||||
|
{
|
||||||
|
LightingSetting? ls = ParseLightingSetting(response, lz[i]);
|
||||||
|
if (ls is null)
|
||||||
|
{
|
||||||
|
Logger.WriteLine(GetDisplayName() + ": Failed to read RGB Setting for Zone " + lz[i].ToString());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Logger.WriteLine(GetDisplayName() + ": Read RGB Setting for Zone " + lz[i].ToString() + ": " + ls.ToString());
|
||||||
|
LightingSetting[i] = ls;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool CanChangeDPIProfile()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class PugioIIWired : PugioII
|
||||||
|
{
|
||||||
|
public PugioIIWired() : base(0x1906, false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string GetDisplayName()
|
||||||
|
{
|
||||||
|
return "ROG Pugio II (Wired)";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
177
app/Peripherals/Mouse/Models/StrixImpactII.cs
Normal file
177
app/Peripherals/Mouse/Models/StrixImpactII.cs
Normal file
@@ -0,0 +1,177 @@
|
|||||||
|
namespace GHelper.Peripherals.Mouse.Models
|
||||||
|
{
|
||||||
|
//P506
|
||||||
|
public class StrixImpactII : AsusMouse
|
||||||
|
{
|
||||||
|
public StrixImpactII() : base(0x0B05, 0x18E1, "mi_00", false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int DPIProfileCount()
|
||||||
|
{
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string GetDisplayName()
|
||||||
|
{
|
||||||
|
return "ROG Strix Impact II";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public override PollingRate[] SupportedPollingrates()
|
||||||
|
{
|
||||||
|
return new PollingRate[] {
|
||||||
|
PollingRate.PR125Hz,
|
||||||
|
PollingRate.PR250Hz,
|
||||||
|
PollingRate.PR500Hz,
|
||||||
|
PollingRate.PR1000Hz
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int ProfileCount()
|
||||||
|
{
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
public override int MaxDPI()
|
||||||
|
{
|
||||||
|
return 6_200;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasRGB()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasAutoPowerOff()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasAngleSnapping()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasAngleTuning()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasDebounceSetting()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasLowBatteryWarning()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasBattery()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool HasDPIColors()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool IsLightingModeSupported(LightingMode lightingMode)
|
||||||
|
{
|
||||||
|
return lightingMode == LightingMode.Static
|
||||||
|
|| lightingMode == LightingMode.Breathing
|
||||||
|
|| lightingMode == LightingMode.ColorCycle
|
||||||
|
|| lightingMode == LightingMode.React;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override LightingZone[] SupportedLightingZones()
|
||||||
|
{
|
||||||
|
return new LightingZone[] { LightingZone.Logo, LightingZone.Scrollwheel, LightingZone.Underglow };
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int DPIIncrements()
|
||||||
|
{
|
||||||
|
return 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool CanChangeDPIProfile()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int MaxBrightness()
|
||||||
|
{
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override byte IndexForLightingMode(LightingMode lightingMode)
|
||||||
|
{
|
||||||
|
if (lightingMode == LightingMode.React)
|
||||||
|
{
|
||||||
|
return 0x03;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ((byte)lightingMode);
|
||||||
|
}
|
||||||
|
protected override LightingMode LightingModeForIndex(byte lightingMode)
|
||||||
|
{
|
||||||
|
if (lightingMode == 0x03)
|
||||||
|
{
|
||||||
|
return LightingMode.React;
|
||||||
|
}
|
||||||
|
return base.LightingModeForIndex(lightingMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override byte[] GetReadLightingModePacket(LightingZone zone)
|
||||||
|
{
|
||||||
|
return new byte[] { 0x00, 0x12, 0x03, 0x00 };
|
||||||
|
}
|
||||||
|
|
||||||
|
protected LightingSetting? ParseLightingSetting(byte[] packet, LightingZone zone)
|
||||||
|
{
|
||||||
|
if (packet[1] != 0x12 || packet[2] != 0x03)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
int offset = 5 + (((int)zone) * 5);
|
||||||
|
|
||||||
|
LightingSetting setting = new LightingSetting();
|
||||||
|
|
||||||
|
setting.LightingMode = LightingModeForIndex(packet[offset + 0]);
|
||||||
|
setting.Brightness = packet[offset + 1];
|
||||||
|
|
||||||
|
setting.RGBColor = Color.FromArgb(packet[offset + 2], packet[offset + 3], packet[offset + 4]);
|
||||||
|
|
||||||
|
|
||||||
|
return setting;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void ReadLightingSetting()
|
||||||
|
{
|
||||||
|
if (!HasRGB())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//Mouse sends all lighting zones in one response
|
||||||
|
//00 12 03 00 00 [00 04 ff 00 80] [00 04 00 ff ff] [00 04 ff ff ff] 00 00 00 00 00 00 00 00 00 00 00 00 00 0
|
||||||
|
byte[]? response = WriteForResponse(GetReadLightingModePacket(LightingZone.All));
|
||||||
|
if (response is null) return;
|
||||||
|
|
||||||
|
LightingZone[] lz = SupportedLightingZones();
|
||||||
|
for (int i = 0; i < lz.Length; ++i)
|
||||||
|
{
|
||||||
|
LightingSetting? ls = ParseLightingSetting(response, lz[i]);
|
||||||
|
if (ls is null)
|
||||||
|
{
|
||||||
|
Logger.WriteLine(GetDisplayName() + ": Failed to read RGB Setting for Zone " + lz[i].ToString());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Logger.WriteLine(GetDisplayName() + ": Read RGB Setting for Zone " + lz[i].ToString() + ": " + ls.ToString());
|
||||||
|
LightingSetting[i] = ls;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -196,7 +196,15 @@ namespace GHelper.Peripherals
|
|||||||
DetectMouse(new StrixImpactIIWirelessWired());
|
DetectMouse(new StrixImpactIIWirelessWired());
|
||||||
DetectMouse(new GladiusIII());
|
DetectMouse(new GladiusIII());
|
||||||
DetectMouse(new GladiusIIIWired());
|
DetectMouse(new GladiusIIIWired());
|
||||||
|
DetectMouse(new HarpeAceAimLabEdition());
|
||||||
|
DetectMouse(new HarpeAceAimLabEditionWired());
|
||||||
|
DetectMouse(new HarpeAceAimLabEditionOmni());
|
||||||
DetectMouse(new TUFM3());
|
DetectMouse(new TUFM3());
|
||||||
|
DetectMouse(new KerisWirelssAimpoint());
|
||||||
|
DetectMouse(new KerisWirelssAimpointWired());
|
||||||
|
DetectMouse(new PugioII());
|
||||||
|
DetectMouse(new PugioIIWired());
|
||||||
|
DetectMouse(new StrixImpactII());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DetectMouse(AsusMouse am)
|
public static void DetectMouse(AsusMouse am)
|
||||||
|
|||||||
@@ -29,9 +29,9 @@ namespace GHelper
|
|||||||
public static SettingsForm settingsForm = new SettingsForm();
|
public static SettingsForm settingsForm = new SettingsForm();
|
||||||
|
|
||||||
public static ModeControl modeControl = new ModeControl();
|
public static ModeControl modeControl = new ModeControl();
|
||||||
static GPUModeControl gpuControl = new GPUModeControl(settingsForm);
|
public static GPUModeControl gpuControl = new GPUModeControl(settingsForm);
|
||||||
static ScreenControl screenControl = new ScreenControl();
|
public static ScreenControl screenControl = new ScreenControl();
|
||||||
static ClamshellModeControl clamshellControl = new ClamshellModeControl();
|
public static ClamshellModeControl clamshellControl = new ClamshellModeControl();
|
||||||
|
|
||||||
public static ToastForm toast = new ToastForm();
|
public static ToastForm toast = new ToastForm();
|
||||||
|
|
||||||
@@ -95,6 +95,7 @@ namespace GHelper
|
|||||||
settingsForm.InitAura();
|
settingsForm.InitAura();
|
||||||
settingsForm.InitMatrix();
|
settingsForm.InitMatrix();
|
||||||
|
|
||||||
|
gpuControl.InitXGM();
|
||||||
|
|
||||||
SetAutoModes();
|
SetAutoModes();
|
||||||
|
|
||||||
@@ -118,7 +119,7 @@ namespace GHelper
|
|||||||
|
|
||||||
if (Environment.CurrentDirectory.Trim('\\') == Application.StartupPath.Trim('\\') || action.Length > 0)
|
if (Environment.CurrentDirectory.Trim('\\') == Application.StartupPath.Trim('\\') || action.Length > 0)
|
||||||
{
|
{
|
||||||
SettingsToggle(action);
|
SettingsToggle(action, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
Application.Run();
|
Application.Run();
|
||||||
@@ -155,15 +156,17 @@ namespace GHelper
|
|||||||
lastTheme = DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
lastTheme = DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (settingsForm.fans is not null && settingsForm.fans.Text != "")
|
if (settingsForm.fansForm is not null && settingsForm.fansForm.Text != "")
|
||||||
settingsForm.fans.InitTheme();
|
settingsForm.fansForm.InitTheme();
|
||||||
|
|
||||||
if (settingsForm.keyb is not null && settingsForm.keyb.Text != "")
|
if (settingsForm.extraForm is not null && settingsForm.extraForm.Text != "")
|
||||||
settingsForm.keyb.InitTheme();
|
settingsForm.extraForm.InitTheme();
|
||||||
|
|
||||||
if (settingsForm.updates is not null && settingsForm.updates.Text != "")
|
if (settingsForm.updatesForm is not null && settingsForm.updatesForm.Text != "")
|
||||||
settingsForm.updates.InitTheme();
|
settingsForm.updatesForm.InitTheme();
|
||||||
|
|
||||||
|
if (settingsForm.matrixForm is not null && settingsForm.matrixForm.Text != "")
|
||||||
|
settingsForm.matrixForm.InitTheme();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -194,7 +197,7 @@ namespace GHelper
|
|||||||
BatteryControl.SetBatteryChargeLimit();
|
BatteryControl.SetBatteryChargeLimit();
|
||||||
|
|
||||||
settingsForm.AutoKeyboard();
|
settingsForm.AutoKeyboard();
|
||||||
settingsForm.matrix.SetMatrix(true);
|
settingsForm.matrixControl.SetMatrix(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
|
private static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
|
||||||
@@ -202,7 +205,7 @@ namespace GHelper
|
|||||||
|
|
||||||
if (e.Mode == PowerModes.Suspend)
|
if (e.Mode == PowerModes.Suspend)
|
||||||
{
|
{
|
||||||
Logger.WriteLine("Power Mode:" + e.Mode.ToString());
|
Logger.WriteLine("Power Mode Changed:" + e.Mode.ToString());
|
||||||
gpuControl.StandardModeFix();
|
gpuControl.StandardModeFix();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -210,11 +213,21 @@ namespace GHelper
|
|||||||
SetAutoModes(true);
|
SetAutoModes(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void SettingsToggle(string action = "", bool checkForFocus = true)
|
||||||
|
|
||||||
public static void SettingsToggle(string action = "")
|
|
||||||
{
|
{
|
||||||
if (settingsForm.Visible) settingsForm.HideAll();
|
if (settingsForm.Visible)
|
||||||
|
{
|
||||||
|
// If helper window is not on top, this just focuses on the app again
|
||||||
|
// Pressing the ghelper button again will hide the app
|
||||||
|
if (checkForFocus && !settingsForm.HasAnyFocus())
|
||||||
|
{
|
||||||
|
settingsForm.ShowAll();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
settingsForm.HideAll();
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -243,15 +256,18 @@ namespace GHelper
|
|||||||
gpuControl.RestartGPU(false);
|
gpuControl.RestartGPU(false);
|
||||||
break;
|
break;
|
||||||
case "services":
|
case "services":
|
||||||
settingsForm.keyb = new Extra();
|
settingsForm.extraForm = new Extra();
|
||||||
settingsForm.keyb.Show();
|
settingsForm.extraForm.Show();
|
||||||
settingsForm.keyb.ServiesToggle();
|
settingsForm.extraForm.ServiesToggle();
|
||||||
break;
|
break;
|
||||||
case "uv":
|
case "uv":
|
||||||
Startup.ReScheduleAdmin();
|
Startup.ReScheduleAdmin();
|
||||||
settingsForm.FansToggle(2);
|
settingsForm.FansToggle(2);
|
||||||
modeControl.SetRyzen();
|
modeControl.SetRyzen();
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
Startup.StartupCheck();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -276,5 +292,4 @@ namespace GHelper
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
10
app/Properties/Resources.Designer.cs
generated
10
app/Properties/Resources.Designer.cs
generated
@@ -610,6 +610,16 @@ namespace GHelper.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Byte[].
|
||||||
|
/// </summary>
|
||||||
|
internal static byte[] MFont {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("MFont", resourceCulture);
|
||||||
|
return ((byte[])(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -130,6 +130,9 @@
|
|||||||
<data name="icons8_mute_unmute_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="icons8_mute_unmute_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\icons8-mute-unmute-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\icons8-mute-unmute-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="icons8-hibernate-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\icons8-hibernate-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="icons8-quit-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="icons8-quit-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\icons8-quit-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\icons8-quit-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -286,7 +289,7 @@
|
|||||||
<data name="icons8_rocket_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="icons8_rocket_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\icons8-rocket-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\icons8-rocket-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="icons8-hibernate-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="MFont" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\icons8-hibernate-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\Font.otf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
45
app/Properties/Strings.Designer.cs
generated
45
app/Properties/Strings.Designer.cs
generated
@@ -60,6 +60,15 @@ namespace GHelper.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Acceleration.
|
||||||
|
/// </summary>
|
||||||
|
internal static string Acceleration {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Acceleration", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Can't connect to ASUS ACPI. Application can't function without it. Try to install Asus System Control Interface.
|
/// Looks up a localized string similar to Can't connect to ASUS ACPI. Application can't function without it. Try to install Asus System Control Interface.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -456,6 +465,15 @@ namespace GHelper.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to One time charge to 100%.
|
||||||
|
/// </summary>
|
||||||
|
internal static string BatteryLimitFull {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("BatteryLimitFull", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to BIOS and Driver Updates.
|
/// Looks up a localized string similar to BIOS and Driver Updates.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -474,6 +492,15 @@ namespace GHelper.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Boot Sound.
|
||||||
|
/// </summary>
|
||||||
|
internal static string BootSound {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("BootSound", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Brightness.
|
/// Looks up a localized string similar to Brightness.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -501,6 +528,15 @@ namespace GHelper.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Calibrate.
|
||||||
|
/// </summary>
|
||||||
|
internal static string Calibrate {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Calibrate", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Charging.
|
/// Looks up a localized string similar to Charging.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -537,6 +573,15 @@ namespace GHelper.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Deceleration.
|
||||||
|
/// </summary>
|
||||||
|
internal static string Deceleration {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Deceleration", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Default.
|
/// Looks up a localized string similar to Default.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -117,6 +117,9 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="Acceleration" xml:space="preserve">
|
||||||
|
<value>Beschleunigung</value>
|
||||||
|
</data>
|
||||||
<data name="ACPIError" xml:space="preserve">
|
<data name="ACPIError" xml:space="preserve">
|
||||||
<value>Verbindung zu ASUS ACPI fehlgeschlagen. G-Helper kann nicht ausgeführt werden. Bitte installiere ASUS System Control Interface.</value>
|
<value>Verbindung zu ASUS ACPI fehlgeschlagen. G-Helper kann nicht ausgeführt werden. Bitte installiere ASUS System Control Interface.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -127,10 +130,10 @@
|
|||||||
<value>Eco Modus</value>
|
<value>Eco Modus</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AlertUltimateOff" xml:space="preserve">
|
<data name="AlertUltimateOff" xml:space="preserve">
|
||||||
<value>Wechseln in den Ultimate Modus benötigt einen Neustart. Jetzt neustarten?</value>
|
<value>Deaktivieren des Ultimate Modus benötigt einen Neustart.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AlertUltimateOn" xml:space="preserve">
|
<data name="AlertUltimateOn" xml:space="preserve">
|
||||||
<value>Ultimate Modus benötigt einen Neustart</value>
|
<value>Aktivieren des Ultimate Modus benötigt einen Neustart.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AlertUltimateTitle" xml:space="preserve">
|
<data name="AlertUltimateTitle" xml:space="preserve">
|
||||||
<value>Jetzt neu starten?</value>
|
<value>Jetzt neu starten?</value>
|
||||||
@@ -249,12 +252,18 @@
|
|||||||
<data name="BatteryHealth" xml:space="preserve">
|
<data name="BatteryHealth" xml:space="preserve">
|
||||||
<value>Batteriezustand</value>
|
<value>Batteriezustand</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BatteryLimitFull" xml:space="preserve">
|
||||||
|
<value>One time charge to 100%</value>
|
||||||
|
</data>
|
||||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||||
<value>BIOS und Treiber Updates</value>
|
<value>BIOS und Treiber Updates</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Boot" xml:space="preserve">
|
<data name="Boot" xml:space="preserve">
|
||||||
<value>Hochfahren</value>
|
<value>Hochfahren</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BootSound" xml:space="preserve">
|
||||||
|
<value>Boot Sound</value>
|
||||||
|
</data>
|
||||||
<data name="Brightness" xml:space="preserve">
|
<data name="Brightness" xml:space="preserve">
|
||||||
<value>Helligkeit</value>
|
<value>Helligkeit</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -264,6 +273,9 @@
|
|||||||
<data name="BrightnessUp" xml:space="preserve">
|
<data name="BrightnessUp" xml:space="preserve">
|
||||||
<value>Helligkeit erhöhen</value>
|
<value>Helligkeit erhöhen</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Calibrate" xml:space="preserve">
|
||||||
|
<value>Kalibrieren</value>
|
||||||
|
</data>
|
||||||
<data name="Charging" xml:space="preserve">
|
<data name="Charging" xml:space="preserve">
|
||||||
<value>Lädt</value>
|
<value>Lädt</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -276,11 +288,14 @@
|
|||||||
<data name="Custom" xml:space="preserve">
|
<data name="Custom" xml:space="preserve">
|
||||||
<value>Benutzerdefiniert</value>
|
<value>Benutzerdefiniert</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Deceleration" xml:space="preserve">
|
||||||
|
<value>Verlangsamung</value>
|
||||||
|
</data>
|
||||||
<data name="Default" xml:space="preserve">
|
<data name="Default" xml:space="preserve">
|
||||||
<value>Standard</value>
|
<value>Standard</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DisableOverdrive" xml:space="preserve">
|
<data name="DisableOverdrive" xml:space="preserve">
|
||||||
<value>Overdrive abschalten</value>
|
<value>Bildschirm: Overdrive abschalten</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Discharging" xml:space="preserve">
|
<data name="Discharging" xml:space="preserve">
|
||||||
<value>Entlädt</value>
|
<value>Entlädt</value>
|
||||||
@@ -298,7 +313,7 @@
|
|||||||
<value>Eco</value>
|
<value>Eco</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnableOptimusText" xml:space="preserve">
|
<data name="EnableOptimusText" xml:space="preserve">
|
||||||
<value>Wenn Sie die dGPU deaktivieren, indem Sie in den Eco-Modus wechseln, kann zu Problemen mit der Helligkeitseinstellung führen, wenn der Anzeigemodus nicht auf Optimus eingestellt ist.
|
<value>Die dGPU zu deaktivieren, indem Sie in den Eco-Modus wechseln während der Anzeigemodus nicht auf Optimus eingestellt ist, kann zu Problemen mit der Helligkeitseinstellung führen.
|
||||||
|
|
||||||
Trotzdem fortfahren?</value>
|
Trotzdem fortfahren?</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -375,7 +390,7 @@ Trotzdem fortfahren?</value>
|
|||||||
<value>Maximale GPU Temperatur</value>
|
<value>Maximale GPU Temperatur</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="HibernateAfter" xml:space="preserve">
|
<data name="HibernateAfter" xml:space="preserve">
|
||||||
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
|
<value>Minuten bis zum Ruhezustand im Standby (0 = Aus)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="High" xml:space="preserve">
|
<data name="High" xml:space="preserve">
|
||||||
<value>Hoch</value>
|
<value>Hoch</value>
|
||||||
@@ -390,7 +405,7 @@ Trotzdem fortfahren?</value>
|
|||||||
<value>Alle Anwendungen auf der dGPU beim Wechsel in den Eco Modus beenden.</value>
|
<value>Alle Anwendungen auf der dGPU beim Wechsel in den Eco Modus beenden.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LaptopBacklight" xml:space="preserve">
|
<data name="LaptopBacklight" xml:space="preserve">
|
||||||
<value>Laptopbelechtung</value>
|
<value>Laptopbeleuchtung</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LaptopKeyboard" xml:space="preserve">
|
<data name="LaptopKeyboard" xml:space="preserve">
|
||||||
<value>Laptoptastatur</value>
|
<value>Laptoptastatur</value>
|
||||||
@@ -486,7 +501,7 @@ Trotzdem fortfahren?</value>
|
|||||||
<value>Neue Updates:</value>
|
<value>Neue Updates:</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NoNewUpdates" xml:space="preserve">
|
<data name="NoNewUpdates" xml:space="preserve">
|
||||||
<value>Keine Updates verfügbar</value>
|
<value>Keine Updates</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NotConnected" xml:space="preserve">
|
<data name="NotConnected" xml:space="preserve">
|
||||||
<value>Nicht verbunden</value>
|
<value>Nicht verbunden</value>
|
||||||
@@ -540,7 +555,7 @@ Trotzdem fortfahren?</value>
|
|||||||
<value>Schließen</value>
|
<value>Schließen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RestartGPU" xml:space="preserve">
|
<data name="RestartGPU" xml:space="preserve">
|
||||||
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
|
<value>Ein Prozess verhindert den Wechsel in den Eco-Modus. dGPU neu starten? Fortfahren auf eigene Gefahr.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RPM" xml:space="preserve">
|
<data name="RPM" xml:space="preserve">
|
||||||
<value>U/Min</value>
|
<value>U/Min</value>
|
||||||
@@ -618,7 +633,7 @@ Trotzdem fortfahren?</value>
|
|||||||
<value>Ultimativ</value>
|
<value>Ultimativ</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UndervoltingRisky" xml:space="preserve">
|
<data name="UndervoltingRisky" xml:space="preserve">
|
||||||
<value>Die Spannungsabsenkung (Undervolting) ist experimentell und birgt u.U. ein Risik. Wenn die Spannung zu weit abgesenkt wird, wird der Computer instabil und kann abstürzen, was zu Datenverlust führen kann. Es empfiehlt sich mit kleinen Werten anzufangen und es ausgiebig zu testen, um den idealen Wert zu finden.</value>
|
<value>Die Spannungsabsenkung (Undervolting) ist experimentell und birgt Risiken. Wenn die Spannung zu weit abgesenkt wird, wird der Computer instabil und kann abstürzen, was zu Datenverlust führen kann. Es empfiehlt sich mit kleinen Werten anzufangen und ausgiebig zu testen, um den idealen Wert zu finden.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Updates" xml:space="preserve">
|
<data name="Updates" xml:space="preserve">
|
||||||
<value>Aktualisierungen</value>
|
<value>Aktualisierungen</value>
|
||||||
|
|||||||
@@ -117,6 +117,9 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="Acceleration" xml:space="preserve">
|
||||||
|
<value>Aceleración</value>
|
||||||
|
</data>
|
||||||
<data name="ACPIError" xml:space="preserve">
|
<data name="ACPIError" xml:space="preserve">
|
||||||
<value>No se pudo conectar con ASUS ACPI. La aplicación no puede funcionar sin el recurso. Instale Asus System Control Interface</value>
|
<value>No se pudo conectar con ASUS ACPI. La aplicación no puede funcionar sin el recurso. Instale Asus System Control Interface</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -249,12 +252,18 @@
|
|||||||
<data name="BatteryHealth" xml:space="preserve">
|
<data name="BatteryHealth" xml:space="preserve">
|
||||||
<value>Salud de la batería</value>
|
<value>Salud de la batería</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BatteryLimitFull" xml:space="preserve">
|
||||||
|
<value>One time charge to 100%</value>
|
||||||
|
</data>
|
||||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||||
<value>Actualizaciones de BIOS y Drivers</value>
|
<value>Actualizaciones de BIOS y Drivers</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Boot" xml:space="preserve">
|
<data name="Boot" xml:space="preserve">
|
||||||
<value>Al arrancar</value>
|
<value>Al arrancar</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BootSound" xml:space="preserve">
|
||||||
|
<value>Sonido al arranque</value>
|
||||||
|
</data>
|
||||||
<data name="Brightness" xml:space="preserve">
|
<data name="Brightness" xml:space="preserve">
|
||||||
<value>Brillo</value>
|
<value>Brillo</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -264,6 +273,9 @@
|
|||||||
<data name="BrightnessUp" xml:space="preserve">
|
<data name="BrightnessUp" xml:space="preserve">
|
||||||
<value>Subir brillo</value>
|
<value>Subir brillo</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Calibrate" xml:space="preserve">
|
||||||
|
<value>Calibrar</value>
|
||||||
|
</data>
|
||||||
<data name="Charging" xml:space="preserve">
|
<data name="Charging" xml:space="preserve">
|
||||||
<value>Cargando</value>
|
<value>Cargando</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -276,6 +288,9 @@
|
|||||||
<data name="Custom" xml:space="preserve">
|
<data name="Custom" xml:space="preserve">
|
||||||
<value>Personalizado</value>
|
<value>Personalizado</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Deceleration" xml:space="preserve">
|
||||||
|
<value>Desaceleración</value>
|
||||||
|
</data>
|
||||||
<data name="Default" xml:space="preserve">
|
<data name="Default" xml:space="preserve">
|
||||||
<value>Por defecto</value>
|
<value>Por defecto</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -117,6 +117,9 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="Acceleration" xml:space="preserve">
|
||||||
|
<value>Accélération</value>
|
||||||
|
</data>
|
||||||
<data name="ACPIError" xml:space="preserve">
|
<data name="ACPIError" xml:space="preserve">
|
||||||
<value>Connexion impossible avec ASUS ACPI. L'application ne peut fonctionner sans. Veuillez installer Asus System Control Interface</value>
|
<value>Connexion impossible avec ASUS ACPI. L'application ne peut fonctionner sans. Veuillez installer Asus System Control Interface</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -184,7 +187,7 @@
|
|||||||
<value>Rapide</value>
|
<value>Rapide</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraLightingMode" xml:space="preserve">
|
<data name="AuraLightingMode" xml:space="preserve">
|
||||||
<value>Lighting Mode</value>
|
<value>Mode d’Éclairage</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraNormal" xml:space="preserve">
|
<data name="AuraNormal" xml:space="preserve">
|
||||||
<value>Normal</value>
|
<value>Normal</value>
|
||||||
@@ -208,7 +211,7 @@
|
|||||||
<value>Stroboscopique</value>
|
<value>Stroboscopique</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneAll" xml:space="preserve">
|
<data name="AuraZoneAll" xml:space="preserve">
|
||||||
<value>All</value>
|
<value>Tout</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneDock" xml:space="preserve">
|
<data name="AuraZoneDock" xml:space="preserve">
|
||||||
<value>Dock</value>
|
<value>Dock</value>
|
||||||
@@ -217,7 +220,7 @@
|
|||||||
<value>Logo</value>
|
<value>Logo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneScroll" xml:space="preserve">
|
<data name="AuraZoneScroll" xml:space="preserve">
|
||||||
<value>Scrollwheel</value>
|
<value>Molette</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||||
<value>Underglow</value>
|
<value>Underglow</value>
|
||||||
@@ -249,12 +252,18 @@
|
|||||||
<data name="BatteryHealth" xml:space="preserve">
|
<data name="BatteryHealth" xml:space="preserve">
|
||||||
<value>Santé de la batterie</value>
|
<value>Santé de la batterie</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BatteryLimitFull" xml:space="preserve">
|
||||||
|
<value>One time charge to 100%</value>
|
||||||
|
</data>
|
||||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||||
<value>Mise à jour BIOS et pilotes</value>
|
<value>Mise à jour BIOS et pilotes</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Boot" xml:space="preserve">
|
<data name="Boot" xml:space="preserve">
|
||||||
<value>Au démarrage</value>
|
<value>Au démarrage</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BootSound" xml:space="preserve">
|
||||||
|
<value>Boot Sound</value>
|
||||||
|
</data>
|
||||||
<data name="Brightness" xml:space="preserve">
|
<data name="Brightness" xml:space="preserve">
|
||||||
<value>Luminosité</value>
|
<value>Luminosité</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -264,6 +273,9 @@
|
|||||||
<data name="BrightnessUp" xml:space="preserve">
|
<data name="BrightnessUp" xml:space="preserve">
|
||||||
<value>Augmenter la luminosité</value>
|
<value>Augmenter la luminosité</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Calibrate" xml:space="preserve">
|
||||||
|
<value>Calibrate</value>
|
||||||
|
</data>
|
||||||
<data name="Charging" xml:space="preserve">
|
<data name="Charging" xml:space="preserve">
|
||||||
<value>Chargement en cours</value>
|
<value>Chargement en cours</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -276,6 +288,9 @@
|
|||||||
<data name="Custom" xml:space="preserve">
|
<data name="Custom" xml:space="preserve">
|
||||||
<value>Personnalisé</value>
|
<value>Personnalisé</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Deceleration" xml:space="preserve">
|
||||||
|
<value>Décélération</value>
|
||||||
|
</data>
|
||||||
<data name="Default" xml:space="preserve">
|
<data name="Default" xml:space="preserve">
|
||||||
<value>Par défaut</value>
|
<value>Par défaut</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -286,7 +301,7 @@
|
|||||||
<value>Taux décharge </value>
|
<value>Taux décharge </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DownloadUpdate" xml:space="preserve">
|
<data name="DownloadUpdate" xml:space="preserve">
|
||||||
<value>Download</value>
|
<value>Télécharger</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DriverAndSoftware" xml:space="preserve">
|
<data name="DriverAndSoftware" xml:space="preserve">
|
||||||
<value>Pilotes et Logiciels</value>
|
<value>Pilotes et Logiciels</value>
|
||||||
@@ -375,10 +390,10 @@ Voulez-vous continuer ?</value>
|
|||||||
<value>Température cible</value>
|
<value>Température cible</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="HibernateAfter" xml:space="preserve">
|
<data name="HibernateAfter" xml:space="preserve">
|
||||||
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
|
<value>Minutes jusqu'à la mise en veille prolongée sur la batterie (0 - OFF)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="High" xml:space="preserve">
|
<data name="High" xml:space="preserve">
|
||||||
<value>High</value>
|
<value>Élevé</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="KeyBindings" xml:space="preserve">
|
<data name="KeyBindings" xml:space="preserve">
|
||||||
<value>Raccourcis clavier</value>
|
<value>Raccourcis clavier</value>
|
||||||
@@ -411,7 +426,7 @@ Voulez-vous continuer ?</value>
|
|||||||
<value>Logo</value>
|
<value>Logo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Low" xml:space="preserve">
|
<data name="Low" xml:space="preserve">
|
||||||
<value>Low</value>
|
<value>Faible</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MatrixAudio" xml:space="preserve">
|
<data name="MatrixAudio" xml:space="preserve">
|
||||||
<value>Visualiseur Audio</value>
|
<value>Visualiseur Audio</value>
|
||||||
@@ -540,7 +555,7 @@ Voulez-vous continuer ?</value>
|
|||||||
<value>Quitter</value>
|
<value>Quitter</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RestartGPU" xml:space="preserve">
|
<data name="RestartGPU" xml:space="preserve">
|
||||||
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
|
<value>Un programme utilise le dGPU et empêche le passage en mode Éco. Laissez G-Helper tenter un redémarrage du dGPU dans le gestionnaire de tâches ? (Procéder à vos propres risques)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RPM" xml:space="preserve">
|
<data name="RPM" xml:space="preserve">
|
||||||
<value> RPM</value>
|
<value> RPM</value>
|
||||||
|
|||||||
@@ -117,6 +117,9 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="Acceleration" xml:space="preserve">
|
||||||
|
<value>Gyorsítás</value>
|
||||||
|
</data>
|
||||||
<data name="ACPIError" xml:space="preserve">
|
<data name="ACPIError" xml:space="preserve">
|
||||||
<value>Nem sikerült csatlakozni az ASUS ACPI-hez, az alkalmazás nem működik enélkül. Próbáld meg telepíteni az ASUS rendszervezérlő interfész-t</value>
|
<value>Nem sikerült csatlakozni az ASUS ACPI-hez, az alkalmazás nem működik enélkül. Próbáld meg telepíteni az ASUS rendszervezérlő interfész-t</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -163,28 +166,28 @@
|
|||||||
<value>Asus szolgáltatások futnak</value>
|
<value>Asus szolgáltatások futnak</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraBatteryState" xml:space="preserve">
|
<data name="AuraBatteryState" xml:space="preserve">
|
||||||
<value>Battery State</value>
|
<value>Akkuállapot</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraBreathe" xml:space="preserve">
|
<data name="AuraBreathe" xml:space="preserve">
|
||||||
<value>Lélegző</value>
|
<value>Lélegző</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraClockwise" xml:space="preserve">
|
<data name="AuraClockwise" xml:space="preserve">
|
||||||
<value>Clockwise</value>
|
<value>Jobbra forog</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraColorCycle" xml:space="preserve">
|
<data name="AuraColorCycle" xml:space="preserve">
|
||||||
<value>Színváltás</value>
|
<value>Színváltás</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraComet" xml:space="preserve">
|
<data name="AuraComet" xml:space="preserve">
|
||||||
<value>Comet</value>
|
<value>Üstökös</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraCounterClockwise" xml:space="preserve">
|
<data name="AuraCounterClockwise" xml:space="preserve">
|
||||||
<value>Counterclockwise</value>
|
<value>Balra forog</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraFast" xml:space="preserve">
|
<data name="AuraFast" xml:space="preserve">
|
||||||
<value>Gyors</value>
|
<value>Gyors</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraLightingMode" xml:space="preserve">
|
<data name="AuraLightingMode" xml:space="preserve">
|
||||||
<value>Lighting Mode</value>
|
<value>Világítás típusa</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraNormal" xml:space="preserve">
|
<data name="AuraNormal" xml:space="preserve">
|
||||||
<value>Normál</value>
|
<value>Normál</value>
|
||||||
@@ -193,10 +196,10 @@
|
|||||||
<value>Szivárvány</value>
|
<value>Szivárvány</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraRandomColor" xml:space="preserve">
|
<data name="AuraRandomColor" xml:space="preserve">
|
||||||
<value>Random</value>
|
<value>Véletlen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraReact" xml:space="preserve">
|
<data name="AuraReact" xml:space="preserve">
|
||||||
<value>React</value>
|
<value>Reagál</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraSlow" xml:space="preserve">
|
<data name="AuraSlow" xml:space="preserve">
|
||||||
<value>Lassú</value>
|
<value>Lassú</value>
|
||||||
@@ -208,16 +211,16 @@
|
|||||||
<value>Stroboszkóp</value>
|
<value>Stroboszkóp</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneAll" xml:space="preserve">
|
<data name="AuraZoneAll" xml:space="preserve">
|
||||||
<value>All</value>
|
<value>Mindegyik</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneDock" xml:space="preserve">
|
<data name="AuraZoneDock" xml:space="preserve">
|
||||||
<value>Dock</value>
|
<value>Dokk</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneLogo" xml:space="preserve">
|
<data name="AuraZoneLogo" xml:space="preserve">
|
||||||
<value>Logo</value>
|
<value>Logó</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneScroll" xml:space="preserve">
|
<data name="AuraZoneScroll" xml:space="preserve">
|
||||||
<value>Scrollwheel</value>
|
<value>Görgetés</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||||
<value>Underglow</value>
|
<value>Underglow</value>
|
||||||
@@ -235,19 +238,22 @@
|
|||||||
<value>Ébren</value>
|
<value>Ébren</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BacklightTimeout" xml:space="preserve">
|
<data name="BacklightTimeout" xml:space="preserve">
|
||||||
<value>Timeout plugged / on battery (0 - ON)</value>
|
<value>Késleltetés töltés / akku módban (0 - BE)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Balanced" xml:space="preserve">
|
<data name="Balanced" xml:space="preserve">
|
||||||
<value>Teljesítmény</value>
|
<value>Teljesítmény</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BatteryCharge" xml:space="preserve">
|
<data name="BatteryCharge" xml:space="preserve">
|
||||||
<value>Charge</value>
|
<value>Töltés</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||||
<value>Töltési korlát</value>
|
<value>Töltési korlát</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BatteryHealth" xml:space="preserve">
|
<data name="BatteryHealth" xml:space="preserve">
|
||||||
<value>Battery Health</value>
|
<value>Akku állapot</value>
|
||||||
|
</data>
|
||||||
|
<data name="BatteryLimitFull" xml:space="preserve">
|
||||||
|
<value>One time charge to 100%</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||||
<value>BIOS és illesztőprogram frissítések</value>
|
<value>BIOS és illesztőprogram frissítések</value>
|
||||||
@@ -255,6 +261,9 @@
|
|||||||
<data name="Boot" xml:space="preserve">
|
<data name="Boot" xml:space="preserve">
|
||||||
<value>Rendszerbetöltés</value>
|
<value>Rendszerbetöltés</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BootSound" xml:space="preserve">
|
||||||
|
<value>Rendszerindítási hang</value>
|
||||||
|
</data>
|
||||||
<data name="Brightness" xml:space="preserve">
|
<data name="Brightness" xml:space="preserve">
|
||||||
<value>Fényerő</value>
|
<value>Fényerő</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -264,8 +273,11 @@
|
|||||||
<data name="BrightnessUp" xml:space="preserve">
|
<data name="BrightnessUp" xml:space="preserve">
|
||||||
<value>Fényerő növelése</value>
|
<value>Fényerő növelése</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Calibrate" xml:space="preserve">
|
||||||
|
<value>Kalibrálás</value>
|
||||||
|
</data>
|
||||||
<data name="Charging" xml:space="preserve">
|
<data name="Charging" xml:space="preserve">
|
||||||
<value>Charging</value>
|
<value>Töltés</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Color" xml:space="preserve">
|
<data name="Color" xml:space="preserve">
|
||||||
<value>Szín</value>
|
<value>Szín</value>
|
||||||
@@ -276,6 +288,9 @@
|
|||||||
<data name="Custom" xml:space="preserve">
|
<data name="Custom" xml:space="preserve">
|
||||||
<value>Egyéni</value>
|
<value>Egyéni</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Deceleration" xml:space="preserve">
|
||||||
|
<value>Lassítás</value>
|
||||||
|
</data>
|
||||||
<data name="Default" xml:space="preserve">
|
<data name="Default" xml:space="preserve">
|
||||||
<value>Alapért.</value>
|
<value>Alapért.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -286,7 +301,7 @@
|
|||||||
<value>Merülés</value>
|
<value>Merülés</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DownloadUpdate" xml:space="preserve">
|
<data name="DownloadUpdate" xml:space="preserve">
|
||||||
<value>Download</value>
|
<value>Letöltés</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DriverAndSoftware" xml:space="preserve">
|
<data name="DriverAndSoftware" xml:space="preserve">
|
||||||
<value>Illesztőprogramok és alkalmazások</value>
|
<value>Illesztőprogramok és alkalmazások</value>
|
||||||
@@ -306,7 +321,7 @@ Do you still want to continue?</value>
|
|||||||
<value>NVIDIA kijelzőmód nincs Optimus-ra állítva</value>
|
<value>NVIDIA kijelzőmód nincs Optimus-ra állítva</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnergySettings" xml:space="preserve">
|
<data name="EnergySettings" xml:space="preserve">
|
||||||
<value>Energy Settings</value>
|
<value>Energia beállítások</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Extra" xml:space="preserve">
|
<data name="Extra" xml:space="preserve">
|
||||||
<value>Extra</value>
|
<value>Extra</value>
|
||||||
@@ -342,7 +357,7 @@ Do you still want to continue?</value>
|
|||||||
<value>Venti + energia</value>
|
<value>Venti + energia</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FnLock" xml:space="preserve">
|
<data name="FnLock" xml:space="preserve">
|
||||||
<value>Process Fn+F hotkeys without Fn</value>
|
<value>Fn + F gyorsgombok feldolgozása Fn nélkül</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GPUBoost" xml:space="preserve">
|
<data name="GPUBoost" xml:space="preserve">
|
||||||
<value>Dinamikus gyorsítás</value>
|
<value>Dinamikus gyorsítás</value>
|
||||||
@@ -375,10 +390,10 @@ Do you still want to continue?</value>
|
|||||||
<value>Célhőmérséklet</value>
|
<value>Célhőmérséklet</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="HibernateAfter" xml:space="preserve">
|
<data name="HibernateAfter" xml:space="preserve">
|
||||||
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
|
<value>Akku módban az alvó módból Hibernálásig eltelt idő (0 - KI)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="High" xml:space="preserve">
|
<data name="High" xml:space="preserve">
|
||||||
<value>High</value>
|
<value>Magas</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="KeyBindings" xml:space="preserve">
|
<data name="KeyBindings" xml:space="preserve">
|
||||||
<value>Gyorsbillentyűk</value>
|
<value>Gyorsbillentyűk</value>
|
||||||
@@ -387,7 +402,7 @@ Do you still want to continue?</value>
|
|||||||
<value>Billentyűzet</value>
|
<value>Billentyűzet</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="KillGpuApps" xml:space="preserve">
|
<data name="KillGpuApps" xml:space="preserve">
|
||||||
<value>Stop all apps using GPU when switching to Eco</value>
|
<value>Eco módba lépéskor minden alkalmazást leállít, ami a GPU-t használja</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LaptopBacklight" xml:space="preserve">
|
<data name="LaptopBacklight" xml:space="preserve">
|
||||||
<value>Laptop háttérvilágítás</value>
|
<value>Laptop háttérvilágítás</value>
|
||||||
@@ -405,19 +420,19 @@ Do you still want to continue?</value>
|
|||||||
<value>Fénysáv</value>
|
<value>Fénysáv</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Lighting" xml:space="preserve">
|
<data name="Lighting" xml:space="preserve">
|
||||||
<value>Lighting</value>
|
<value>Világítás</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Logo" xml:space="preserve">
|
<data name="Logo" xml:space="preserve">
|
||||||
<value>Logó</value>
|
<value>Logó</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Low" xml:space="preserve">
|
<data name="Low" xml:space="preserve">
|
||||||
<value>Low</value>
|
<value>Alacsony</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MatrixAudio" xml:space="preserve">
|
<data name="MatrixAudio" xml:space="preserve">
|
||||||
<value>Hang vizualizáció</value>
|
<value>Hang vizualizáció</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MatrixBanner" xml:space="preserve">
|
<data name="MatrixBanner" xml:space="preserve">
|
||||||
<value>Binary Banner</value>
|
<value>Bináris logó</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MatrixBright" xml:space="preserve">
|
<data name="MatrixBright" xml:space="preserve">
|
||||||
<value>Fényes</value>
|
<value>Fényes</value>
|
||||||
@@ -447,19 +462,19 @@ Do you still want to continue?</value>
|
|||||||
<value>60Hz-s frissítési gyakoriság, hogy spóroljon az akkuval</value>
|
<value>60Hz-s frissítési gyakoriság, hogy spóroljon az akkuval</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Minute" xml:space="preserve">
|
<data name="Minute" xml:space="preserve">
|
||||||
<value>Minute</value>
|
<value>perc</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Minutes" xml:space="preserve">
|
<data name="Minutes" xml:space="preserve">
|
||||||
<value>Minutes</value>
|
<value>perc</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MouseAngleSnapping" xml:space="preserve">
|
<data name="MouseAngleSnapping" xml:space="preserve">
|
||||||
<value>Angle Snapping</value>
|
<value>Angle Snapping</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||||
<value>Auto Power Off After</value>
|
<value>Automatikus kikapcsolás idő múlva</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MouseButtonResponse" xml:space="preserve">
|
<data name="MouseButtonResponse" xml:space="preserve">
|
||||||
<value>Button Response</value>
|
<value>Gomb funkciója</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||||
<value>Lift Off Distance</value>
|
<value>Lift Off Distance</value>
|
||||||
@@ -468,10 +483,10 @@ Do you still want to continue?</value>
|
|||||||
<value>Low Battery Warning at</value>
|
<value>Low Battery Warning at</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MousePerformance" xml:space="preserve">
|
<data name="MousePerformance" xml:space="preserve">
|
||||||
<value>Performance</value>
|
<value>Teljesítmény</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MouseSynchronize" xml:space="preserve">
|
<data name="MouseSynchronize" xml:space="preserve">
|
||||||
<value>Synchronize with mouse</value>
|
<value>Szinkronizálás egérrel</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Multizone" xml:space="preserve">
|
<data name="Multizone" xml:space="preserve">
|
||||||
<value>Többzónás</value>
|
<value>Többzónás</value>
|
||||||
@@ -480,7 +495,7 @@ Do you still want to continue?</value>
|
|||||||
<value>Mikrofon némítása</value>
|
<value>Mikrofon némítása</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Never" xml:space="preserve">
|
<data name="Never" xml:space="preserve">
|
||||||
<value>Never</value>
|
<value>Soha</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NewUpdates" xml:space="preserve">
|
<data name="NewUpdates" xml:space="preserve">
|
||||||
<value>Új frissítés</value>
|
<value>Új frissítés</value>
|
||||||
@@ -489,7 +504,7 @@ Do you still want to continue?</value>
|
|||||||
<value>Nincs új frissítés</value>
|
<value>Nincs új frissítés</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NotConnected" xml:space="preserve">
|
<data name="NotConnected" xml:space="preserve">
|
||||||
<value>Not Connected</value>
|
<value>Nincs csatlakoztatva</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OpenGHelper" xml:space="preserve">
|
<data name="OpenGHelper" xml:space="preserve">
|
||||||
<value>G-Helper ablak megnyitása</value>
|
<value>G-Helper ablak megnyitása</value>
|
||||||
@@ -498,7 +513,7 @@ Do you still want to continue?</value>
|
|||||||
<value>Optimalizált</value>
|
<value>Optimalizált</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OptimizedGPUTooltip" xml:space="preserve">
|
<data name="OptimizedGPUTooltip" xml:space="preserve">
|
||||||
<value>Akkus módban váltson Eco módra, töltés közben pedig Standard-ra</value>
|
<value>Akkus módban váltson Eco módra, töltéskor pedig Standard-ra</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OptimizedUSBC" xml:space="preserve">
|
<data name="OptimizedUSBC" xml:space="preserve">
|
||||||
<value>Optimalizált módban USB-C-s töltés közben tartsa letiltva a GPU-t</value>
|
<value>Optimalizált módban USB-C-s töltés közben tartsa letiltva a GPU-t</value>
|
||||||
@@ -513,7 +528,7 @@ Do you still want to continue?</value>
|
|||||||
<value>Üzemmód</value>
|
<value>Üzemmód</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Peripherals" xml:space="preserve">
|
<data name="Peripherals" xml:space="preserve">
|
||||||
<value>Peripherals</value>
|
<value>Perifériák</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PictureGif" xml:space="preserve">
|
<data name="PictureGif" xml:space="preserve">
|
||||||
<value>Kép / Gif</value>
|
<value>Kép / Gif</value>
|
||||||
@@ -534,19 +549,19 @@ Do you still want to continue?</value>
|
|||||||
<value>PrintScreen</value>
|
<value>PrintScreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Profile" xml:space="preserve">
|
<data name="Profile" xml:space="preserve">
|
||||||
<value>Profile</value>
|
<value>Profil</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Quit" xml:space="preserve">
|
<data name="Quit" xml:space="preserve">
|
||||||
<value>Bezárás</value>
|
<value>Bezárás</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RestartGPU" xml:space="preserve">
|
<data name="RestartGPU" xml:space="preserve">
|
||||||
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
|
<value>Valami használja még a dGPU-t, ezzel megakadályozva az Eco móda lépést. Próbálja meg a G-Helper újraindítani a dGPU-t az eszközkezelőben? (Kérjük, saját felelősségére folytassa)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RPM" xml:space="preserve">
|
<data name="RPM" xml:space="preserve">
|
||||||
<value>Fordulatszám</value>
|
<value>Fordulatszám</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RunOnStartup" xml:space="preserve">
|
<data name="RunOnStartup" xml:space="preserve">
|
||||||
<value>Futtatás rendszerindításkor</value>
|
<value>Indítás a rendszerrel</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ScreenPadDown" xml:space="preserve">
|
<data name="ScreenPadDown" xml:space="preserve">
|
||||||
<value>Screenpad Brightness Down</value>
|
<value>Screenpad Brightness Down</value>
|
||||||
@@ -612,7 +627,7 @@ Do you still want to continue?</value>
|
|||||||
<value>Akkus üzemmódban kikapcsol</value>
|
<value>Akkus üzemmódban kikapcsol</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UltimateGPUTooltip" xml:space="preserve">
|
<data name="UltimateGPUTooltip" xml:space="preserve">
|
||||||
<value>Routes laptop screen to dGPU, maximizing FPS</value>
|
<value>A jobb FPS érdekében a laptop kijelzőt közvetlenül a GPU-n keresztül működteti</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UltimateMode" xml:space="preserve">
|
<data name="UltimateMode" xml:space="preserve">
|
||||||
<value>Ultimate</value>
|
<value>Ultimate</value>
|
||||||
|
|||||||
@@ -117,8 +117,11 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="Acceleration" xml:space="preserve">
|
||||||
|
<value>Accelerazione</value>
|
||||||
|
</data>
|
||||||
<data name="ACPIError" xml:space="preserve">
|
<data name="ACPIError" xml:space="preserve">
|
||||||
<value>Impossibile connettersi ad ASUS ACPI. Senza di essa l'applicazione non può funzionare. Prova a installare Asus Satem Contro Interfacce</value>
|
<value>Impossibile connettersi ad ASUS ACPI. Senza di essa l'applicazione non può funzionare. Prova ad installare Asus System Control Interface</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AlertDGPU" xml:space="preserve">
|
<data name="AlertDGPU" xml:space="preserve">
|
||||||
<value>Uso intensivo della GPU, disabilitare?</value>
|
<value>Uso intensivo della GPU, disabilitare?</value>
|
||||||
@@ -249,12 +252,18 @@
|
|||||||
<data name="BatteryHealth" xml:space="preserve">
|
<data name="BatteryHealth" xml:space="preserve">
|
||||||
<value>Salute Batteria</value>
|
<value>Salute Batteria</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BatteryLimitFull" xml:space="preserve">
|
||||||
|
<value>One time charge to 100%</value>
|
||||||
|
</data>
|
||||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||||
<value>Aggiornamenti Driver e BIOS</value>
|
<value>Aggiornamenti Driver e BIOS</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Boot" xml:space="preserve">
|
<data name="Boot" xml:space="preserve">
|
||||||
<value>Avvio</value>
|
<value>Avvio</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BootSound" xml:space="preserve">
|
||||||
|
<value>Boot Sound</value>
|
||||||
|
</data>
|
||||||
<data name="Brightness" xml:space="preserve">
|
<data name="Brightness" xml:space="preserve">
|
||||||
<value>Luminosità</value>
|
<value>Luminosità</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -264,6 +273,9 @@
|
|||||||
<data name="BrightnessUp" xml:space="preserve">
|
<data name="BrightnessUp" xml:space="preserve">
|
||||||
<value>Aumenta Luminosità</value>
|
<value>Aumenta Luminosità</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Calibrate" xml:space="preserve">
|
||||||
|
<value>Calibrate</value>
|
||||||
|
</data>
|
||||||
<data name="Charging" xml:space="preserve">
|
<data name="Charging" xml:space="preserve">
|
||||||
<value>In carica</value>
|
<value>In carica</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -276,6 +288,9 @@
|
|||||||
<data name="Custom" xml:space="preserve">
|
<data name="Custom" xml:space="preserve">
|
||||||
<value>Personalizzato</value>
|
<value>Personalizzato</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Deceleration" xml:space="preserve">
|
||||||
|
<value>Decelerazione</value>
|
||||||
|
</data>
|
||||||
<data name="Default" xml:space="preserve">
|
<data name="Default" xml:space="preserve">
|
||||||
<value>Default</value>
|
<value>Default</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -117,6 +117,9 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="Acceleration" xml:space="preserve">
|
||||||
|
<value>Acceleration</value>
|
||||||
|
</data>
|
||||||
<data name="ACPIError" xml:space="preserve">
|
<data name="ACPIError" xml:space="preserve">
|
||||||
<value>ASUS ACPI에 연결할 수 없어 응용 프로그램이 작동하지 않습니다. Asus System Control Interface를 먼저 설치하십시오.</value>
|
<value>ASUS ACPI에 연결할 수 없어 응용 프로그램이 작동하지 않습니다. Asus System Control Interface를 먼저 설치하십시오.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -163,64 +166,64 @@
|
|||||||
<value>실행중인 Asus 서비스</value>
|
<value>실행중인 Asus 서비스</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraBatteryState" xml:space="preserve">
|
<data name="AuraBatteryState" xml:space="preserve">
|
||||||
<value>Battery State</value>
|
<value>배터리 상태</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraBreathe" xml:space="preserve">
|
<data name="AuraBreathe" xml:space="preserve">
|
||||||
<value>Breathe</value>
|
<value>숨쉬기</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraClockwise" xml:space="preserve">
|
<data name="AuraClockwise" xml:space="preserve">
|
||||||
<value>Clockwise</value>
|
<value>시계 방향</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraColorCycle" xml:space="preserve">
|
<data name="AuraColorCycle" xml:space="preserve">
|
||||||
<value>Color Cycle</value>
|
<value>색 순환</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraComet" xml:space="preserve">
|
<data name="AuraComet" xml:space="preserve">
|
||||||
<value>Comet</value>
|
<value>혜성</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraCounterClockwise" xml:space="preserve">
|
<data name="AuraCounterClockwise" xml:space="preserve">
|
||||||
<value>Counterclockwise</value>
|
<value>반시계 방향</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraFast" xml:space="preserve">
|
<data name="AuraFast" xml:space="preserve">
|
||||||
<value>빠르게</value>
|
<value>빠르게</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraLightingMode" xml:space="preserve">
|
<data name="AuraLightingMode" xml:space="preserve">
|
||||||
<value>Lighting Mode</value>
|
<value>조명 모드</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraNormal" xml:space="preserve">
|
<data name="AuraNormal" xml:space="preserve">
|
||||||
<value>보통</value>
|
<value>보통</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraRainbow" xml:space="preserve">
|
<data name="AuraRainbow" xml:space="preserve">
|
||||||
<value>Rainbow</value>
|
<value>무지개</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraRandomColor" xml:space="preserve">
|
<data name="AuraRandomColor" xml:space="preserve">
|
||||||
<value>Random</value>
|
<value>랜덤</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraReact" xml:space="preserve">
|
<data name="AuraReact" xml:space="preserve">
|
||||||
<value>React</value>
|
<value>반응</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraSlow" xml:space="preserve">
|
<data name="AuraSlow" xml:space="preserve">
|
||||||
<value>느리게</value>
|
<value>느리게</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraStatic" xml:space="preserve">
|
<data name="AuraStatic" xml:space="preserve">
|
||||||
<value>Static</value>
|
<value>정적</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraStrobe" xml:space="preserve">
|
<data name="AuraStrobe" xml:space="preserve">
|
||||||
<value>Strobe</value>
|
<value>섬광</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneAll" xml:space="preserve">
|
<data name="AuraZoneAll" xml:space="preserve">
|
||||||
<value>All</value>
|
<value>전체</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneDock" xml:space="preserve">
|
<data name="AuraZoneDock" xml:space="preserve">
|
||||||
<value>Dock</value>
|
<value>독</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneLogo" xml:space="preserve">
|
<data name="AuraZoneLogo" xml:space="preserve">
|
||||||
<value>Logo</value>
|
<value>로고</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneScroll" xml:space="preserve">
|
<data name="AuraZoneScroll" xml:space="preserve">
|
||||||
<value>Scrollwheel</value>
|
<value>스크롤 휠</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||||
<value>Underglow</value>
|
<value>하단 조명</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutoApply" xml:space="preserve">
|
<data name="AutoApply" xml:space="preserve">
|
||||||
<value>자동 적용</value>
|
<value>자동 적용</value>
|
||||||
@@ -232,28 +235,34 @@
|
|||||||
<value>배터리 사용 중에만 60Hz 설정</value>
|
<value>배터리 사용 중에만 60Hz 설정</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Awake" xml:space="preserve">
|
<data name="Awake" xml:space="preserve">
|
||||||
<value>Awake</value>
|
<value>절전 모드 해제</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BacklightTimeout" xml:space="preserve">
|
<data name="BacklightTimeout" xml:space="preserve">
|
||||||
<value>전원 연결 / 배터리 사용 중 자동 꺼짐 시간 (0 - 항상 켜짐)</value>
|
<value>전원 / 배터리 사용 중 자동 꺼짐 시간 (0 - 항상 켜짐)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Balanced" xml:space="preserve">
|
<data name="Balanced" xml:space="preserve">
|
||||||
<value>균형</value>
|
<value>균형</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BatteryCharge" xml:space="preserve">
|
<data name="BatteryCharge" xml:space="preserve">
|
||||||
<value>Charge</value>
|
<value>잔량</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||||
<value>배터리 충전 제한</value>
|
<value>배터리 충전 제한</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BatteryHealth" xml:space="preserve">
|
<data name="BatteryHealth" xml:space="preserve">
|
||||||
<value>Battery Health</value>
|
<value>배터리 수명</value>
|
||||||
|
</data>
|
||||||
|
<data name="BatteryLimitFull" xml:space="preserve">
|
||||||
|
<value>One time charge to 100%</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||||
<value>바이오스/드라이버 업데이트</value>
|
<value>바이오스/드라이버 업데이트</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Boot" xml:space="preserve">
|
<data name="Boot" xml:space="preserve">
|
||||||
<value>Boot</value>
|
<value>부팅</value>
|
||||||
|
</data>
|
||||||
|
<data name="BootSound" xml:space="preserve">
|
||||||
|
<value>Boot Sound</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Brightness" xml:space="preserve">
|
<data name="Brightness" xml:space="preserve">
|
||||||
<value>밝기</value>
|
<value>밝기</value>
|
||||||
@@ -264,8 +273,11 @@
|
|||||||
<data name="BrightnessUp" xml:space="preserve">
|
<data name="BrightnessUp" xml:space="preserve">
|
||||||
<value>밝기 증가</value>
|
<value>밝기 증가</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Calibrate" xml:space="preserve">
|
||||||
|
<value>Calibrate</value>
|
||||||
|
</data>
|
||||||
<data name="Charging" xml:space="preserve">
|
<data name="Charging" xml:space="preserve">
|
||||||
<value>Charging</value>
|
<value>충전 중</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Color" xml:space="preserve">
|
<data name="Color" xml:space="preserve">
|
||||||
<value>색상</value>
|
<value>색상</value>
|
||||||
@@ -276,6 +288,9 @@
|
|||||||
<data name="Custom" xml:space="preserve">
|
<data name="Custom" xml:space="preserve">
|
||||||
<value>사용자 설정</value>
|
<value>사용자 설정</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Deceleration" xml:space="preserve">
|
||||||
|
<value>Deceleration</value>
|
||||||
|
</data>
|
||||||
<data name="Default" xml:space="preserve">
|
<data name="Default" xml:space="preserve">
|
||||||
<value>기본</value>
|
<value>기본</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -286,7 +301,7 @@
|
|||||||
<value>방전 중</value>
|
<value>방전 중</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DownloadUpdate" xml:space="preserve">
|
<data name="DownloadUpdate" xml:space="preserve">
|
||||||
<value>Download</value>
|
<value>다운로드</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DriverAndSoftware" xml:space="preserve">
|
<data name="DriverAndSoftware" xml:space="preserve">
|
||||||
<value>드라이버와 소프트웨어</value>
|
<value>드라이버와 소프트웨어</value>
|
||||||
@@ -336,7 +351,7 @@
|
|||||||
<value>팬 속도/전력</value>
|
<value>팬 속도/전력</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FanSpeed" xml:space="preserve">
|
<data name="FanSpeed" xml:space="preserve">
|
||||||
<value>Fan</value>
|
<value>팬</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FansPower" xml:space="preserve">
|
<data name="FansPower" xml:space="preserve">
|
||||||
<value>팬 + 전력</value>
|
<value>팬 + 전력</value>
|
||||||
@@ -375,10 +390,10 @@
|
|||||||
<value>목표 온도</value>
|
<value>목표 온도</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="HibernateAfter" xml:space="preserve">
|
<data name="HibernateAfter" xml:space="preserve">
|
||||||
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
|
<value>최대 절전 모드 전환 시간 (0 - 꺼짐)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="High" xml:space="preserve">
|
<data name="High" xml:space="preserve">
|
||||||
<value>High</value>
|
<value>높게</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="KeyBindings" xml:space="preserve">
|
<data name="KeyBindings" xml:space="preserve">
|
||||||
<value>키 설정</value>
|
<value>키 설정</value>
|
||||||
@@ -405,13 +420,13 @@
|
|||||||
<value>라이트바</value>
|
<value>라이트바</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Lighting" xml:space="preserve">
|
<data name="Lighting" xml:space="preserve">
|
||||||
<value>Lighting</value>
|
<value>조명</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Logo" xml:space="preserve">
|
<data name="Logo" xml:space="preserve">
|
||||||
<value>로고</value>
|
<value>로고</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Low" xml:space="preserve">
|
<data name="Low" xml:space="preserve">
|
||||||
<value>Low</value>
|
<value>낮게</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MatrixAudio" xml:space="preserve">
|
<data name="MatrixAudio" xml:space="preserve">
|
||||||
<value>오디오 비주얼라이저</value>
|
<value>오디오 비주얼라이저</value>
|
||||||
@@ -447,31 +462,31 @@
|
|||||||
<value>60Hz 주사율 설정</value>
|
<value>60Hz 주사율 설정</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Minute" xml:space="preserve">
|
<data name="Minute" xml:space="preserve">
|
||||||
<value>Minute</value>
|
<value>분 후</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Minutes" xml:space="preserve">
|
<data name="Minutes" xml:space="preserve">
|
||||||
<value>Minutes</value>
|
<value>분 후</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MouseAngleSnapping" xml:space="preserve">
|
<data name="MouseAngleSnapping" xml:space="preserve">
|
||||||
<value>Angle Snapping</value>
|
<value>직선 보정</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||||
<value>Auto Power Off After</value>
|
<value>자동 전원 꺼짐</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MouseButtonResponse" xml:space="preserve">
|
<data name="MouseButtonResponse" xml:space="preserve">
|
||||||
<value>Button Response</value>
|
<value>버튼 응답</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||||
<value>Lift Off Distance</value>
|
<value>들어올림 거리</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MouseLowBatteryWarning" xml:space="preserve">
|
<data name="MouseLowBatteryWarning" xml:space="preserve">
|
||||||
<value>Low Battery Warning at</value>
|
<value>배터리 부족 경고 알림</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MousePerformance" xml:space="preserve">
|
<data name="MousePerformance" xml:space="preserve">
|
||||||
<value>Performance</value>
|
<value>성능</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MouseSynchronize" xml:space="preserve">
|
<data name="MouseSynchronize" xml:space="preserve">
|
||||||
<value>Synchronize with mouse</value>
|
<value>마우스와 동기화</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Multizone" xml:space="preserve">
|
<data name="Multizone" xml:space="preserve">
|
||||||
<value>멀티존</value>
|
<value>멀티존</value>
|
||||||
@@ -480,7 +495,7 @@
|
|||||||
<value>마이크 음소거</value>
|
<value>마이크 음소거</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Never" xml:space="preserve">
|
<data name="Never" xml:space="preserve">
|
||||||
<value>Never</value>
|
<value>사용 안함</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NewUpdates" xml:space="preserve">
|
<data name="NewUpdates" xml:space="preserve">
|
||||||
<value>새 업데이트</value>
|
<value>새 업데이트</value>
|
||||||
@@ -489,7 +504,7 @@
|
|||||||
<value>새 업데이트 없음</value>
|
<value>새 업데이트 없음</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NotConnected" xml:space="preserve">
|
<data name="NotConnected" xml:space="preserve">
|
||||||
<value>Not Connected</value>
|
<value>연결되지 않음</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OpenGHelper" xml:space="preserve">
|
<data name="OpenGHelper" xml:space="preserve">
|
||||||
<value>G-Helper 열기</value>
|
<value>G-Helper 열기</value>
|
||||||
@@ -513,7 +528,7 @@
|
|||||||
<value>성능 모드</value>
|
<value>성능 모드</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Peripherals" xml:space="preserve">
|
<data name="Peripherals" xml:space="preserve">
|
||||||
<value>Peripherals</value>
|
<value>주변 장치</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PictureGif" xml:space="preserve">
|
<data name="PictureGif" xml:space="preserve">
|
||||||
<value>사진 / Gif</value>
|
<value>사진 / Gif</value>
|
||||||
@@ -522,7 +537,7 @@
|
|||||||
<value>재생 / 정지</value>
|
<value>재생 / 정지</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PollingRate" xml:space="preserve">
|
<data name="PollingRate" xml:space="preserve">
|
||||||
<value>Polling Rate</value>
|
<value>폴링레이트</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PowerLimits" xml:space="preserve">
|
<data name="PowerLimits" xml:space="preserve">
|
||||||
<value>전력 제한</value>
|
<value>전력 제한</value>
|
||||||
@@ -534,13 +549,13 @@
|
|||||||
<value>PrintScreen</value>
|
<value>PrintScreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Profile" xml:space="preserve">
|
<data name="Profile" xml:space="preserve">
|
||||||
<value>Profile</value>
|
<value>프로필</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Quit" xml:space="preserve">
|
<data name="Quit" xml:space="preserve">
|
||||||
<value>종료</value>
|
<value>종료</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RestartGPU" xml:space="preserve">
|
<data name="RestartGPU" xml:space="preserve">
|
||||||
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
|
<value>dGPU가 사용중이기 때문에 Eco 모드로 전환할 수 없습니다. 장치 관리자에서 dGPU를 재시작하시겠습니까?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RPM" xml:space="preserve">
|
<data name="RPM" xml:space="preserve">
|
||||||
<value>RPM</value>
|
<value>RPM</value>
|
||||||
@@ -555,13 +570,13 @@
|
|||||||
<value>Screenpad 밝기 증가</value>
|
<value>Screenpad 밝기 증가</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Shutdown" xml:space="preserve">
|
<data name="Shutdown" xml:space="preserve">
|
||||||
<value>꺼짐</value>
|
<value>시스템 종료</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Silent" xml:space="preserve">
|
<data name="Silent" xml:space="preserve">
|
||||||
<value>조용</value>
|
<value>조용</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Sleep" xml:space="preserve">
|
<data name="Sleep" xml:space="preserve">
|
||||||
<value>Sleep</value>
|
<value>절전 모드</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="StandardGPUTooltip" xml:space="preserve">
|
<data name="StandardGPUTooltip" xml:space="preserve">
|
||||||
<value>Standard 모드에서 dGPU 켜기</value>
|
<value>Standard 모드에서 dGPU 켜기</value>
|
||||||
@@ -588,19 +603,19 @@
|
|||||||
<value>서비스 중지 중</value>
|
<value>서비스 중지 중</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ToggleAura" xml:space="preserve">
|
<data name="ToggleAura" xml:space="preserve">
|
||||||
<value>Aura 토글 키</value>
|
<value>Aura 전환 키</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ToggleClamshellMode" xml:space="preserve">
|
<data name="ToggleClamshellMode" xml:space="preserve">
|
||||||
<value>Auto Toggle Clamshell Mode</value>
|
<value>클램쉘 모드 자동 전환</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ToggleFnLock" xml:space="preserve">
|
<data name="ToggleFnLock" xml:space="preserve">
|
||||||
<value>Fn-Lock 토글 키</value>
|
<value>Fn-Lock 전환 키</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ToggleMiniled" xml:space="preserve">
|
<data name="ToggleMiniled" xml:space="preserve">
|
||||||
<value>Miniled 토글 키 (지원하는 기기만)</value>
|
<value>Miniled 전환 키 (지원하는 기기만)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ToggleScreen" xml:space="preserve">
|
<data name="ToggleScreen" xml:space="preserve">
|
||||||
<value>화면 토글 키</value>
|
<value>화면 전환 키</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>터보</value>
|
<value>터보</value>
|
||||||
@@ -618,7 +633,7 @@
|
|||||||
<value>Ultimate</value>
|
<value>Ultimate</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UndervoltingRisky" xml:space="preserve">
|
<data name="UndervoltingRisky" xml:space="preserve">
|
||||||
<value>언더볼팅은 실험적이며 위험한 기능입니다. 적용 값이 너무 낮은 경우 시스템이 불안정해지고, 종료되거나 데이터 손상을 유발할 수 있습니다. 작은 값부터 적용하여 잘 작동하는지 확인해 보십시오.</value>
|
<value>언더볼팅은 실험적이며 위험한 기능입니다. 적용 값이 너무 낮은 경우 시스템이 불안정해지고, 강제 종료되거나 데이터 손상을 유발할 수 있습니다. 낮은 값부터 적용하여 잘 작동하는지 확인해 보십시오.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Updates" xml:space="preserve">
|
<data name="Updates" xml:space="preserve">
|
||||||
<value>업데이트</value>
|
<value>업데이트</value>
|
||||||
|
|||||||
@@ -117,6 +117,9 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="Acceleration" xml:space="preserve">
|
||||||
|
<value>Greitėjimas</value>
|
||||||
|
</data>
|
||||||
<data name="ACPIError" xml:space="preserve">
|
<data name="ACPIError" xml:space="preserve">
|
||||||
<value>Nepavyko prisijungti prie ASUS ACPI. Programėlė be jo negali veikti. Pabandykite įdiegti Asus System Control Interface</value>
|
<value>Nepavyko prisijungti prie ASUS ACPI. Programėlė be jo negali veikti. Pabandykite įdiegti Asus System Control Interface</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -249,12 +252,18 @@
|
|||||||
<data name="BatteryHealth" xml:space="preserve">
|
<data name="BatteryHealth" xml:space="preserve">
|
||||||
<value>Sveikata</value>
|
<value>Sveikata</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BatteryLimitFull" xml:space="preserve">
|
||||||
|
<value>One time charge to 100%</value>
|
||||||
|
</data>
|
||||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||||
<value>BIOS ir tvarkyklių naujinimai</value>
|
<value>BIOS ir tvarkyklių naujinimai</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Boot" xml:space="preserve">
|
<data name="Boot" xml:space="preserve">
|
||||||
<value>Paleidimas</value>
|
<value>Paleidimas</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BootSound" xml:space="preserve">
|
||||||
|
<value>Paleidimo garsas</value>
|
||||||
|
</data>
|
||||||
<data name="Brightness" xml:space="preserve">
|
<data name="Brightness" xml:space="preserve">
|
||||||
<value>Ryškumas</value>
|
<value>Ryškumas</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -264,6 +273,9 @@
|
|||||||
<data name="BrightnessUp" xml:space="preserve">
|
<data name="BrightnessUp" xml:space="preserve">
|
||||||
<value>Ryškumo didinimas</value>
|
<value>Ryškumo didinimas</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Calibrate" xml:space="preserve">
|
||||||
|
<value>Kalibruoti</value>
|
||||||
|
</data>
|
||||||
<data name="Charging" xml:space="preserve">
|
<data name="Charging" xml:space="preserve">
|
||||||
<value>Įkrovimas</value>
|
<value>Įkrovimas</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -276,6 +288,9 @@
|
|||||||
<data name="Custom" xml:space="preserve">
|
<data name="Custom" xml:space="preserve">
|
||||||
<value>Tinkintas</value>
|
<value>Tinkintas</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Deceleration" xml:space="preserve">
|
||||||
|
<value>Lėtėjimas</value>
|
||||||
|
</data>
|
||||||
<data name="Default" xml:space="preserve">
|
<data name="Default" xml:space="preserve">
|
||||||
<value>Numatytas</value>
|
<value>Numatytas</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -117,6 +117,9 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="Acceleration" xml:space="preserve">
|
||||||
|
<value>Przyśpieszenie</value>
|
||||||
|
</data>
|
||||||
<data name="ACPIError" xml:space="preserve">
|
<data name="ACPIError" xml:space="preserve">
|
||||||
<value>Nie można odnaleźć sterownika ASUS ACPI. Aplikacja nie może bez niego funkcjonować. Spróbuj zainstalować Asus System Control Interface</value>
|
<value>Nie można odnaleźć sterownika ASUS ACPI. Aplikacja nie może bez niego funkcjonować. Spróbuj zainstalować Asus System Control Interface</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -232,7 +235,7 @@
|
|||||||
<value>Automatycznie ustaw odświeżanie 60 Hz w czasie pracy na baterii</value>
|
<value>Automatycznie ustaw odświeżanie 60 Hz w czasie pracy na baterii</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Awake" xml:space="preserve">
|
<data name="Awake" xml:space="preserve">
|
||||||
<value>Aktywność</value>
|
<value>Włączone</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BacklightTimeout" xml:space="preserve">
|
<data name="BacklightTimeout" xml:space="preserve">
|
||||||
<value>Limit czasu podłączonego / na baterii (0 - Włączony)</value>
|
<value>Limit czasu podłączonego / na baterii (0 - Włączony)</value>
|
||||||
@@ -249,11 +252,17 @@
|
|||||||
<data name="BatteryHealth" xml:space="preserve">
|
<data name="BatteryHealth" xml:space="preserve">
|
||||||
<value>Stan baterii</value>
|
<value>Stan baterii</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BatteryLimitFull" xml:space="preserve">
|
||||||
|
<value>One time charge to 100%</value>
|
||||||
|
</data>
|
||||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||||
<value>Aktualizacje BIOS i sterowników</value>
|
<value>Aktualizacje BIOS i sterowników</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Boot" xml:space="preserve">
|
<data name="Boot" xml:space="preserve">
|
||||||
<value>Podczas uruchamiania</value>
|
<value>Uruchamianie</value>
|
||||||
|
</data>
|
||||||
|
<data name="BootSound" xml:space="preserve">
|
||||||
|
<value>Dźwięk podczas rozruchu</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Brightness" xml:space="preserve">
|
<data name="Brightness" xml:space="preserve">
|
||||||
<value>Jasność</value>
|
<value>Jasność</value>
|
||||||
@@ -264,6 +273,9 @@
|
|||||||
<data name="BrightnessUp" xml:space="preserve">
|
<data name="BrightnessUp" xml:space="preserve">
|
||||||
<value>Zwiększ jasność</value>
|
<value>Zwiększ jasność</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Calibrate" xml:space="preserve">
|
||||||
|
<value>Kalibruj</value>
|
||||||
|
</data>
|
||||||
<data name="Charging" xml:space="preserve">
|
<data name="Charging" xml:space="preserve">
|
||||||
<value>Ładowanie</value>
|
<value>Ładowanie</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -276,6 +288,9 @@
|
|||||||
<data name="Custom" xml:space="preserve">
|
<data name="Custom" xml:space="preserve">
|
||||||
<value>Niestandardowy</value>
|
<value>Niestandardowy</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Deceleration" xml:space="preserve">
|
||||||
|
<value>Spowolnienie</value>
|
||||||
|
</data>
|
||||||
<data name="Default" xml:space="preserve">
|
<data name="Default" xml:space="preserve">
|
||||||
<value>Domyślny</value>
|
<value>Domyślny</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -286,7 +301,7 @@
|
|||||||
<value>Zużycie mocy</value>
|
<value>Zużycie mocy</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DownloadUpdate" xml:space="preserve">
|
<data name="DownloadUpdate" xml:space="preserve">
|
||||||
<value>Download</value>
|
<value>Pobierz</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DriverAndSoftware" xml:space="preserve">
|
<data name="DriverAndSoftware" xml:space="preserve">
|
||||||
<value>Sterowniki i oprogramowanie</value>
|
<value>Sterowniki i oprogramowanie</value>
|
||||||
@@ -375,7 +390,7 @@ Nadal chcesz kontynuować?</value>
|
|||||||
<value>Temperatura docelowa</value>
|
<value>Temperatura docelowa</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="HibernateAfter" xml:space="preserve">
|
<data name="HibernateAfter" xml:space="preserve">
|
||||||
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
|
<value>Czas przejścia w hibernację na baterii (0 - wcale)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="High" xml:space="preserve">
|
<data name="High" xml:space="preserve">
|
||||||
<value>Wysoka</value>
|
<value>Wysoka</value>
|
||||||
@@ -540,13 +555,13 @@ Nadal chcesz kontynuować?</value>
|
|||||||
<value>Zamknij</value>
|
<value>Zamknij</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RestartGPU" xml:space="preserve">
|
<data name="RestartGPU" xml:space="preserve">
|
||||||
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
|
<value>Coś korzysta z dGPU, uniemożliwiając włączenie trybu Eco. Czy G-Helper ma zresetować dGPU w Menadżerze Urządzeń? (Korzystasz na własne ryzyko)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RPM" xml:space="preserve">
|
<data name="RPM" xml:space="preserve">
|
||||||
<value>RPM</value>
|
<value>RPM</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RunOnStartup" xml:space="preserve">
|
<data name="RunOnStartup" xml:space="preserve">
|
||||||
<value>Uruchom przy starcie systemu</value>
|
<value>Uruchom przy starcie</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ScreenPadDown" xml:space="preserve">
|
<data name="ScreenPadDown" xml:space="preserve">
|
||||||
<value>Zmniejsz jasność ScreenPad</value>
|
<value>Zmniejsz jasność ScreenPad</value>
|
||||||
|
|||||||
@@ -117,8 +117,11 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="Acceleration" xml:space="preserve">
|
||||||
|
<value>Acceleration</value>
|
||||||
|
</data>
|
||||||
<data name="ACPIError" xml:space="preserve">
|
<data name="ACPIError" xml:space="preserve">
|
||||||
<value>Não foi possível conectar ao ASUS ACPI. O applicativo não pode funcionar sem isso. Tente instalar Asus System Controle Interface</value>
|
<value>Não foi possível conectar ao ASUS ACPI. O aplicativo não pode funcionar sem isso. Tente instalar Asus System Controle Interface</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AlertDGPU" xml:space="preserve">
|
<data name="AlertDGPU" xml:space="preserve">
|
||||||
<value>Parece que o GPU está em uso pesado.</value>
|
<value>Parece que o GPU está em uso pesado.</value>
|
||||||
@@ -249,12 +252,18 @@
|
|||||||
<data name="BatteryHealth" xml:space="preserve">
|
<data name="BatteryHealth" xml:space="preserve">
|
||||||
<value>Battery Health</value>
|
<value>Battery Health</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BatteryLimitFull" xml:space="preserve">
|
||||||
|
<value>One time charge to 100%</value>
|
||||||
|
</data>
|
||||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||||
<value>BIOS and Driver Updates</value>
|
<value>BIOS and Driver Updates</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Boot" xml:space="preserve">
|
<data name="Boot" xml:space="preserve">
|
||||||
<value>Ao ligar</value>
|
<value>Ao ligar</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BootSound" xml:space="preserve">
|
||||||
|
<value>Boot Sound</value>
|
||||||
|
</data>
|
||||||
<data name="Brightness" xml:space="preserve">
|
<data name="Brightness" xml:space="preserve">
|
||||||
<value>Nível do brilho</value>
|
<value>Nível do brilho</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -264,6 +273,9 @@
|
|||||||
<data name="BrightnessUp" xml:space="preserve">
|
<data name="BrightnessUp" xml:space="preserve">
|
||||||
<value>Brightness Up</value>
|
<value>Brightness Up</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Calibrate" xml:space="preserve">
|
||||||
|
<value>Calibrate</value>
|
||||||
|
</data>
|
||||||
<data name="Charging" xml:space="preserve">
|
<data name="Charging" xml:space="preserve">
|
||||||
<value>Charging</value>
|
<value>Charging</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -276,6 +288,9 @@
|
|||||||
<data name="Custom" xml:space="preserve">
|
<data name="Custom" xml:space="preserve">
|
||||||
<value>Personalizado</value>
|
<value>Personalizado</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Deceleration" xml:space="preserve">
|
||||||
|
<value>Deceleration</value>
|
||||||
|
</data>
|
||||||
<data name="Default" xml:space="preserve">
|
<data name="Default" xml:space="preserve">
|
||||||
<value>Padrão</value>
|
<value>Padrão</value>
|
||||||
</data>
|
</data>
|
||||||
656
app/Properties/Strings.pt-PT.resx
Normal file
656
app/Properties/Strings.pt-PT.resx
Normal file
@@ -0,0 +1,656 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string"/>
|
||||||
|
<xsd:attribute name="type" type="xsd:string"/>
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string"/>
|
||||||
|
<xsd:attribute ref="xml:space"/>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string"/>
|
||||||
|
<xsd:attribute name="name" type="xsd:string"/>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
|
||||||
|
<xsd:attribute ref="xml:space"/>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="Acceleration" xml:space="preserve">
|
||||||
|
<value>Aceleração</value>
|
||||||
|
</data>
|
||||||
|
<data name="ACPIError" xml:space="preserve">
|
||||||
|
<value>Não foi possível conectar ao ASUS ACPI. O programa não funciona sem esse serviço. Tente instalar Asus System Control Interface</value>
|
||||||
|
</data>
|
||||||
|
<data name="AlertDGPU" xml:space="preserve">
|
||||||
|
<value>Parece que o GPU está em uso pesado, desativá-lo?</value>
|
||||||
|
</data>
|
||||||
|
<data name="AlertDGPUTitle" xml:space="preserve">
|
||||||
|
<value>Modo económico</value>
|
||||||
|
</data>
|
||||||
|
<data name="AlertUltimateOff" xml:space="preserve">
|
||||||
|
<value>Passar ao Modo Ultimate implica o reinício do sistema</value>
|
||||||
|
</data>
|
||||||
|
<data name="AlertUltimateOn" xml:space="preserve">
|
||||||
|
<value>Modo Ultimate implica o reinício do sistema</value>
|
||||||
|
</data>
|
||||||
|
<data name="AlertUltimateTitle" xml:space="preserve">
|
||||||
|
<value>Reiniciar agora?</value>
|
||||||
|
</data>
|
||||||
|
<data name="AnimationSpeed" xml:space="preserve">
|
||||||
|
<value>Velocidade da Animação</value>
|
||||||
|
</data>
|
||||||
|
<data name="AnimeMatrix" xml:space="preserve">
|
||||||
|
<value>AniMe Matrix</value>
|
||||||
|
</data>
|
||||||
|
<data name="AppAlreadyRunning" xml:space="preserve">
|
||||||
|
<value>O programa já está em execução</value>
|
||||||
|
</data>
|
||||||
|
<data name="AppAlreadyRunningText" xml:space="preserve">
|
||||||
|
<value>G-Helper já está em execução. Verifique o tabuleiro do sistema pelo ícone.</value>
|
||||||
|
</data>
|
||||||
|
<data name="Apply" xml:space="preserve">
|
||||||
|
<value>Aplicar</value>
|
||||||
|
</data>
|
||||||
|
<data name="ApplyFanCurve" xml:space="preserve">
|
||||||
|
<value>Aplicar a curva personalizada</value>
|
||||||
|
</data>
|
||||||
|
<data name="ApplyPowerLimits" xml:space="preserve">
|
||||||
|
<value>Aplicar as limitações de energia</value>
|
||||||
|
</data>
|
||||||
|
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||||
|
<value>Ajuste automático dos modos de energia do Windows</value>
|
||||||
|
</data>
|
||||||
|
<data name="AsusServicesRunning" xml:space="preserve">
|
||||||
|
<value>Serviços da Asus em execução</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraBatteryState" xml:space="preserve">
|
||||||
|
<value>Estado da bateria</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraBreathe" xml:space="preserve">
|
||||||
|
<value>Respiração</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraClockwise" xml:space="preserve">
|
||||||
|
<value>No sentido horário</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraColorCycle" xml:space="preserve">
|
||||||
|
<value>Ciclo de cores</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraComet" xml:space="preserve">
|
||||||
|
<value>Cometa</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraCounterClockwise" xml:space="preserve">
|
||||||
|
<value>No sentido anti-horário</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraFast" xml:space="preserve">
|
||||||
|
<value>Rápido</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraLightingMode" xml:space="preserve">
|
||||||
|
<value>Modo de iluminação</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraNormal" xml:space="preserve">
|
||||||
|
<value>Normal</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraRainbow" xml:space="preserve">
|
||||||
|
<value>Arco-íris</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraRandomColor" xml:space="preserve">
|
||||||
|
<value>Aleatório</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraReact" xml:space="preserve">
|
||||||
|
<value>Reagir</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraSlow" xml:space="preserve">
|
||||||
|
<value>Lento</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraStatic" xml:space="preserve">
|
||||||
|
<value>Estático</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraStrobe" xml:space="preserve">
|
||||||
|
<value>Estroboscópio</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraZoneAll" xml:space="preserve">
|
||||||
|
<value>Todos</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraZoneDock" xml:space="preserve">
|
||||||
|
<value>Dock</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraZoneLogo" xml:space="preserve">
|
||||||
|
<value>Logo</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraZoneScroll" xml:space="preserve">
|
||||||
|
<value>Roda de Deslocamento</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||||
|
<value>Underglow</value>
|
||||||
|
</data>
|
||||||
|
<data name="AutoApply" xml:space="preserve">
|
||||||
|
<value>Aplicar automaticamente</value>
|
||||||
|
</data>
|
||||||
|
<data name="AutoMode" xml:space="preserve">
|
||||||
|
<value>Automático</value>
|
||||||
|
</data>
|
||||||
|
<data name="AutoRefreshTooltip" xml:space="preserve">
|
||||||
|
<value>Define a taxa de atualização automaticamente para poupar bateria</value>
|
||||||
|
</data>
|
||||||
|
<data name="Awake" xml:space="preserve">
|
||||||
|
<value>Acordado</value>
|
||||||
|
</data>
|
||||||
|
<data name="BacklightTimeout" xml:space="preserve">
|
||||||
|
<value>Tempo limite ligado à corrente / na bateria (0 - ON)</value>
|
||||||
|
</data>
|
||||||
|
<data name="Balanced" xml:space="preserve">
|
||||||
|
<value>Equilibrado</value>
|
||||||
|
</data>
|
||||||
|
<data name="BatteryCharge" xml:space="preserve">
|
||||||
|
<value>Carga</value>
|
||||||
|
</data>
|
||||||
|
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||||
|
<value>Limite de carga</value>
|
||||||
|
</data>
|
||||||
|
<data name="BatteryHealth" xml:space="preserve">
|
||||||
|
<value>Estado da bateria</value>
|
||||||
|
</data>
|
||||||
|
<data name="BatteryLimitFull" xml:space="preserve">
|
||||||
|
<value>One time charge to 100%</value>
|
||||||
|
</data>
|
||||||
|
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||||
|
<value>Atualizações de Drivers e da BIOS</value>
|
||||||
|
</data>
|
||||||
|
<data name="Boot" xml:space="preserve">
|
||||||
|
<value>Ao ligar</value>
|
||||||
|
</data>
|
||||||
|
<data name="BootSound" xml:space="preserve">
|
||||||
|
<value>Boot Sound</value>
|
||||||
|
</data>
|
||||||
|
<data name="Brightness" xml:space="preserve">
|
||||||
|
<value>Nível do brilho</value>
|
||||||
|
</data>
|
||||||
|
<data name="BrightnessDown" xml:space="preserve">
|
||||||
|
<value>Diminuir o brilho</value>
|
||||||
|
</data>
|
||||||
|
<data name="BrightnessUp" xml:space="preserve">
|
||||||
|
<value>Aumentar o brilho</value>
|
||||||
|
</data>
|
||||||
|
<data name="Calibrate" xml:space="preserve">
|
||||||
|
<value>Calibrate</value>
|
||||||
|
</data>
|
||||||
|
<data name="Charging" xml:space="preserve">
|
||||||
|
<value>Carregando</value>
|
||||||
|
</data>
|
||||||
|
<data name="Color" xml:space="preserve">
|
||||||
|
<value>Cor</value>
|
||||||
|
</data>
|
||||||
|
<data name="CPUBoost" xml:space="preserve">
|
||||||
|
<value>Turbo do CPU</value>
|
||||||
|
</data>
|
||||||
|
<data name="Custom" xml:space="preserve">
|
||||||
|
<value>Personalizado</value>
|
||||||
|
</data>
|
||||||
|
<data name="Deceleration" xml:space="preserve">
|
||||||
|
<value>Desaceleração</value>
|
||||||
|
</data>
|
||||||
|
<data name="Default" xml:space="preserve">
|
||||||
|
<value>Padrão</value>
|
||||||
|
</data>
|
||||||
|
<data name="DisableOverdrive" xml:space="preserve">
|
||||||
|
<value>Desativar o overdrive do ecrã</value>
|
||||||
|
</data>
|
||||||
|
<data name="Discharging" xml:space="preserve">
|
||||||
|
<value>Descarregando</value>
|
||||||
|
</data>
|
||||||
|
<data name="DownloadUpdate" xml:space="preserve">
|
||||||
|
<value>Transferir</value>
|
||||||
|
</data>
|
||||||
|
<data name="DriverAndSoftware" xml:space="preserve">
|
||||||
|
<value>Drivers e Software</value>
|
||||||
|
</data>
|
||||||
|
<data name="EcoGPUTooltip" xml:space="preserve">
|
||||||
|
<value>Desativar o dGPU para poupar energia</value>
|
||||||
|
</data>
|
||||||
|
<data name="EcoMode" xml:space="preserve">
|
||||||
|
<value>Económico</value>
|
||||||
|
</data>
|
||||||
|
<data name="EnableOptimusText" xml:space="preserve">
|
||||||
|
<value>Desativar a dGPU por ativar o modo Eco enquanto o Modo de Ecrã no Painel de Controlo da NVIDIA não está definido para Optimus pode causar problemas com os controlos do brilho do painel até ao próximo reinício.
|
||||||
|
|
||||||
|
Quer prosseguir?</value>
|
||||||
|
</data>
|
||||||
|
<data name="EnableOptimusTitle" xml:space="preserve">
|
||||||
|
<value>O Modo de Ecrã da NVIDIA não está definido para Optimus</value>
|
||||||
|
</data>
|
||||||
|
<data name="EnergySettings" xml:space="preserve">
|
||||||
|
<value>Configurações de Energia</value>
|
||||||
|
</data>
|
||||||
|
<data name="Extra" xml:space="preserve">
|
||||||
|
<value>Adicional</value>
|
||||||
|
</data>
|
||||||
|
<data name="ExtraSettings" xml:space="preserve">
|
||||||
|
<value>Configurações adicionais</value>
|
||||||
|
</data>
|
||||||
|
<data name="FactoryDefaults" xml:space="preserve">
|
||||||
|
<value>Padrão de fábrica</value>
|
||||||
|
</data>
|
||||||
|
<data name="FanCurves" xml:space="preserve">
|
||||||
|
<value>Curvas das Ventoinhas</value>
|
||||||
|
</data>
|
||||||
|
<data name="FanProfileCPU" xml:space="preserve">
|
||||||
|
<value>Perfil da Ventoinha do CPU</value>
|
||||||
|
</data>
|
||||||
|
<data name="FanProfileGPU" xml:space="preserve">
|
||||||
|
<value>Perfil da Ventoinha da GPU</value>
|
||||||
|
</data>
|
||||||
|
<data name="FanProfileMid" xml:space="preserve">
|
||||||
|
<value>Perfil da Ventoinha Central</value>
|
||||||
|
</data>
|
||||||
|
<data name="FanProfiles" xml:space="preserve">
|
||||||
|
<value>Perfis das Ventoinhas</value>
|
||||||
|
</data>
|
||||||
|
<data name="FansAndPower" xml:space="preserve">
|
||||||
|
<value>Ventoinhas e Potência</value>
|
||||||
|
</data>
|
||||||
|
<data name="FanSpeed" xml:space="preserve">
|
||||||
|
<value>Fan</value>
|
||||||
|
</data>
|
||||||
|
<data name="FansPower" xml:space="preserve">
|
||||||
|
<value>Ventoinhas + Potência</value>
|
||||||
|
</data>
|
||||||
|
<data name="FnLock" xml:space="preserve">
|
||||||
|
<value>Processar teclas de atalho Fn+F sem pressionar Fn</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUBoost" xml:space="preserve">
|
||||||
|
<value>Boost dinâmico</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUChanging" xml:space="preserve">
|
||||||
|
<value>Carregando</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUCoreClockOffset" xml:space="preserve">
|
||||||
|
<value>Frequência da GPU</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUMemoryClockOffset" xml:space="preserve">
|
||||||
|
<value>Frequência da Memória</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUMode" xml:space="preserve">
|
||||||
|
<value>Modo da GPU</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUModeEco" xml:space="preserve">
|
||||||
|
<value>Só iGPU</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUModeStandard" xml:space="preserve">
|
||||||
|
<value>iGPU + dGPU</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUModeUltimate" xml:space="preserve">
|
||||||
|
<value>Exclusivamente dGPU</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUSettings" xml:space="preserve">
|
||||||
|
<value>Parâmetros de GPU</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUTempTarget" xml:space="preserve">
|
||||||
|
<value>Temperatura limite</value>
|
||||||
|
</data>
|
||||||
|
<data name="HibernateAfter" xml:space="preserve">
|
||||||
|
<value>Minutos para a hibernação em suspensão, na bateria (0 - OFF)</value>
|
||||||
|
</data>
|
||||||
|
<data name="High" xml:space="preserve">
|
||||||
|
<value>Alto</value>
|
||||||
|
</data>
|
||||||
|
<data name="KeyBindings" xml:space="preserve">
|
||||||
|
<value>Combinações de teclas</value>
|
||||||
|
</data>
|
||||||
|
<data name="Keyboard" xml:space="preserve">
|
||||||
|
<value>Teclado</value>
|
||||||
|
</data>
|
||||||
|
<data name="KillGpuApps" xml:space="preserve">
|
||||||
|
<value>Parar todos os programas que usam a GPU ao alternar para o modo Eco</value>
|
||||||
|
</data>
|
||||||
|
<data name="LaptopBacklight" xml:space="preserve">
|
||||||
|
<value>Configurações de iluminação</value>
|
||||||
|
</data>
|
||||||
|
<data name="LaptopKeyboard" xml:space="preserve">
|
||||||
|
<value>Teclado</value>
|
||||||
|
</data>
|
||||||
|
<data name="LaptopScreen" xml:space="preserve">
|
||||||
|
<value>Ecrã</value>
|
||||||
|
</data>
|
||||||
|
<data name="Lid" xml:space="preserve">
|
||||||
|
<value>Tampa</value>
|
||||||
|
</data>
|
||||||
|
<data name="Lightbar" xml:space="preserve">
|
||||||
|
<value>Barra de Luz</value>
|
||||||
|
</data>
|
||||||
|
<data name="Lighting" xml:space="preserve">
|
||||||
|
<value>Iluminação</value>
|
||||||
|
</data>
|
||||||
|
<data name="Logo" xml:space="preserve">
|
||||||
|
<value>Logo</value>
|
||||||
|
</data>
|
||||||
|
<data name="Low" xml:space="preserve">
|
||||||
|
<value>Baixo</value>
|
||||||
|
</data>
|
||||||
|
<data name="MatrixAudio" xml:space="preserve">
|
||||||
|
<value>Visualizador de áudio</value>
|
||||||
|
</data>
|
||||||
|
<data name="MatrixBanner" xml:space="preserve">
|
||||||
|
<value>Bandeira Binária</value>
|
||||||
|
</data>
|
||||||
|
<data name="MatrixBright" xml:space="preserve">
|
||||||
|
<value>Brilho</value>
|
||||||
|
</data>
|
||||||
|
<data name="MatrixClock" xml:space="preserve">
|
||||||
|
<value>Relógio</value>
|
||||||
|
</data>
|
||||||
|
<data name="MatrixDim" xml:space="preserve">
|
||||||
|
<value>Escuro</value>
|
||||||
|
</data>
|
||||||
|
<data name="MatrixLogo" xml:space="preserve">
|
||||||
|
<value>Logo ROG</value>
|
||||||
|
</data>
|
||||||
|
<data name="MatrixMedium" xml:space="preserve">
|
||||||
|
<value>Médio</value>
|
||||||
|
</data>
|
||||||
|
<data name="MatrixOff" xml:space="preserve">
|
||||||
|
<value>Desligado</value>
|
||||||
|
</data>
|
||||||
|
<data name="MatrixPicture" xml:space="preserve">
|
||||||
|
<value>Imagem</value>
|
||||||
|
</data>
|
||||||
|
<data name="MaxRefreshTooltip" xml:space="preserve">
|
||||||
|
<value>Taxa de atualização máxima e menor latência</value>
|
||||||
|
</data>
|
||||||
|
<data name="MinRefreshTooltip" xml:space="preserve">
|
||||||
|
<value>Taxa de atualização de 60Hz para poupar bateria</value>
|
||||||
|
</data>
|
||||||
|
<data name="Minute" xml:space="preserve">
|
||||||
|
<value>Minuto</value>
|
||||||
|
</data>
|
||||||
|
<data name="Minutes" xml:space="preserve">
|
||||||
|
<value>Minutos</value>
|
||||||
|
</data>
|
||||||
|
<data name="MouseAngleSnapping" xml:space="preserve">
|
||||||
|
<value>Angle Snapping</value>
|
||||||
|
</data>
|
||||||
|
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||||
|
<value>Desligar automaticamente após</value>
|
||||||
|
</data>
|
||||||
|
<data name="MouseButtonResponse" xml:space="preserve">
|
||||||
|
<value>Button Response</value>
|
||||||
|
</data>
|
||||||
|
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||||
|
<value>Distância de Lift Off</value>
|
||||||
|
</data>
|
||||||
|
<data name="MouseLowBatteryWarning" xml:space="preserve">
|
||||||
|
<value>Aviso de bateria fraca</value>
|
||||||
|
</data>
|
||||||
|
<data name="MousePerformance" xml:space="preserve">
|
||||||
|
<value>Desempenho do rato</value>
|
||||||
|
</data>
|
||||||
|
<data name="MouseSynchronize" xml:space="preserve">
|
||||||
|
<value>Sincronizar com o rato</value>
|
||||||
|
</data>
|
||||||
|
<data name="Multizone" xml:space="preserve">
|
||||||
|
<value>Multizona</value>
|
||||||
|
</data>
|
||||||
|
<data name="MuteMic" xml:space="preserve">
|
||||||
|
<value>Desligar microfone</value>
|
||||||
|
</data>
|
||||||
|
<data name="Never" xml:space="preserve">
|
||||||
|
<value>Nunca</value>
|
||||||
|
</data>
|
||||||
|
<data name="NewUpdates" xml:space="preserve">
|
||||||
|
<value>Novas atualizações</value>
|
||||||
|
</data>
|
||||||
|
<data name="NoNewUpdates" xml:space="preserve">
|
||||||
|
<value>Sem novas atualizações</value>
|
||||||
|
</data>
|
||||||
|
<data name="NotConnected" xml:space="preserve">
|
||||||
|
<value>Não conectado</value>
|
||||||
|
</data>
|
||||||
|
<data name="OpenGHelper" xml:space="preserve">
|
||||||
|
<value>Abrir G-Helper</value>
|
||||||
|
</data>
|
||||||
|
<data name="Optimized" xml:space="preserve">
|
||||||
|
<value>Otimizado</value>
|
||||||
|
</data>
|
||||||
|
<data name="OptimizedGPUTooltip" xml:space="preserve">
|
||||||
|
<value>Mudar para Eco em bateria, e mudar para Standard quando ligado à corrente</value>
|
||||||
|
</data>
|
||||||
|
<data name="OptimizedUSBC" xml:space="preserve">
|
||||||
|
<value>Manter a GPU desativada ao usar um carregador USB-C no modo Otimizado</value>
|
||||||
|
</data>
|
||||||
|
<data name="Other" xml:space="preserve">
|
||||||
|
<value>Outro</value>
|
||||||
|
</data>
|
||||||
|
<data name="Overdrive" xml:space="preserve">
|
||||||
|
<value>Overdrive</value>
|
||||||
|
</data>
|
||||||
|
<data name="PerformanceMode" xml:space="preserve">
|
||||||
|
<value>Modo</value>
|
||||||
|
</data>
|
||||||
|
<data name="Peripherals" xml:space="preserve">
|
||||||
|
<value>Periféricos</value>
|
||||||
|
</data>
|
||||||
|
<data name="PictureGif" xml:space="preserve">
|
||||||
|
<value>Imagem / Gif</value>
|
||||||
|
</data>
|
||||||
|
<data name="PlayPause" xml:space="preserve">
|
||||||
|
<value>Reproduzir / Pausar</value>
|
||||||
|
</data>
|
||||||
|
<data name="PollingRate" xml:space="preserve">
|
||||||
|
<value>Polling Rate</value>
|
||||||
|
</data>
|
||||||
|
<data name="PowerLimits" xml:space="preserve">
|
||||||
|
<value>Limites de Potência</value>
|
||||||
|
</data>
|
||||||
|
<data name="PPTExperimental" xml:space="preserve">
|
||||||
|
<value>Os Limites de Potência são uma funcionalidade experimental. Use com cuidado!</value>
|
||||||
|
</data>
|
||||||
|
<data name="PrintScreen" xml:space="preserve">
|
||||||
|
<value>Captura de ecrã</value>
|
||||||
|
</data>
|
||||||
|
<data name="Profile" xml:space="preserve">
|
||||||
|
<value>Perfil</value>
|
||||||
|
</data>
|
||||||
|
<data name="Quit" xml:space="preserve">
|
||||||
|
<value>Sair</value>
|
||||||
|
</data>
|
||||||
|
<data name="RestartGPU" xml:space="preserve">
|
||||||
|
<value>Algum processo está a utilizar a dGPU, impedindo o modo Eco. Deixar o G-Helper tentar reiniciar a dGPU no gestor de dispositivos? (Proceda por sua conta e risco)</value>
|
||||||
|
</data>
|
||||||
|
<data name="RPM" xml:space="preserve">
|
||||||
|
<value>RPM</value>
|
||||||
|
</data>
|
||||||
|
<data name="RunOnStartup" xml:space="preserve">
|
||||||
|
<value>Executar ao iniciar</value>
|
||||||
|
</data>
|
||||||
|
<data name="ScreenPadDown" xml:space="preserve">
|
||||||
|
<value>Diminuir o brilho do ScreenPad</value>
|
||||||
|
</data>
|
||||||
|
<data name="ScreenPadUp" xml:space="preserve">
|
||||||
|
<value>Aumentar o brilho do ScreenPad</value>
|
||||||
|
</data>
|
||||||
|
<data name="Shutdown" xml:space="preserve">
|
||||||
|
<value>Desligar</value>
|
||||||
|
</data>
|
||||||
|
<data name="Silent" xml:space="preserve">
|
||||||
|
<value>Silencioso</value>
|
||||||
|
</data>
|
||||||
|
<data name="Sleep" xml:space="preserve">
|
||||||
|
<value>Hibernação</value>
|
||||||
|
</data>
|
||||||
|
<data name="StandardGPUTooltip" xml:space="preserve">
|
||||||
|
<value>Liga o dGPU para uso padrão</value>
|
||||||
|
</data>
|
||||||
|
<data name="StandardMode" xml:space="preserve">
|
||||||
|
<value>Padrão</value>
|
||||||
|
</data>
|
||||||
|
<data name="Start" xml:space="preserve">
|
||||||
|
<value>Iniciar</value>
|
||||||
|
</data>
|
||||||
|
<data name="StartingServices" xml:space="preserve">
|
||||||
|
<value>Iniciando os serviços</value>
|
||||||
|
</data>
|
||||||
|
<data name="StartupError" xml:space="preserve">
|
||||||
|
<value>Erro de inicialização</value>
|
||||||
|
</data>
|
||||||
|
<data name="Stop" xml:space="preserve">
|
||||||
|
<value>Parar</value>
|
||||||
|
</data>
|
||||||
|
<data name="StopGPUApps" xml:space="preserve">
|
||||||
|
<value>Parar programas que usem a GPU</value>
|
||||||
|
</data>
|
||||||
|
<data name="StoppingServices" xml:space="preserve">
|
||||||
|
<value>Parando os serviços</value>
|
||||||
|
</data>
|
||||||
|
<data name="ToggleAura" xml:space="preserve">
|
||||||
|
<value>Alternar Aura</value>
|
||||||
|
</data>
|
||||||
|
<data name="ToggleClamshellMode" xml:space="preserve">
|
||||||
|
<value>Alternar automaticamente o Modo Clamshell</value>
|
||||||
|
</data>
|
||||||
|
<data name="ToggleFnLock" xml:space="preserve">
|
||||||
|
<value>Alternar Fn-Lock</value>
|
||||||
|
</data>
|
||||||
|
<data name="ToggleMiniled" xml:space="preserve">
|
||||||
|
<value>Alternar MiniLED (se suportado)</value>
|
||||||
|
</data>
|
||||||
|
<data name="ToggleScreen" xml:space="preserve">
|
||||||
|
<value>Alternar Ecrã</value>
|
||||||
|
</data>
|
||||||
|
<data name="Turbo" xml:space="preserve">
|
||||||
|
<value>Turbo</value>
|
||||||
|
</data>
|
||||||
|
<data name="TurnedOff" xml:space="preserve">
|
||||||
|
<value>Desligado</value>
|
||||||
|
</data>
|
||||||
|
<data name="TurnOffOnBattery" xml:space="preserve">
|
||||||
|
<value>Desligar em bateria</value>
|
||||||
|
</data>
|
||||||
|
<data name="UltimateGPUTooltip" xml:space="preserve">
|
||||||
|
<value>O ecrã do portátil está ligado diretamente à dGPU, maximizando FPS</value>
|
||||||
|
</data>
|
||||||
|
<data name="UltimateMode" xml:space="preserve">
|
||||||
|
<value>Ultimate</value>
|
||||||
|
</data>
|
||||||
|
<data name="UndervoltingRisky" xml:space="preserve">
|
||||||
|
<value>Undervolting é uma funcionalidade experimental e arriscada. Se os valores aplicados foram baixos para o hardware, podem existir instabilidades, desligar e causar corrupção de dados. Caso queira, comece por valores pequenos no início, clique em Aplicar e teste o que funciona para o hardware.</value>
|
||||||
|
</data>
|
||||||
|
<data name="Updates" xml:space="preserve">
|
||||||
|
<value>Atualizações</value>
|
||||||
|
</data>
|
||||||
|
<data name="VersionLabel" xml:space="preserve">
|
||||||
|
<value>Versão</value>
|
||||||
|
</data>
|
||||||
|
<data name="VolumeDown" xml:space="preserve">
|
||||||
|
<value>Diminuir o volume</value>
|
||||||
|
</data>
|
||||||
|
<data name="VolumeMute" xml:space="preserve">
|
||||||
|
<value>Sem som</value>
|
||||||
|
</data>
|
||||||
|
<data name="VolumeUp" xml:space="preserve">
|
||||||
|
<value>Aumentar o volume</value>
|
||||||
|
</data>
|
||||||
|
<data name="WindowTop" xml:space="preserve">
|
||||||
|
<value>Manter a janela do aplicativo sempre no topo</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -117,6 +117,9 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="Acceleration" xml:space="preserve">
|
||||||
|
<value>Acceleration</value>
|
||||||
|
</data>
|
||||||
<data name="ACPIError" xml:space="preserve">
|
<data name="ACPIError" xml:space="preserve">
|
||||||
<value>Can't connect to ASUS ACPI. Application can't function without it. Try to install Asus System Control Interface</value>
|
<value>Can't connect to ASUS ACPI. Application can't function without it. Try to install Asus System Control Interface</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -249,12 +252,18 @@
|
|||||||
<data name="BatteryHealth" xml:space="preserve">
|
<data name="BatteryHealth" xml:space="preserve">
|
||||||
<value>Battery Health</value>
|
<value>Battery Health</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BatteryLimitFull" xml:space="preserve">
|
||||||
|
<value>One time charge to 100%</value>
|
||||||
|
</data>
|
||||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||||
<value>BIOS and Driver Updates</value>
|
<value>BIOS and Driver Updates</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Boot" xml:space="preserve">
|
<data name="Boot" xml:space="preserve">
|
||||||
<value>Boot</value>
|
<value>Boot</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BootSound" xml:space="preserve">
|
||||||
|
<value>Boot Sound</value>
|
||||||
|
</data>
|
||||||
<data name="Brightness" xml:space="preserve">
|
<data name="Brightness" xml:space="preserve">
|
||||||
<value>Brightness</value>
|
<value>Brightness</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -264,6 +273,9 @@
|
|||||||
<data name="BrightnessUp" xml:space="preserve">
|
<data name="BrightnessUp" xml:space="preserve">
|
||||||
<value>Brightness Up</value>
|
<value>Brightness Up</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Calibrate" xml:space="preserve">
|
||||||
|
<value>Calibrate</value>
|
||||||
|
</data>
|
||||||
<data name="Charging" xml:space="preserve">
|
<data name="Charging" xml:space="preserve">
|
||||||
<value>Charging</value>
|
<value>Charging</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -276,6 +288,9 @@
|
|||||||
<data name="Custom" xml:space="preserve">
|
<data name="Custom" xml:space="preserve">
|
||||||
<value>Custom</value>
|
<value>Custom</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Deceleration" xml:space="preserve">
|
||||||
|
<value>Deceleration</value>
|
||||||
|
</data>
|
||||||
<data name="Default" xml:space="preserve">
|
<data name="Default" xml:space="preserve">
|
||||||
<value>Default</value>
|
<value>Default</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -117,6 +117,9 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="Acceleration" xml:space="preserve">
|
||||||
|
<value>Acceleration</value>
|
||||||
|
</data>
|
||||||
<data name="ACPIError" xml:space="preserve">
|
<data name="ACPIError" xml:space="preserve">
|
||||||
<value>Nu se poate conecta la ASUS ACPI. Aplicația nu poate funcționa fără aceasta. Încercați să instalați Asus System Control Interface</value>
|
<value>Nu se poate conecta la ASUS ACPI. Aplicația nu poate funcționa fără aceasta. Încercați să instalați Asus System Control Interface</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -249,12 +252,18 @@
|
|||||||
<data name="BatteryHealth" xml:space="preserve">
|
<data name="BatteryHealth" xml:space="preserve">
|
||||||
<value>Sănătatea bateriei</value>
|
<value>Sănătatea bateriei</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BatteryLimitFull" xml:space="preserve">
|
||||||
|
<value>One time charge to 100%</value>
|
||||||
|
</data>
|
||||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||||
<value>Actualizări BIOS și Driver</value>
|
<value>Actualizări BIOS și Driver</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Boot" xml:space="preserve">
|
<data name="Boot" xml:space="preserve">
|
||||||
<value>Pornire</value>
|
<value>Pornire</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BootSound" xml:space="preserve">
|
||||||
|
<value>Boot Sound</value>
|
||||||
|
</data>
|
||||||
<data name="Brightness" xml:space="preserve">
|
<data name="Brightness" xml:space="preserve">
|
||||||
<value>Luminozitate</value>
|
<value>Luminozitate</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -264,6 +273,9 @@
|
|||||||
<data name="BrightnessUp" xml:space="preserve">
|
<data name="BrightnessUp" xml:space="preserve">
|
||||||
<value>Mărirea luminozității</value>
|
<value>Mărirea luminozității</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Calibrate" xml:space="preserve">
|
||||||
|
<value>Calibrate</value>
|
||||||
|
</data>
|
||||||
<data name="Charging" xml:space="preserve">
|
<data name="Charging" xml:space="preserve">
|
||||||
<value>Se încarcă</value>
|
<value>Se încarcă</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -276,6 +288,9 @@
|
|||||||
<data name="Custom" xml:space="preserve">
|
<data name="Custom" xml:space="preserve">
|
||||||
<value>Personalizat</value>
|
<value>Personalizat</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Deceleration" xml:space="preserve">
|
||||||
|
<value>Deceleration</value>
|
||||||
|
</data>
|
||||||
<data name="Default" xml:space="preserve">
|
<data name="Default" xml:space="preserve">
|
||||||
<value>Implicit</value>
|
<value>Implicit</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -117,6 +117,9 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="Acceleration" xml:space="preserve">
|
||||||
|
<value>Hızlandırma</value>
|
||||||
|
</data>
|
||||||
<data name="ACPIError" xml:space="preserve">
|
<data name="ACPIError" xml:space="preserve">
|
||||||
<value>ASUS ACPI'ye bağlanılamıyor. Uygulama o olmadan çalışamaz. Asus Sistem Kontrol Arayüzü'nü yüklemeyi deneyin.</value>
|
<value>ASUS ACPI'ye bağlanılamıyor. Uygulama o olmadan çalışamaz. Asus Sistem Kontrol Arayüzü'nü yüklemeyi deneyin.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -148,7 +151,7 @@
|
|||||||
<value>G-Helper zaten çalışıyor. Simge için görev çubuğunu kontrol edin.</value>
|
<value>G-Helper zaten çalışıyor. Simge için görev çubuğunu kontrol edin.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Apply" xml:space="preserve">
|
<data name="Apply" xml:space="preserve">
|
||||||
<value>Apply</value>
|
<value>Uygula</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ApplyFanCurve" xml:space="preserve">
|
<data name="ApplyFanCurve" xml:space="preserve">
|
||||||
<value>Özel Fan Eğrisini Uygula</value>
|
<value>Özel Fan Eğrisini Uygula</value>
|
||||||
@@ -160,31 +163,31 @@
|
|||||||
<value>Windows Güç Modunu otomatik ayarla</value>
|
<value>Windows Güç Modunu otomatik ayarla</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AsusServicesRunning" xml:space="preserve">
|
<data name="AsusServicesRunning" xml:space="preserve">
|
||||||
<value>Asus Services Running</value>
|
<value>Çalışan Asus Hizmetleri</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraBatteryState" xml:space="preserve">
|
<data name="AuraBatteryState" xml:space="preserve">
|
||||||
<value>Battery State</value>
|
<value>Pil Durumu</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraBreathe" xml:space="preserve">
|
<data name="AuraBreathe" xml:space="preserve">
|
||||||
<value>Nefes</value>
|
<value>Nefes</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraClockwise" xml:space="preserve">
|
<data name="AuraClockwise" xml:space="preserve">
|
||||||
<value>Clockwise</value>
|
<value>Saat Yönünde</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraColorCycle" xml:space="preserve">
|
<data name="AuraColorCycle" xml:space="preserve">
|
||||||
<value>Renk Döngüsü</value>
|
<value>Renk Döngüsü</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraComet" xml:space="preserve">
|
<data name="AuraComet" xml:space="preserve">
|
||||||
<value>Comet</value>
|
<value>Kuyruklu Yıldız</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraCounterClockwise" xml:space="preserve">
|
<data name="AuraCounterClockwise" xml:space="preserve">
|
||||||
<value>Counterclockwise</value>
|
<value>Saat Yönünün Tersine</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraFast" xml:space="preserve">
|
<data name="AuraFast" xml:space="preserve">
|
||||||
<value>Hızlı</value>
|
<value>Hızlı</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraLightingMode" xml:space="preserve">
|
<data name="AuraLightingMode" xml:space="preserve">
|
||||||
<value>Lighting Mode</value>
|
<value>Işıklandırma Modu</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraNormal" xml:space="preserve">
|
<data name="AuraNormal" xml:space="preserve">
|
||||||
<value>Normal</value>
|
<value>Normal</value>
|
||||||
@@ -193,10 +196,10 @@
|
|||||||
<value>Gökkuşağı</value>
|
<value>Gökkuşağı</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraRandomColor" xml:space="preserve">
|
<data name="AuraRandomColor" xml:space="preserve">
|
||||||
<value>Random</value>
|
<value>Rastgele</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraReact" xml:space="preserve">
|
<data name="AuraReact" xml:space="preserve">
|
||||||
<value>React</value>
|
<value>Reaksiyon</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraSlow" xml:space="preserve">
|
<data name="AuraSlow" xml:space="preserve">
|
||||||
<value>Yavaş</value>
|
<value>Yavaş</value>
|
||||||
@@ -208,22 +211,22 @@
|
|||||||
<value>Flaş</value>
|
<value>Flaş</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneAll" xml:space="preserve">
|
<data name="AuraZoneAll" xml:space="preserve">
|
||||||
<value>All</value>
|
<value>Tümü</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneDock" xml:space="preserve">
|
<data name="AuraZoneDock" xml:space="preserve">
|
||||||
<value>Dock</value>
|
<value>Yuva</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneLogo" xml:space="preserve">
|
<data name="AuraZoneLogo" xml:space="preserve">
|
||||||
<value>Logo</value>
|
<value>Logo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneScroll" xml:space="preserve">
|
<data name="AuraZoneScroll" xml:space="preserve">
|
||||||
<value>Scrollwheel</value>
|
<value>Kaydırma Tekerleği</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||||
<value>Underglow</value>
|
<value>Alttan Aydınlatma</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutoApply" xml:space="preserve">
|
<data name="AutoApply" xml:space="preserve">
|
||||||
<value>Auto Apply</value>
|
<value>Otomatik Uygula</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutoMode" xml:space="preserve">
|
<data name="AutoMode" xml:space="preserve">
|
||||||
<value>Otomatik</value>
|
<value>Otomatik</value>
|
||||||
@@ -241,41 +244,53 @@
|
|||||||
<value>Dengeli</value>
|
<value>Dengeli</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BatteryCharge" xml:space="preserve">
|
<data name="BatteryCharge" xml:space="preserve">
|
||||||
<value>Charge</value>
|
<value>Şarj</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||||
<value>Pil Şarj Limiti</value>
|
<value>Pil Şarj Limiti</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BatteryHealth" xml:space="preserve">
|
<data name="BatteryHealth" xml:space="preserve">
|
||||||
<value>Battery Health</value>
|
<value>Pil Sağlığı</value>
|
||||||
|
</data>
|
||||||
|
<data name="BatteryLimitFull" xml:space="preserve">
|
||||||
|
<value>One time charge to 100%</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||||
<value>BIOS and Driver Updates</value>
|
<value>BIOS ve Sürücü Güncellemeleri</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Boot" xml:space="preserve">
|
<data name="Boot" xml:space="preserve">
|
||||||
<value>Önyükleme</value>
|
<value>Boot</value>
|
||||||
|
</data>
|
||||||
|
<data name="BootSound" xml:space="preserve">
|
||||||
|
<value>Boot Sesi</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Brightness" xml:space="preserve">
|
<data name="Brightness" xml:space="preserve">
|
||||||
<value>Parlaklığı</value>
|
<value>Parlaklığı</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BrightnessDown" xml:space="preserve">
|
<data name="BrightnessDown" xml:space="preserve">
|
||||||
<value>Brightness Down</value>
|
<value>Parlaklığı Azalt</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BrightnessUp" xml:space="preserve">
|
<data name="BrightnessUp" xml:space="preserve">
|
||||||
<value>Brightness Up</value>
|
<value>Parlaklığı Artır</value>
|
||||||
|
</data>
|
||||||
|
<data name="Calibrate" xml:space="preserve">
|
||||||
|
<value>Kalibre Et</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Charging" xml:space="preserve">
|
<data name="Charging" xml:space="preserve">
|
||||||
<value>Charging</value>
|
<value>Şarj oluyor</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Color" xml:space="preserve">
|
<data name="Color" xml:space="preserve">
|
||||||
<value>Renk</value>
|
<value>Renk</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CPUBoost" xml:space="preserve">
|
<data name="CPUBoost" xml:space="preserve">
|
||||||
<value>CPU Boost</value>
|
<value>CPU Desteği</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Custom" xml:space="preserve">
|
<data name="Custom" xml:space="preserve">
|
||||||
<value>Özel</value>
|
<value>Özel</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Deceleration" xml:space="preserve">
|
||||||
|
<value>Yavaşlama</value>
|
||||||
|
</data>
|
||||||
<data name="Default" xml:space="preserve">
|
<data name="Default" xml:space="preserve">
|
||||||
<value>Varsayılan</value>
|
<value>Varsayılan</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -286,10 +301,10 @@
|
|||||||
<value>Pil boşalıyor</value>
|
<value>Pil boşalıyor</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DownloadUpdate" xml:space="preserve">
|
<data name="DownloadUpdate" xml:space="preserve">
|
||||||
<value>Download</value>
|
<value>İndir</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DriverAndSoftware" xml:space="preserve">
|
<data name="DriverAndSoftware" xml:space="preserve">
|
||||||
<value>Drivers and Software</value>
|
<value>Sürücüler ve Yazılımlar</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EcoGPUTooltip" xml:space="preserve">
|
<data name="EcoGPUTooltip" xml:space="preserve">
|
||||||
<value>Pil tasarrufu için harici GPU'yu devre dışı bırakır</value>
|
<value>Pil tasarrufu için harici GPU'yu devre dışı bırakır</value>
|
||||||
@@ -298,15 +313,15 @@
|
|||||||
<value>Eko</value>
|
<value>Eko</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnableOptimusText" xml:space="preserve">
|
<data name="EnableOptimusText" xml:space="preserve">
|
||||||
<value>Disabling the dGPU by going into Eco mode while Display Mode in NVIDIA Control Panel is not set to Optimus might cause problems with brightness controls until after the next reboot.
|
<value>NVIDIA Denetim Masası'ndaki Görüntü Modu Optimus olarak ayarlı değilken Eko moduna geçilerek harici GPU'nun devre dışı bırakılması, bir sonraki yeniden başlatmaya kadar parlaklık ayarlarında sorunlara neden olabilir.
|
||||||
|
|
||||||
Do you still want to continue?</value>
|
Yine de devam etmek istiyor musunuz?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnableOptimusTitle" xml:space="preserve">
|
<data name="EnableOptimusTitle" xml:space="preserve">
|
||||||
<value>NVIDIA Display Mode is not set to Optimus</value>
|
<value>NVIDIA Görüntü Modu Optimus olarak ayarlanmamış</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnergySettings" xml:space="preserve">
|
<data name="EnergySettings" xml:space="preserve">
|
||||||
<value>Energy Settings</value>
|
<value>Enerji Ayarları</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Extra" xml:space="preserve">
|
<data name="Extra" xml:space="preserve">
|
||||||
<value>Ekstra</value>
|
<value>Ekstra</value>
|
||||||
@@ -351,10 +366,10 @@ Do you still want to continue?</value>
|
|||||||
<value>Değiştiriliyor</value>
|
<value>Değiştiriliyor</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GPUCoreClockOffset" xml:space="preserve">
|
<data name="GPUCoreClockOffset" xml:space="preserve">
|
||||||
<value>Core Clock Offset</value>
|
<value>Çekirdek Frekans Dengesi</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GPUMemoryClockOffset" xml:space="preserve">
|
<data name="GPUMemoryClockOffset" xml:space="preserve">
|
||||||
<value>Memory Clock Offset</value>
|
<value>Hafıza Frekans Dengesi</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GPUMode" xml:space="preserve">
|
<data name="GPUMode" xml:space="preserve">
|
||||||
<value>GPU Modu</value>
|
<value>GPU Modu</value>
|
||||||
@@ -369,16 +384,16 @@ Do you still want to continue?</value>
|
|||||||
<value>sadece harici GPU</value>
|
<value>sadece harici GPU</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GPUSettings" xml:space="preserve">
|
<data name="GPUSettings" xml:space="preserve">
|
||||||
<value>GPU Settings</value>
|
<value>GPU Ayarları</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GPUTempTarget" xml:space="preserve">
|
<data name="GPUTempTarget" xml:space="preserve">
|
||||||
<value>Temperature Target</value>
|
<value>Sıcaklık Hedefi</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="HibernateAfter" xml:space="preserve">
|
<data name="HibernateAfter" xml:space="preserve">
|
||||||
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
|
<value>Uyku modunda, Hazırda Bekleme Moduna geçiş dakikası (0 - KAPALI)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="High" xml:space="preserve">
|
<data name="High" xml:space="preserve">
|
||||||
<value>High</value>
|
<value>Yüksek</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="KeyBindings" xml:space="preserve">
|
<data name="KeyBindings" xml:space="preserve">
|
||||||
<value>Tuş Bağlantıları</value>
|
<value>Tuş Bağlantıları</value>
|
||||||
@@ -387,10 +402,10 @@ Do you still want to continue?</value>
|
|||||||
<value>Klavye</value>
|
<value>Klavye</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="KillGpuApps" xml:space="preserve">
|
<data name="KillGpuApps" xml:space="preserve">
|
||||||
<value>Eco'ya geçerken dGPU kullanan tüm uygulamaları durdur</value>
|
<value>Eco'ya geçerken harici GPU'yu kullanan tüm uygulamaları durdur</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LaptopBacklight" xml:space="preserve">
|
<data name="LaptopBacklight" xml:space="preserve">
|
||||||
<value>Aydınlatması</value>
|
<value>Laptop Aydınlatması</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LaptopKeyboard" xml:space="preserve">
|
<data name="LaptopKeyboard" xml:space="preserve">
|
||||||
<value>Laptop Klavyesi</value>
|
<value>Laptop Klavyesi</value>
|
||||||
@@ -399,22 +414,22 @@ Do you still want to continue?</value>
|
|||||||
<value>Laptop Ekranı</value>
|
<value>Laptop Ekranı</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Lid" xml:space="preserve">
|
<data name="Lid" xml:space="preserve">
|
||||||
<value>Lid</value>
|
<value>Kapak</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Lightbar" xml:space="preserve">
|
<data name="Lightbar" xml:space="preserve">
|
||||||
<value>Lightbar</value>
|
<value>Işık Çubuğu</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Lighting" xml:space="preserve">
|
<data name="Lighting" xml:space="preserve">
|
||||||
<value>Lighting</value>
|
<value>Işıklandırma</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Logo" xml:space="preserve">
|
<data name="Logo" xml:space="preserve">
|
||||||
<value>Logo</value>
|
<value>Logo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Low" xml:space="preserve">
|
<data name="Low" xml:space="preserve">
|
||||||
<value>Low</value>
|
<value>Düşük</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MatrixAudio" xml:space="preserve">
|
<data name="MatrixAudio" xml:space="preserve">
|
||||||
<value>Audio Visualizer</value>
|
<value>Ses Görselleştirici</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MatrixBanner" xml:space="preserve">
|
<data name="MatrixBanner" xml:space="preserve">
|
||||||
<value>Matrix Banner</value>
|
<value>Matrix Banner</value>
|
||||||
@@ -447,49 +462,49 @@ Do you still want to continue?</value>
|
|||||||
<value>Pil tasarrufu için 60Hz yenileme hızı</value>
|
<value>Pil tasarrufu için 60Hz yenileme hızı</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Minute" xml:space="preserve">
|
<data name="Minute" xml:space="preserve">
|
||||||
<value>Minute</value>
|
<value>Dakika</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Minutes" xml:space="preserve">
|
<data name="Minutes" xml:space="preserve">
|
||||||
<value>Minutes</value>
|
<value>Dakika</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MouseAngleSnapping" xml:space="preserve">
|
<data name="MouseAngleSnapping" xml:space="preserve">
|
||||||
<value>Angle Snapping</value>
|
<value>Angle Snapping</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||||
<value>Auto Power Off After</value>
|
<value>Sonrasında Otomatik Kapat</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MouseButtonResponse" xml:space="preserve">
|
<data name="MouseButtonResponse" xml:space="preserve">
|
||||||
<value>Button Response</value>
|
<value>Tuş Tepkisi</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||||
<value>Lift Off Distance</value>
|
<value>Havalanma Mesafesi</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MouseLowBatteryWarning" xml:space="preserve">
|
<data name="MouseLowBatteryWarning" xml:space="preserve">
|
||||||
<value>Low Battery Warning at</value>
|
<value>Düşük Pil Uyarısı seviyesi</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MousePerformance" xml:space="preserve">
|
<data name="MousePerformance" xml:space="preserve">
|
||||||
<value>Performance</value>
|
<value>Performans</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MouseSynchronize" xml:space="preserve">
|
<data name="MouseSynchronize" xml:space="preserve">
|
||||||
<value>Synchronize with mouse</value>
|
<value>Fare ile senkronize edin</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Multizone" xml:space="preserve">
|
<data name="Multizone" xml:space="preserve">
|
||||||
<value>Çoklu Bölge</value>
|
<value>Çoklu Bölge</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MuteMic" xml:space="preserve">
|
<data name="MuteMic" xml:space="preserve">
|
||||||
<value>Mute Mic</value>
|
<value>Mikrofonu Sustur</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Never" xml:space="preserve">
|
<data name="Never" xml:space="preserve">
|
||||||
<value>Never</value>
|
<value>Asla</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NewUpdates" xml:space="preserve">
|
<data name="NewUpdates" xml:space="preserve">
|
||||||
<value>New updates</value>
|
<value>Yeni güncellemeler</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NoNewUpdates" xml:space="preserve">
|
<data name="NoNewUpdates" xml:space="preserve">
|
||||||
<value>No new updates</value>
|
<value>Güncelleme yok</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NotConnected" xml:space="preserve">
|
<data name="NotConnected" xml:space="preserve">
|
||||||
<value>Not Connected</value>
|
<value>Bağlantı Yok</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OpenGHelper" xml:space="preserve">
|
<data name="OpenGHelper" xml:space="preserve">
|
||||||
<value>G-Helper penceresini aç</value>
|
<value>G-Helper penceresini aç</value>
|
||||||
@@ -513,7 +528,7 @@ Do you still want to continue?</value>
|
|||||||
<value>Performans Modu</value>
|
<value>Performans Modu</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Peripherals" xml:space="preserve">
|
<data name="Peripherals" xml:space="preserve">
|
||||||
<value>Peripherals</value>
|
<value>Çevre Birimleri</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PictureGif" xml:space="preserve">
|
<data name="PictureGif" xml:space="preserve">
|
||||||
<value>Resim / Gif</value>
|
<value>Resim / Gif</value>
|
||||||
@@ -522,7 +537,7 @@ Do you still want to continue?</value>
|
|||||||
<value>Oynat / Duraklat</value>
|
<value>Oynat / Duraklat</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PollingRate" xml:space="preserve">
|
<data name="PollingRate" xml:space="preserve">
|
||||||
<value>Polling Rate</value>
|
<value>Yoklama Sıklığı</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PowerLimits" xml:space="preserve">
|
<data name="PowerLimits" xml:space="preserve">
|
||||||
<value>Güç Sınırları</value>
|
<value>Güç Sınırları</value>
|
||||||
@@ -534,13 +549,13 @@ Do you still want to continue?</value>
|
|||||||
<value>Ekran Görüntüsü Al</value>
|
<value>Ekran Görüntüsü Al</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Profile" xml:space="preserve">
|
<data name="Profile" xml:space="preserve">
|
||||||
<value>Profile</value>
|
<value>Profil</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Quit" xml:space="preserve">
|
<data name="Quit" xml:space="preserve">
|
||||||
<value>Çıkış Yap</value>
|
<value>Çıkış Yap</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RestartGPU" xml:space="preserve">
|
<data name="RestartGPU" xml:space="preserve">
|
||||||
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
|
<value>Bir şey harici GPU'yu kullanıyor ve Eco modunu engelliyor. G-Helper aygıt yöneticisinde harici GPU'yu yeniden başlatmayı denesin mi? (Kendi sorumluluğunuzdadır)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RPM" xml:space="preserve">
|
<data name="RPM" xml:space="preserve">
|
||||||
<value>RPM</value>
|
<value>RPM</value>
|
||||||
@@ -549,10 +564,10 @@ Do you still want to continue?</value>
|
|||||||
<value>Başlangıçta Çalıştır</value>
|
<value>Başlangıçta Çalıştır</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ScreenPadDown" xml:space="preserve">
|
<data name="ScreenPadDown" xml:space="preserve">
|
||||||
<value>Screenpad Brightness Down</value>
|
<value>Screenpad Parlaklığını Azalt</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ScreenPadUp" xml:space="preserve">
|
<data name="ScreenPadUp" xml:space="preserve">
|
||||||
<value>Screenpad Brightness Up</value>
|
<value>Screenpad Parlaklığını Arttır</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Shutdown" xml:space="preserve">
|
<data name="Shutdown" xml:space="preserve">
|
||||||
<value>Kapalı</value>
|
<value>Kapalı</value>
|
||||||
@@ -570,37 +585,37 @@ Do you still want to continue?</value>
|
|||||||
<value>Standart</value>
|
<value>Standart</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Start" xml:space="preserve">
|
<data name="Start" xml:space="preserve">
|
||||||
<value>Start</value>
|
<value>Başlat</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="StartingServices" xml:space="preserve">
|
<data name="StartingServices" xml:space="preserve">
|
||||||
<value>Starting Services</value>
|
<value>Hizmetler Başlatılıyor</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="StartupError" xml:space="preserve">
|
<data name="StartupError" xml:space="preserve">
|
||||||
<value>Başlatma Hatası</value>
|
<value>Başlatma Hatası</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Stop" xml:space="preserve">
|
<data name="Stop" xml:space="preserve">
|
||||||
<value>Stop</value>
|
<value>Durdur</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="StopGPUApps" xml:space="preserve">
|
<data name="StopGPUApps" xml:space="preserve">
|
||||||
<value>Stop GPU Applications</value>
|
<value>GPU Uygulamalarını Durdur</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="StoppingServices" xml:space="preserve">
|
<data name="StoppingServices" xml:space="preserve">
|
||||||
<value>Stopping Services</value>
|
<value>Hizmetler Durduruluyor</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ToggleAura" xml:space="preserve">
|
<data name="ToggleAura" xml:space="preserve">
|
||||||
<value>Aura'yı Değiştir</value>
|
<value>Aura'yı Değiştir</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ToggleClamshellMode" xml:space="preserve">
|
<data name="ToggleClamshellMode" xml:space="preserve">
|
||||||
<value>Auto Toggle Clamshell Mode</value>
|
<value>Otomatik Clamshell Modunu Aç</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ToggleFnLock" xml:space="preserve">
|
<data name="ToggleFnLock" xml:space="preserve">
|
||||||
<value>Toggle Fn-Lock</value>
|
<value>Fn-Lock'u Aç</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ToggleMiniled" xml:space="preserve">
|
<data name="ToggleMiniled" xml:space="preserve">
|
||||||
<value>Toggle Miniled (if supported)</value>
|
<value>Miniled'i Aç (destekliyorsa)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ToggleScreen" xml:space="preserve">
|
<data name="ToggleScreen" xml:space="preserve">
|
||||||
<value>Toggle Screen</value>
|
<value>Ekranı Değiştir</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>Turbo</value>
|
<value>Turbo</value>
|
||||||
@@ -618,22 +633,22 @@ Do you still want to continue?</value>
|
|||||||
<value>Ultimate</value>
|
<value>Ultimate</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UndervoltingRisky" xml:space="preserve">
|
<data name="UndervoltingRisky" xml:space="preserve">
|
||||||
<value>Undervolting is an experimental and risky feature. If applied values are too low for your hardware, it can become unstable, shut down or cause data corruption. If you want to try - start from small values first, click Apply and test what works for you.</value>
|
<value>Undervolting deneysel ve riskli bir özelliktir. Uygulanan değerler cihazınız için çok düşükse, cihazınız stabil çalışmayabilir, kapanabilir veya veri kaybına uğrayabilir. Yine de denemek istiyorsanız, önce küçük değerlerden başlayıp Uygula'ya tıklayın ve sizin için uygun olanı test edin.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Updates" xml:space="preserve">
|
<data name="Updates" xml:space="preserve">
|
||||||
<value>Updates</value>
|
<value>Güncellemeler</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VersionLabel" xml:space="preserve">
|
<data name="VersionLabel" xml:space="preserve">
|
||||||
<value>Sürüm</value>
|
<value>Sürüm</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VolumeDown" xml:space="preserve">
|
<data name="VolumeDown" xml:space="preserve">
|
||||||
<value>Volume Down</value>
|
<value>Sesi Azalt</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VolumeMute" xml:space="preserve">
|
<data name="VolumeMute" xml:space="preserve">
|
||||||
<value>Ses Kısma</value>
|
<value>Sesi Kapat</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VolumeUp" xml:space="preserve">
|
<data name="VolumeUp" xml:space="preserve">
|
||||||
<value>Volume Up</value>
|
<value>Sesi Arttır</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="WindowTop" xml:space="preserve">
|
<data name="WindowTop" xml:space="preserve">
|
||||||
<value>Uygulama penceresini her zaman en üstte tut</value>
|
<value>Uygulama penceresini her zaman en üstte tut</value>
|
||||||
|
|||||||
@@ -117,6 +117,9 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="Acceleration" xml:space="preserve">
|
||||||
|
<value>Acceleration</value>
|
||||||
|
</data>
|
||||||
<data name="ACPIError" xml:space="preserve">
|
<data name="ACPIError" xml:space="preserve">
|
||||||
<value>Не вдається під'єднатися до ASUS ACPI. Програма не може працювати без нього. Спробуйте встановити Asus System Control Interface</value>
|
<value>Не вдається під'єднатися до ASUS ACPI. Програма не може працювати без нього. Спробуйте встановити Asus System Control Interface</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -133,7 +136,7 @@
|
|||||||
<value>Ультимативний режим потребує перезавантаження</value>
|
<value>Ультимативний режим потребує перезавантаження</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AlertUltimateTitle" xml:space="preserve">
|
<data name="AlertUltimateTitle" xml:space="preserve">
|
||||||
<value>Перезавантажитися зараз?</value>
|
<value>Перезавантажити зараз?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AnimationSpeed" xml:space="preserve">
|
<data name="AnimationSpeed" xml:space="preserve">
|
||||||
<value>Швидкість Анімації</value>
|
<value>Швидкість Анімації</value>
|
||||||
@@ -249,12 +252,18 @@
|
|||||||
<data name="BatteryHealth" xml:space="preserve">
|
<data name="BatteryHealth" xml:space="preserve">
|
||||||
<value>Стан батареї</value>
|
<value>Стан батареї</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BatteryLimitFull" xml:space="preserve">
|
||||||
|
<value>One time charge to 100%</value>
|
||||||
|
</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>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BootSound" xml:space="preserve">
|
||||||
|
<value>Boot Sound</value>
|
||||||
|
</data>
|
||||||
<data name="Brightness" xml:space="preserve">
|
<data name="Brightness" xml:space="preserve">
|
||||||
<value>Яскравість</value>
|
<value>Яскравість</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -264,6 +273,9 @@
|
|||||||
<data name="BrightnessUp" xml:space="preserve">
|
<data name="BrightnessUp" xml:space="preserve">
|
||||||
<value>Підвищити яскравість</value>
|
<value>Підвищити яскравість</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Calibrate" xml:space="preserve">
|
||||||
|
<value>Calibrate</value>
|
||||||
|
</data>
|
||||||
<data name="Charging" xml:space="preserve">
|
<data name="Charging" xml:space="preserve">
|
||||||
<value>Зарядка</value>
|
<value>Зарядка</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -276,6 +288,9 @@
|
|||||||
<data name="Custom" xml:space="preserve">
|
<data name="Custom" xml:space="preserve">
|
||||||
<value>Своє</value>
|
<value>Своє</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Deceleration" xml:space="preserve">
|
||||||
|
<value>Deceleration</value>
|
||||||
|
</data>
|
||||||
<data name="Default" xml:space="preserve">
|
<data name="Default" xml:space="preserve">
|
||||||
<value>За замовчуванням</value>
|
<value>За замовчуванням</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -286,7 +301,7 @@
|
|||||||
<value>Розрядка</value>
|
<value>Розрядка</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DownloadUpdate" xml:space="preserve">
|
<data name="DownloadUpdate" xml:space="preserve">
|
||||||
<value>Download</value>
|
<value>Завантажити</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DriverAndSoftware" xml:space="preserve">
|
<data name="DriverAndSoftware" xml:space="preserve">
|
||||||
<value>Драйвери та програми</value>
|
<value>Драйвери та програми</value>
|
||||||
@@ -375,7 +390,7 @@
|
|||||||
<value>Temperature Target</value>
|
<value>Temperature Target</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="HibernateAfter" xml:space="preserve">
|
<data name="HibernateAfter" xml:space="preserve">
|
||||||
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
|
<value>Хвилин до режиму глибокого сну з акумулятором (0 - Вимкнено)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="High" xml:space="preserve">
|
<data name="High" xml:space="preserve">
|
||||||
<value>Висока</value>
|
<value>Висока</value>
|
||||||
@@ -540,7 +555,7 @@
|
|||||||
<value>Вихід</value>
|
<value>Вихід</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RestartGPU" xml:space="preserve">
|
<data name="RestartGPU" xml:space="preserve">
|
||||||
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
|
<value>Щось використовує dGPU та запобігає Еко-режиму. Дозвольте G-Helper спробувати перезапустити dGPU у менеджері пристрою? (Будь ласка, продовжуйте на власний ризик)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RPM" xml:space="preserve">
|
<data name="RPM" xml:space="preserve">
|
||||||
<value>Оберти</value>
|
<value>Оберти</value>
|
||||||
|
|||||||
@@ -117,6 +117,9 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="Acceleration" xml:space="preserve">
|
||||||
|
<value>Gia tốc</value>
|
||||||
|
</data>
|
||||||
<data name="ACPIError" xml:space="preserve">
|
<data name="ACPIError" xml:space="preserve">
|
||||||
<value>Không thể kết nối đến ASUS ACPI. Chương trình cần nó để có thể hoạt động. Hãy thử cài lại Asus System Control Interface</value>
|
<value>Không thể kết nối đến ASUS ACPI. Chương trình cần nó để có thể hoạt động. Hãy thử cài lại Asus System Control Interface</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -163,28 +166,28 @@
|
|||||||
<value>Dịch vụ Asus đang chạy</value>
|
<value>Dịch vụ Asus đang chạy</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraBatteryState" xml:space="preserve">
|
<data name="AuraBatteryState" xml:space="preserve">
|
||||||
<value>Battery State</value>
|
<value>Trạng thái pin</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraBreathe" xml:space="preserve">
|
<data name="AuraBreathe" xml:space="preserve">
|
||||||
<value>Hơi thở</value>
|
<value>Hơi thở</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraClockwise" xml:space="preserve">
|
<data name="AuraClockwise" xml:space="preserve">
|
||||||
<value>Clockwise</value>
|
<value>Chiều kim đồng hồ</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraColorCycle" xml:space="preserve">
|
<data name="AuraColorCycle" xml:space="preserve">
|
||||||
<value>Chuyển màu</value>
|
<value>Chuyển màu</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraComet" xml:space="preserve">
|
<data name="AuraComet" xml:space="preserve">
|
||||||
<value>Comet</value>
|
<value>Sao chổi</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraCounterClockwise" xml:space="preserve">
|
<data name="AuraCounterClockwise" xml:space="preserve">
|
||||||
<value>Counterclockwise</value>
|
<value>Ngược chiều kim đồng hồ</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraFast" xml:space="preserve">
|
<data name="AuraFast" xml:space="preserve">
|
||||||
<value>Nhanh</value>
|
<value>Nhanh</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraLightingMode" xml:space="preserve">
|
<data name="AuraLightingMode" xml:space="preserve">
|
||||||
<value>Lighting Mode</value>
|
<value>Chế độ sáng</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraNormal" xml:space="preserve">
|
<data name="AuraNormal" xml:space="preserve">
|
||||||
<value>Bình thường</value>
|
<value>Bình thường</value>
|
||||||
@@ -193,10 +196,10 @@
|
|||||||
<value>Cầu vồng</value>
|
<value>Cầu vồng</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraRandomColor" xml:space="preserve">
|
<data name="AuraRandomColor" xml:space="preserve">
|
||||||
<value>Random</value>
|
<value>Ngẫu nhiên</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraReact" xml:space="preserve">
|
<data name="AuraReact" xml:space="preserve">
|
||||||
<value>React</value>
|
<value>Phản ứng</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraSlow" xml:space="preserve">
|
<data name="AuraSlow" xml:space="preserve">
|
||||||
<value>Chậm</value>
|
<value>Chậm</value>
|
||||||
@@ -208,7 +211,7 @@
|
|||||||
<value>Nhấp nháy</value>
|
<value>Nhấp nháy</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneAll" xml:space="preserve">
|
<data name="AuraZoneAll" xml:space="preserve">
|
||||||
<value>All</value>
|
<value>Tất cả</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraZoneDock" xml:space="preserve">
|
<data name="AuraZoneDock" xml:space="preserve">
|
||||||
<value>Dock</value>
|
<value>Dock</value>
|
||||||
@@ -241,13 +244,16 @@
|
|||||||
<value>Cân bằng</value>
|
<value>Cân bằng</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BatteryCharge" xml:space="preserve">
|
<data name="BatteryCharge" xml:space="preserve">
|
||||||
<value>Charge</value>
|
<value>Sạc</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||||
<value>Giới hạn sạc</value>
|
<value>Giới hạn sạc</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BatteryHealth" xml:space="preserve">
|
<data name="BatteryHealth" xml:space="preserve">
|
||||||
<value>Battery Health</value>
|
<value>Sức khoẻ pin</value>
|
||||||
|
</data>
|
||||||
|
<data name="BatteryLimitFull" xml:space="preserve">
|
||||||
|
<value>One time charge to 100%</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||||
<value>Cập nhật BIOS và driver</value>
|
<value>Cập nhật BIOS và driver</value>
|
||||||
@@ -255,6 +261,9 @@
|
|||||||
<data name="Boot" xml:space="preserve">
|
<data name="Boot" xml:space="preserve">
|
||||||
<value>Khởi động</value>
|
<value>Khởi động</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BootSound" xml:space="preserve">
|
||||||
|
<value>Boot Sound</value>
|
||||||
|
</data>
|
||||||
<data name="Brightness" xml:space="preserve">
|
<data name="Brightness" xml:space="preserve">
|
||||||
<value>Độ sáng</value>
|
<value>Độ sáng</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -264,8 +273,11 @@
|
|||||||
<data name="BrightnessUp" xml:space="preserve">
|
<data name="BrightnessUp" xml:space="preserve">
|
||||||
<value>Tăng độ sáng</value>
|
<value>Tăng độ sáng</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Calibrate" xml:space="preserve">
|
||||||
|
<value>Calibrate</value>
|
||||||
|
</data>
|
||||||
<data name="Charging" xml:space="preserve">
|
<data name="Charging" xml:space="preserve">
|
||||||
<value>Charging</value>
|
<value>Đang sạc</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Color" xml:space="preserve">
|
<data name="Color" xml:space="preserve">
|
||||||
<value>Màu</value>
|
<value>Màu</value>
|
||||||
@@ -276,6 +288,9 @@
|
|||||||
<data name="Custom" xml:space="preserve">
|
<data name="Custom" xml:space="preserve">
|
||||||
<value>Tuỳ chỉnh</value>
|
<value>Tuỳ chỉnh</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Deceleration" xml:space="preserve">
|
||||||
|
<value>Giảm tốc</value>
|
||||||
|
</data>
|
||||||
<data name="Default" xml:space="preserve">
|
<data name="Default" xml:space="preserve">
|
||||||
<value>Mặc định</value>
|
<value>Mặc định</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -286,7 +301,7 @@
|
|||||||
<value>Đang không sạc</value>
|
<value>Đang không sạc</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DownloadUpdate" xml:space="preserve">
|
<data name="DownloadUpdate" xml:space="preserve">
|
||||||
<value>Download</value>
|
<value>Tải xuống</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DriverAndSoftware" xml:space="preserve">
|
<data name="DriverAndSoftware" xml:space="preserve">
|
||||||
<value>Driver và phần mềm</value>
|
<value>Driver và phần mềm</value>
|
||||||
|
|||||||
@@ -117,6 +117,9 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="Acceleration" xml:space="preserve">
|
||||||
|
<value>Acceleration</value>
|
||||||
|
</data>
|
||||||
<data name="ACPIError" xml:space="preserve">
|
<data name="ACPIError" xml:space="preserve">
|
||||||
<value>无法连接到ASUS ACPI。 没有它应用程序将无法运行。 请尝试安装Asus System Control Interface驱动。</value>
|
<value>无法连接到ASUS ACPI。 没有它应用程序将无法运行。 请尝试安装Asus System Control Interface驱动。</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -151,7 +154,7 @@
|
|||||||
<value>应用</value>
|
<value>应用</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ApplyFanCurve" xml:space="preserve">
|
<data name="ApplyFanCurve" xml:space="preserve">
|
||||||
<value>应用自定义扇形曲线</value>
|
<value>应用自定义风扇曲线</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ApplyPowerLimits" xml:space="preserve">
|
<data name="ApplyPowerLimits" xml:space="preserve">
|
||||||
<value>应用功率限制</value>
|
<value>应用功率限制</value>
|
||||||
@@ -249,12 +252,18 @@
|
|||||||
<data name="BatteryHealth" xml:space="preserve">
|
<data name="BatteryHealth" xml:space="preserve">
|
||||||
<value>电池健康</value>
|
<value>电池健康</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BatteryLimitFull" xml:space="preserve">
|
||||||
|
<value>One time charge to 100%</value>
|
||||||
|
</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>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BootSound" xml:space="preserve">
|
||||||
|
<value>开机音效</value>
|
||||||
|
</data>
|
||||||
<data name="Brightness" xml:space="preserve">
|
<data name="Brightness" xml:space="preserve">
|
||||||
<value>亮度</value>
|
<value>亮度</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -264,6 +273,9 @@
|
|||||||
<data name="BrightnessUp" xml:space="preserve">
|
<data name="BrightnessUp" xml:space="preserve">
|
||||||
<value>提高亮度</value>
|
<value>提高亮度</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Calibrate" xml:space="preserve">
|
||||||
|
<value>Calibrate</value>
|
||||||
|
</data>
|
||||||
<data name="Charging" xml:space="preserve">
|
<data name="Charging" xml:space="preserve">
|
||||||
<value>充电中</value>
|
<value>充电中</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -276,6 +288,9 @@
|
|||||||
<data name="Custom" xml:space="preserve">
|
<data name="Custom" xml:space="preserve">
|
||||||
<value>自定义设置</value>
|
<value>自定义设置</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Deceleration" xml:space="preserve">
|
||||||
|
<value>Deceleration</value>
|
||||||
|
</data>
|
||||||
<data name="Default" xml:space="preserve">
|
<data name="Default" xml:space="preserve">
|
||||||
<value>默认</value>
|
<value>默认</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -286,7 +301,7 @@
|
|||||||
<value>正在放电</value>
|
<value>正在放电</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DownloadUpdate" xml:space="preserve">
|
<data name="DownloadUpdate" xml:space="preserve">
|
||||||
<value>Download</value>
|
<value>下载</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DriverAndSoftware" xml:space="preserve">
|
<data name="DriverAndSoftware" xml:space="preserve">
|
||||||
<value>驱动程序和软件</value>
|
<value>驱动程序和软件</value>
|
||||||
@@ -540,7 +555,7 @@
|
|||||||
<value>退出</value>
|
<value>退出</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RestartGPU" xml:space="preserve">
|
<data name="RestartGPU" xml:space="preserve">
|
||||||
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
|
<value>有程序正在使用独显并阻止进入集显模式。要让 G-Helper 在设备管理器中重新启动独显吗?(请自行承担风险)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RPM" xml:space="preserve">
|
<data name="RPM" xml:space="preserve">
|
||||||
<value>转/分钟</value>
|
<value>转/分钟</value>
|
||||||
@@ -600,7 +615,7 @@
|
|||||||
<value>切换 MiniLED (如果支持)</value>
|
<value>切换 MiniLED (如果支持)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ToggleScreen" xml:space="preserve">
|
<data name="ToggleScreen" xml:space="preserve">
|
||||||
<value>切换屏幕</value>
|
<value>关闭屏幕</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>增强模式</value>
|
<value>增强模式</value>
|
||||||
|
|||||||
@@ -117,6 +117,9 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="Acceleration" xml:space="preserve">
|
||||||
|
<value>滑鼠加速</value>
|
||||||
|
</data>
|
||||||
<data name="ACPIError" xml:space="preserve">
|
<data name="ACPIError" xml:space="preserve">
|
||||||
<value>無法連結到華碩 ACPI。 没有它,應用程式將無法執行。 嘗試安裝Asus System Control Interface</value>
|
<value>無法連結到華碩 ACPI。 没有它,應用程式將無法執行。 嘗試安裝Asus System Control Interface</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -172,7 +175,7 @@
|
|||||||
<value>順時針</value>
|
<value>順時針</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraColorCycle" xml:space="preserve">
|
<data name="AuraColorCycle" xml:space="preserve">
|
||||||
<value>循環</value>
|
<value>彩色循環</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraComet" xml:space="preserve">
|
<data name="AuraComet" xml:space="preserve">
|
||||||
<value>彗星</value>
|
<value>彗星</value>
|
||||||
@@ -202,7 +205,7 @@
|
|||||||
<value>慢</value>
|
<value>慢</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraStatic" xml:space="preserve">
|
<data name="AuraStatic" xml:space="preserve">
|
||||||
<value>靜態</value>
|
<value>靜態恆亮</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraStrobe" xml:space="preserve">
|
<data name="AuraStrobe" xml:space="preserve">
|
||||||
<value>閃爍</value>
|
<value>閃爍</value>
|
||||||
@@ -235,7 +238,7 @@
|
|||||||
<value>喚醒時</value>
|
<value>喚醒時</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BacklightTimeout" xml:space="preserve">
|
<data name="BacklightTimeout" xml:space="preserve">
|
||||||
<value>超時插入/使用電池 (0 = 不關閉)</value>
|
<value>閒置幾秒後關閉燈光:插電時 / 使用電池 (0 = 不關閉)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Balanced" xml:space="preserve">
|
<data name="Balanced" xml:space="preserve">
|
||||||
<value>平衡模式</value>
|
<value>平衡模式</value>
|
||||||
@@ -249,12 +252,18 @@
|
|||||||
<data name="BatteryHealth" xml:space="preserve">
|
<data name="BatteryHealth" xml:space="preserve">
|
||||||
<value>電池健康度</value>
|
<value>電池健康度</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BatteryLimitFull" xml:space="preserve">
|
||||||
|
<value>僅本次將電力充滿</value>
|
||||||
|
</data>
|
||||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||||
<value>BIOS與驅動程式更新 Updates</value>
|
<value>BIOS與驅動程式更新 Updates</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Boot" xml:space="preserve">
|
<data name="Boot" xml:space="preserve">
|
||||||
<value>開機時</value>
|
<value>開機時</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BootSound" xml:space="preserve">
|
||||||
|
<value>開機音效</value>
|
||||||
|
</data>
|
||||||
<data name="Brightness" xml:space="preserve">
|
<data name="Brightness" xml:space="preserve">
|
||||||
<value>亮度</value>
|
<value>亮度</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -264,6 +273,9 @@
|
|||||||
<data name="BrightnessUp" xml:space="preserve">
|
<data name="BrightnessUp" xml:space="preserve">
|
||||||
<value>螢幕亮度提高</value>
|
<value>螢幕亮度提高</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Calibrate" xml:space="preserve">
|
||||||
|
<value>校準</value>
|
||||||
|
</data>
|
||||||
<data name="Charging" xml:space="preserve">
|
<data name="Charging" xml:space="preserve">
|
||||||
<value>充電中</value>
|
<value>充電中</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -276,6 +288,9 @@
|
|||||||
<data name="Custom" xml:space="preserve">
|
<data name="Custom" xml:space="preserve">
|
||||||
<value>自定義設置</value>
|
<value>自定義設置</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Deceleration" xml:space="preserve">
|
||||||
|
<value>滑鼠減速</value>
|
||||||
|
</data>
|
||||||
<data name="Default" xml:space="preserve">
|
<data name="Default" xml:space="preserve">
|
||||||
<value>預設</value>
|
<value>預設</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -286,7 +301,7 @@
|
|||||||
<value>正在釋放電力</value>
|
<value>正在釋放電力</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DownloadUpdate" xml:space="preserve">
|
<data name="DownloadUpdate" xml:space="preserve">
|
||||||
<value>Download</value>
|
<value>下載</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DriverAndSoftware" xml:space="preserve">
|
<data name="DriverAndSoftware" xml:space="preserve">
|
||||||
<value>驅動程式與軟體</value>
|
<value>驅動程式與軟體</value>
|
||||||
@@ -540,7 +555,7 @@
|
|||||||
<value>退出</value>
|
<value>退出</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RestartGPU" xml:space="preserve">
|
<data name="RestartGPU" xml:space="preserve">
|
||||||
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
|
<value>有其他程式正在使用獨顯導致無法切換至節能模式. 是否讓G-Helper重新啟動獨顯? * 請自行評估風險</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RPM" xml:space="preserve">
|
<data name="RPM" xml:space="preserve">
|
||||||
<value>每分鐘轉數</value>
|
<value>每分鐘轉數</value>
|
||||||
|
|||||||
BIN
app/Resources/Font.otf
Normal file
BIN
app/Resources/Font.otf
Normal file
Binary file not shown.
@@ -11,13 +11,13 @@ namespace Ryzen
|
|||||||
internal class RyzenControl
|
internal class RyzenControl
|
||||||
{
|
{
|
||||||
|
|
||||||
public const int MinCPUUV = -30;
|
public static int MinCPUUV => AppConfig.Get("min_uv", -30);
|
||||||
public const int MaxCPUUV = 0;
|
public const int MaxCPUUV = 0;
|
||||||
|
|
||||||
public const int MinIGPUUV = -20;
|
public const int MinIGPUUV = -20;
|
||||||
public const int MaxIGPUUV = 0;
|
public const int MaxIGPUUV = 0;
|
||||||
|
|
||||||
public const int MinTemp = 75;
|
public static int MinTemp => AppConfig.Get("min_temp", 75);
|
||||||
public const int MaxTemp = 98;
|
public const int MaxTemp = 98;
|
||||||
|
|
||||||
public static string[] FAM = { "RAVEN", "PICASSO", "DALI", "RENOIR/LUCIENNE", "MATISSE", "VANGOGH", "VERMEER", "CEZANNE/BARCELO", "REMBRANDT", "PHOENIX", "RAPHAEL/DRAGON RANGE" };
|
public static string[] FAM = { "RAVEN", "PICASSO", "DALI", "RENOIR/LUCIENNE", "MATISSE", "VANGOGH", "VERMEER", "CEZANNE/BARCELO", "REMBRANDT", "PHOENIX", "RAPHAEL/DRAGON RANGE" };
|
||||||
|
|||||||
35
app/Settings.Designer.cs
generated
35
app/Settings.Designer.cs
generated
@@ -40,6 +40,7 @@ namespace GHelper
|
|||||||
labelMatrix = new Label();
|
labelMatrix = new Label();
|
||||||
checkMatrix = new CheckBox();
|
checkMatrix = new CheckBox();
|
||||||
panelBattery = new Panel();
|
panelBattery = new Panel();
|
||||||
|
buttonBatteryFull = new RButton();
|
||||||
sliderBattery = new Slider();
|
sliderBattery = new Slider();
|
||||||
panelBatteryTitle = new Panel();
|
panelBatteryTitle = new Panel();
|
||||||
labelBattery = new Label();
|
labelBattery = new Label();
|
||||||
@@ -278,6 +279,7 @@ namespace GHelper
|
|||||||
//
|
//
|
||||||
panelBattery.AutoSize = true;
|
panelBattery.AutoSize = true;
|
||||||
panelBattery.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
panelBattery.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||||
|
panelBattery.Controls.Add(buttonBatteryFull);
|
||||||
panelBattery.Controls.Add(sliderBattery);
|
panelBattery.Controls.Add(sliderBattery);
|
||||||
panelBattery.Controls.Add(panelBatteryTitle);
|
panelBattery.Controls.Add(panelBatteryTitle);
|
||||||
panelBattery.Dock = DockStyle.Top;
|
panelBattery.Dock = DockStyle.Top;
|
||||||
@@ -285,19 +287,39 @@ namespace GHelper
|
|||||||
panelBattery.Margin = new Padding(0);
|
panelBattery.Margin = new Padding(0);
|
||||||
panelBattery.Name = "panelBattery";
|
panelBattery.Name = "panelBattery";
|
||||||
panelBattery.Padding = new Padding(20, 20, 20, 10);
|
panelBattery.Padding = new Padding(20, 20, 20, 10);
|
||||||
panelBattery.Size = new Size(827, 114);
|
panelBattery.Size = new Size(827, 119);
|
||||||
panelBattery.TabIndex = 5;
|
panelBattery.TabIndex = 5;
|
||||||
//
|
//
|
||||||
|
// buttonBatteryFull
|
||||||
|
//
|
||||||
|
buttonBatteryFull.Activated = false;
|
||||||
|
buttonBatteryFull.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||||
|
buttonBatteryFull.BackColor = SystemColors.ControlLight;
|
||||||
|
buttonBatteryFull.BorderColor = Color.Transparent;
|
||||||
|
buttonBatteryFull.BorderRadius = 2;
|
||||||
|
buttonBatteryFull.FlatAppearance.BorderSize = 0;
|
||||||
|
buttonBatteryFull.FlatStyle = FlatStyle.Flat;
|
||||||
|
buttonBatteryFull.Font = new Font("Segoe UI", 7.125F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
buttonBatteryFull.ForeColor = SystemColors.ControlDark;
|
||||||
|
buttonBatteryFull.Location = new Point(730, 66);
|
||||||
|
buttonBatteryFull.Margin = new Padding(0);
|
||||||
|
buttonBatteryFull.Name = "buttonBatteryFull";
|
||||||
|
buttonBatteryFull.Secondary = true;
|
||||||
|
buttonBatteryFull.Size = new Size(73, 36);
|
||||||
|
buttonBatteryFull.TabIndex = 41;
|
||||||
|
buttonBatteryFull.Text = "100%";
|
||||||
|
buttonBatteryFull.UseVisualStyleBackColor = false;
|
||||||
|
//
|
||||||
// sliderBattery
|
// sliderBattery
|
||||||
//
|
//
|
||||||
sliderBattery.AccessibleName = "Battery Charge Limit";
|
sliderBattery.AccessibleName = "Battery Charge Limit";
|
||||||
sliderBattery.Dock = DockStyle.Top;
|
sliderBattery.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||||
sliderBattery.Location = new Point(20, 64);
|
sliderBattery.Location = new Point(20, 65);
|
||||||
sliderBattery.Margin = new Padding(4);
|
sliderBattery.Margin = new Padding(4);
|
||||||
sliderBattery.Max = 100;
|
sliderBattery.Max = 100;
|
||||||
sliderBattery.Min = 40;
|
sliderBattery.Min = 40;
|
||||||
sliderBattery.Name = "sliderBattery";
|
sliderBattery.Name = "sliderBattery";
|
||||||
sliderBattery.Size = new Size(787, 40);
|
sliderBattery.Size = new Size(716, 40);
|
||||||
sliderBattery.Step = 5;
|
sliderBattery.Step = 5;
|
||||||
sliderBattery.TabIndex = 20;
|
sliderBattery.TabIndex = 20;
|
||||||
sliderBattery.Text = "sliderBattery";
|
sliderBattery.Text = "sliderBattery";
|
||||||
@@ -354,7 +376,7 @@ namespace GHelper
|
|||||||
panelFooter.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
panelFooter.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||||
panelFooter.Controls.Add(tableButtons);
|
panelFooter.Controls.Add(tableButtons);
|
||||||
panelFooter.Dock = DockStyle.Top;
|
panelFooter.Dock = DockStyle.Top;
|
||||||
panelFooter.Location = new Point(11, 1435);
|
panelFooter.Location = new Point(11, 1440);
|
||||||
panelFooter.Margin = new Padding(0);
|
panelFooter.Margin = new Padding(0);
|
||||||
panelFooter.Name = "panelFooter";
|
panelFooter.Name = "panelFooter";
|
||||||
panelFooter.Padding = new Padding(20);
|
panelFooter.Padding = new Padding(20);
|
||||||
@@ -1232,7 +1254,7 @@ namespace GHelper
|
|||||||
panelVersion.Controls.Add(labelCharge);
|
panelVersion.Controls.Add(labelCharge);
|
||||||
panelVersion.Controls.Add(checkStartup);
|
panelVersion.Controls.Add(checkStartup);
|
||||||
panelVersion.Dock = DockStyle.Top;
|
panelVersion.Dock = DockStyle.Top;
|
||||||
panelVersion.Location = new Point(11, 1379);
|
panelVersion.Location = new Point(11, 1384);
|
||||||
panelVersion.Margin = new Padding(4);
|
panelVersion.Margin = new Padding(4);
|
||||||
panelVersion.Name = "panelVersion";
|
panelVersion.Name = "panelVersion";
|
||||||
panelVersion.Size = new Size(827, 56);
|
panelVersion.Size = new Size(827, 56);
|
||||||
@@ -1550,5 +1572,6 @@ namespace GHelper
|
|||||||
private RButton buttonUpdates;
|
private RButton buttonUpdates;
|
||||||
private Label labelCharge;
|
private Label labelCharge;
|
||||||
private RButton buttonFnLock;
|
private RButton buttonFnLock;
|
||||||
|
private RButton buttonBatteryFull;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
312
app/Settings.cs
312
app/Settings.cs
@@ -2,6 +2,7 @@
|
|||||||
using GHelper.AutoUpdate;
|
using GHelper.AutoUpdate;
|
||||||
using GHelper.Battery;
|
using GHelper.Battery;
|
||||||
using GHelper.Display;
|
using GHelper.Display;
|
||||||
|
using GHelper.Fan;
|
||||||
using GHelper.Gpu;
|
using GHelper.Gpu;
|
||||||
using GHelper.Helpers;
|
using GHelper.Helpers;
|
||||||
using GHelper.Input;
|
using GHelper.Input;
|
||||||
@@ -25,19 +26,25 @@ namespace GHelper
|
|||||||
ScreenControl screenControl = new ScreenControl();
|
ScreenControl screenControl = new ScreenControl();
|
||||||
AutoUpdateControl updateControl;
|
AutoUpdateControl updateControl;
|
||||||
|
|
||||||
public AniMatrixControl matrix;
|
AsusMouseSettings? mouseSettings;
|
||||||
|
|
||||||
|
public AniMatrixControl matrixControl;
|
||||||
|
|
||||||
public static System.Timers.Timer sensorTimer = default!;
|
public static System.Timers.Timer sensorTimer = default!;
|
||||||
|
|
||||||
public Fans? fans;
|
public Matrix? matrixForm;
|
||||||
public Extra? keyb;
|
public Fans? fansForm;
|
||||||
public Updates? updates;
|
public Extra? extraForm;
|
||||||
|
public Updates? updatesForm;
|
||||||
|
|
||||||
static long lastRefresh;
|
static long lastRefresh;
|
||||||
static long lastBatteryRefresh;
|
static long lastBatteryRefresh;
|
||||||
|
static long lastLostFocus;
|
||||||
|
|
||||||
bool isGpuSection = true;
|
bool isGpuSection = true;
|
||||||
|
|
||||||
bool batteryMouseOver = false;
|
bool batteryMouseOver = false;
|
||||||
|
bool batteryFullMouseOver = false;
|
||||||
|
|
||||||
public SettingsForm()
|
public SettingsForm()
|
||||||
{
|
{
|
||||||
@@ -47,7 +54,7 @@ namespace GHelper
|
|||||||
|
|
||||||
gpuControl = new GPUModeControl(this);
|
gpuControl = new GPUModeControl(this);
|
||||||
updateControl = new AutoUpdateControl(this);
|
updateControl = new AutoUpdateControl(this);
|
||||||
matrix = new AniMatrixControl(this);
|
matrixControl = new AniMatrixControl(this);
|
||||||
|
|
||||||
buttonSilent.Text = Properties.Strings.Silent;
|
buttonSilent.Text = Properties.Strings.Silent;
|
||||||
buttonBalanced.Text = Properties.Strings.Balanced;
|
buttonBalanced.Text = Properties.Strings.Balanced;
|
||||||
@@ -82,6 +89,7 @@ namespace GHelper
|
|||||||
buttonUpdates.Text = Properties.Strings.Updates;
|
buttonUpdates.Text = Properties.Strings.Updates;
|
||||||
|
|
||||||
FormClosing += SettingsForm_FormClosing;
|
FormClosing += SettingsForm_FormClosing;
|
||||||
|
Deactivate += SettingsForm_LostFocus;
|
||||||
|
|
||||||
buttonSilent.BorderColor = colorEco;
|
buttonSilent.BorderColor = colorEco;
|
||||||
buttonBalanced.BorderColor = colorStandard;
|
buttonBalanced.BorderColor = colorStandard;
|
||||||
@@ -189,6 +197,10 @@ namespace GHelper
|
|||||||
buttonPeripheral2.MouseEnter += ButtonPeripheral_MouseEnter;
|
buttonPeripheral2.MouseEnter += ButtonPeripheral_MouseEnter;
|
||||||
buttonPeripheral3.MouseEnter += ButtonPeripheral_MouseEnter;
|
buttonPeripheral3.MouseEnter += ButtonPeripheral_MouseEnter;
|
||||||
|
|
||||||
|
buttonBatteryFull.MouseEnter += ButtonBatteryFull_MouseEnter;
|
||||||
|
buttonBatteryFull.MouseLeave += ButtonBatteryFull_MouseLeave;
|
||||||
|
buttonBatteryFull.Click += ButtonBatteryFull_Click;
|
||||||
|
|
||||||
Text = "G-Helper " + (ProcessHelper.IsUserAdministrator() ? "—" : "-") + " " + AppConfig.GetModelShort();
|
Text = "G-Helper " + (ProcessHelper.IsUserAdministrator() ? "—" : "-") + " " + AppConfig.GetModelShort();
|
||||||
TopMost = AppConfig.Is("topmost");
|
TopMost = AppConfig.Is("topmost");
|
||||||
|
|
||||||
@@ -202,6 +214,27 @@ namespace GHelper
|
|||||||
panelPerformance.Focus();
|
panelPerformance.Focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void SettingsForm_LostFocus(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
lastLostFocus = DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ButtonBatteryFull_Click(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
BatteryControl.ToggleBatteryLimitFull();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ButtonBatteryFull_MouseLeave(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
batteryFullMouseOver = false;
|
||||||
|
RefreshSensors(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ButtonBatteryFull_MouseEnter(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
batteryFullMouseOver = true;
|
||||||
|
labelCharge.Text = Properties.Strings.BatteryLimitFull;
|
||||||
|
}
|
||||||
|
|
||||||
private void SettingsForm_Resize(object? sender, EventArgs e)
|
private void SettingsForm_Resize(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
@@ -242,7 +275,8 @@ namespace GHelper
|
|||||||
if (this.Visible)
|
if (this.Visible)
|
||||||
{
|
{
|
||||||
screenControl.InitScreen();
|
screenControl.InitScreen();
|
||||||
gpuControl.InitXGM();
|
VisualizeXGM();
|
||||||
|
|
||||||
Task.Run((Action)RefreshPeripheralsBattery);
|
Task.Run((Action)RefreshPeripheralsBattery);
|
||||||
updateControl.CheckForUpdates();
|
updateControl.CheckForUpdates();
|
||||||
}
|
}
|
||||||
@@ -255,17 +289,28 @@ namespace GHelper
|
|||||||
|
|
||||||
private void ButtonUpdates_Click(object? sender, EventArgs e)
|
private void ButtonUpdates_Click(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (updates == null || updates.Text == "")
|
if (updatesForm == null || updatesForm.Text == "")
|
||||||
{
|
{
|
||||||
updates = new Updates();
|
updatesForm = new Updates();
|
||||||
updates.Show();
|
AddOwnedForm(updatesForm);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (updatesForm.Visible)
|
||||||
|
{
|
||||||
|
updatesForm.Close();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
updates.Close();
|
updatesForm.Show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void VisualiseMatrix(string image)
|
||||||
|
{
|
||||||
|
if (matrixForm == null || matrixForm.Text == "") return;
|
||||||
|
matrixForm.VisualiseMatrix(image);
|
||||||
|
}
|
||||||
|
|
||||||
protected override void WndProc(ref Message m)
|
protected override void WndProc(ref Message m)
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -376,7 +421,7 @@ namespace GHelper
|
|||||||
//contextMenuStrip.ShowCheckMargin = true;
|
//contextMenuStrip.ShowCheckMargin = true;
|
||||||
contextMenuStrip.RenderMode = ToolStripRenderMode.System;
|
contextMenuStrip.RenderMode = ToolStripRenderMode.System;
|
||||||
|
|
||||||
if (CheckSystemDarkModeStatus())
|
if (darkTheme)
|
||||||
{
|
{
|
||||||
contextMenuStrip.BackColor = this.BackColor;
|
contextMenuStrip.BackColor = this.BackColor;
|
||||||
contextMenuStrip.ForeColor = this.ForeColor;
|
contextMenuStrip.ForeColor = this.ForeColor;
|
||||||
@@ -503,14 +548,30 @@ namespace GHelper
|
|||||||
private void CheckMatrix_CheckedChanged(object? sender, EventArgs e)
|
private void CheckMatrix_CheckedChanged(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
AppConfig.Set("matrix_auto", checkMatrix.Checked ? 1 : 0);
|
AppConfig.Set("matrix_auto", checkMatrix.Checked ? 1 : 0);
|
||||||
matrix.SetMatrix();
|
matrixControl.SetMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void ButtonMatrix_Click(object? sender, EventArgs e)
|
private void ButtonMatrix_Click(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
matrix.OpenMatrixPicture();
|
|
||||||
|
if (matrixForm == null || matrixForm.Text == "")
|
||||||
|
{
|
||||||
|
matrixForm = new Matrix();
|
||||||
|
AddOwnedForm(matrixForm);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (matrixForm.Visible)
|
||||||
|
{
|
||||||
|
matrixForm.Close();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
matrixForm.FormPosition();
|
||||||
|
matrixForm.Show();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetMatrixRunning(int mode)
|
public void SetMatrixRunning(int mode)
|
||||||
@@ -518,26 +579,27 @@ namespace GHelper
|
|||||||
Invoke(delegate
|
Invoke(delegate
|
||||||
{
|
{
|
||||||
comboMatrixRunning.SelectedIndex = mode;
|
comboMatrixRunning.SelectedIndex = mode;
|
||||||
|
if (comboMatrix.SelectedIndex == 0) comboMatrix.SelectedIndex = 3;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ComboMatrixRunning_SelectedValueChanged(object? sender, EventArgs e)
|
private void ComboMatrixRunning_SelectedValueChanged(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
AppConfig.Set("matrix_running", comboMatrixRunning.SelectedIndex);
|
AppConfig.Set("matrix_running", comboMatrixRunning.SelectedIndex);
|
||||||
matrix.SetMatrix();
|
matrixControl.SetMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void ComboMatrix_SelectedValueChanged(object? sender, EventArgs e)
|
private void ComboMatrix_SelectedValueChanged(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
AppConfig.Set("matrix_brightness", comboMatrix.SelectedIndex);
|
AppConfig.Set("matrix_brightness", comboMatrix.SelectedIndex);
|
||||||
matrix.SetMatrix();
|
matrixControl.SetMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void LabelCPUFan_Click(object? sender, EventArgs e)
|
private void LabelCPUFan_Click(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
HardwareControl.fanRpm = !HardwareControl.fanRpm;
|
FanSensorControl.fanRpm = !FanSensorControl.fanRpm;
|
||||||
RefreshSensors(true);
|
RefreshSensors(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -551,8 +613,7 @@ namespace GHelper
|
|||||||
if (colorDlg.ShowDialog() == DialogResult.OK)
|
if (colorDlg.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
AppConfig.Set("aura_color2", colorDlg.Color.ToArgb());
|
AppConfig.Set("aura_color2", colorDlg.Color.ToArgb());
|
||||||
AsusUSB.ApplyAura();
|
SetAura();
|
||||||
VisualiseAura();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -563,14 +624,19 @@ namespace GHelper
|
|||||||
|
|
||||||
private void ButtonKeyboard_Click(object? sender, EventArgs e)
|
private void ButtonKeyboard_Click(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (keyb == null || keyb.Text == "")
|
if (extraForm == null || extraForm.Text == "")
|
||||||
{
|
{
|
||||||
keyb = new Extra();
|
extraForm = new Extra();
|
||||||
keyb.Show();
|
AddOwnedForm(extraForm);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (extraForm.Visible)
|
||||||
|
{
|
||||||
|
extraForm.Close();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
keyb.Close();
|
extraForm.Show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -578,7 +644,7 @@ namespace GHelper
|
|||||||
{
|
{
|
||||||
Invoke(delegate
|
Invoke(delegate
|
||||||
{
|
{
|
||||||
if (fans != null && fans.Text != "") fans.InitAll();
|
if (fansForm != null && fansForm.Text != "") fansForm.InitAll();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -586,26 +652,27 @@ namespace GHelper
|
|||||||
{
|
{
|
||||||
Invoke(delegate
|
Invoke(delegate
|
||||||
{
|
{
|
||||||
if (fans != null && fans.Text != "") fans.InitGPU();
|
if (fansForm != null && fansForm.Text != "") fansForm.InitGPU();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void FansToggle(int index = 0)
|
public void FansToggle(int index = 0)
|
||||||
{
|
{
|
||||||
if (fans == null || fans.Text == "")
|
if (fansForm == null || fansForm.Text == "")
|
||||||
{
|
{
|
||||||
fans = new Fans();
|
fansForm = new Fans();
|
||||||
|
AddOwnedForm(fansForm);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fans.Visible)
|
if (fansForm.Visible)
|
||||||
{
|
{
|
||||||
fans.Close();
|
fansForm.Close();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fans.FormPosition();
|
fansForm.FormPosition();
|
||||||
fans.Show();
|
fansForm.Show();
|
||||||
fans.ToggleNavigation(index);
|
fansForm.ToggleNavigation(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -625,8 +692,7 @@ namespace GHelper
|
|||||||
if (colorDlg.ShowDialog() == DialogResult.OK)
|
if (colorDlg.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
AppConfig.Set("aura_color", colorDlg.Color.ToArgb());
|
AppConfig.Set("aura_color", colorDlg.Color.ToArgb());
|
||||||
AsusUSB.ApplyAura();
|
SetAura();
|
||||||
VisualiseAura();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -659,17 +725,29 @@ namespace GHelper
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetAura()
|
||||||
|
{
|
||||||
|
Task.Run(() =>
|
||||||
|
{
|
||||||
|
AsusUSB.ApplyAura();
|
||||||
|
VisualiseAura();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public void VisualiseAura()
|
public void VisualiseAura()
|
||||||
{
|
{
|
||||||
pictureColor.BackColor = AsusUSB.Color1;
|
Invoke(delegate
|
||||||
pictureColor2.BackColor = AsusUSB.Color2;
|
{
|
||||||
pictureColor2.Visible = AsusUSB.HasSecondColor();
|
pictureColor.BackColor = AsusUSB.Color1;
|
||||||
|
pictureColor2.BackColor = AsusUSB.Color2;
|
||||||
|
pictureColor2.Visible = AsusUSB.HasSecondColor();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void InitMatrix()
|
public void InitMatrix()
|
||||||
{
|
{
|
||||||
|
|
||||||
if (!matrix.IsValid)
|
if (!matrixControl.IsValid)
|
||||||
{
|
{
|
||||||
panelMatrix.Visible = false;
|
panelMatrix.Visible = false;
|
||||||
return;
|
return;
|
||||||
@@ -690,13 +768,14 @@ namespace GHelper
|
|||||||
comboKeyboard.SelectedIndex += 1;
|
comboKeyboard.SelectedIndex += 1;
|
||||||
else
|
else
|
||||||
comboKeyboard.SelectedIndex = 0;
|
comboKeyboard.SelectedIndex = 0;
|
||||||
|
|
||||||
|
Program.toast.RunToast(comboKeyboard.GetItemText(comboKeyboard.SelectedItem), ToastIcon.BacklightUp);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ComboKeyboard_SelectedValueChanged(object? sender, EventArgs e)
|
private void ComboKeyboard_SelectedValueChanged(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
AppConfig.Set("aura_mode", (int)comboKeyboard.SelectedValue);
|
AppConfig.Set("aura_mode", (int)comboKeyboard.SelectedValue);
|
||||||
AsusUSB.ApplyAura();
|
SetAura();
|
||||||
VisualiseAura();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -720,7 +799,7 @@ namespace GHelper
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void VisualiseScreen(bool screenEnabled, bool screenAuto, int frequency, int maxFrequency, int overdrive, bool overdriveSetting, int miniled)
|
public void VisualiseScreen(bool screenEnabled, bool screenAuto, int frequency, int maxFrequency, int overdrive, bool overdriveSetting, int miniled, bool hdr)
|
||||||
{
|
{
|
||||||
|
|
||||||
ButtonEnabled(button60Hz, screenEnabled);
|
ButtonEnabled(button60Hz, screenEnabled);
|
||||||
@@ -761,7 +840,8 @@ namespace GHelper
|
|||||||
|
|
||||||
if (miniled >= 0)
|
if (miniled >= 0)
|
||||||
{
|
{
|
||||||
buttonMiniled.Activated = (miniled == 1);
|
buttonMiniled.Activated = (miniled == 1) || hdr;
|
||||||
|
buttonMiniled.Enabled = !hdr;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -772,20 +852,45 @@ namespace GHelper
|
|||||||
|
|
||||||
private void ButtonQuit_Click(object? sender, EventArgs e)
|
private void ButtonQuit_Click(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
matrix.Dispose();
|
matrixControl.Dispose();
|
||||||
Close();
|
Close();
|
||||||
Program.trayIcon.Visible = false;
|
Program.trayIcon.Visible = false;
|
||||||
Application.Exit();
|
Application.Exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Closes all forms except the settings. Hides the settings
|
||||||
|
/// </summary>
|
||||||
public void HideAll()
|
public void HideAll()
|
||||||
{
|
{
|
||||||
this.Hide();
|
this.Hide();
|
||||||
if (fans != null && fans.Text != "") fans.Close();
|
if (fansForm != null && fansForm.Text != "") fansForm.Close();
|
||||||
if (keyb != null && keyb.Text != "") keyb.Close();
|
if (extraForm != null && extraForm.Text != "") extraForm.Close();
|
||||||
if (updates != null && updates.Text != "") updates.Close();
|
if (updatesForm != null && updatesForm.Text != "") updatesForm.Close();
|
||||||
|
if (matrixForm != null && matrixForm.Text != "") matrixForm.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Brings all visible windows to the top, with settings being the focus
|
||||||
|
/// </summary>
|
||||||
|
public void ShowAll()
|
||||||
|
{
|
||||||
|
this.Activate();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Check if any of fans, keyboard, update, or itself has focus
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Focus state</returns>
|
||||||
|
public bool HasAnyFocus()
|
||||||
|
{
|
||||||
|
return (fansForm != null && fansForm.ContainsFocus) ||
|
||||||
|
(extraForm != null && extraForm.ContainsFocus) ||
|
||||||
|
(updatesForm != null && updatesForm.ContainsFocus) ||
|
||||||
|
(matrixForm != null && matrixForm.ContainsFocus) ||
|
||||||
|
this.ContainsFocus ||
|
||||||
|
Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastLostFocus) < 300;
|
||||||
|
}
|
||||||
|
|
||||||
private void SettingsForm_FormClosing(object? sender, FormClosingEventArgs e)
|
private void SettingsForm_FormClosing(object? sender, FormClosingEventArgs e)
|
||||||
{
|
{
|
||||||
@@ -867,7 +972,7 @@ namespace GHelper
|
|||||||
labelMidFan.Text = "Mid " + HardwareControl.midFan;
|
labelMidFan.Text = "Mid " + HardwareControl.midFan;
|
||||||
|
|
||||||
labelBattery.Text = battery;
|
labelBattery.Text = battery;
|
||||||
if (!batteryMouseOver) labelCharge.Text = charge;
|
if (!batteryMouseOver && !batteryFullMouseOver) labelCharge.Text = charge;
|
||||||
|
|
||||||
//panelPerformance.AccessibleName = labelPerf.Text + " " + trayTip;
|
//panelPerformance.AccessibleName = labelPerf.Text + " " + trayTip;
|
||||||
});
|
});
|
||||||
@@ -879,8 +984,8 @@ namespace GHelper
|
|||||||
|
|
||||||
public void LabelFansResult(string text)
|
public void LabelFansResult(string text)
|
||||||
{
|
{
|
||||||
if (fans != null && fans.Text != "")
|
if (fansForm != null && fansForm.Text != "")
|
||||||
fans.LabelFansResult(text);
|
fansForm.LabelFansResult(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ShowMode(int mode)
|
public void ShowMode(int mode)
|
||||||
@@ -953,15 +1058,24 @@ namespace GHelper
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void VisualizeXGM(bool connected, bool activated)
|
public void VisualizeXGM(int GPUMode = -1)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
bool connected = Program.acpi.IsXGConnected();
|
||||||
buttonXGM.Enabled = buttonXGM.Visible = connected;
|
buttonXGM.Enabled = buttonXGM.Visible = connected;
|
||||||
|
|
||||||
if (!connected) return;
|
if (!connected) return;
|
||||||
|
|
||||||
buttonXGM.Activated = activated;
|
if (GPUMode != -1)
|
||||||
|
ButtonEnabled(buttonXGM, AppConfig.IsNoGPUModes() || GPUMode != AsusACPI.GPUModeEco);
|
||||||
|
|
||||||
if (activated)
|
|
||||||
|
int activated = Program.acpi.DeviceGet(AsusACPI.GPUXG);
|
||||||
|
Logger.WriteLine("XGM Activated flag: " + activated);
|
||||||
|
|
||||||
|
buttonXGM.Activated = activated == 1;
|
||||||
|
|
||||||
|
if (activated == 1)
|
||||||
{
|
{
|
||||||
ButtonEnabled(buttonOptimized, false);
|
ButtonEnabled(buttonOptimized, false);
|
||||||
ButtonEnabled(buttonEco, false);
|
ButtonEnabled(buttonEco, false);
|
||||||
@@ -978,16 +1092,30 @@ namespace GHelper
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void HideUltimateMode()
|
public void VisualiseGPUButtons(bool eco = true, bool ultimate = true)
|
||||||
{
|
{
|
||||||
tableGPU.Controls.Remove(buttonUltimate);
|
if (!eco)
|
||||||
tablePerf.ColumnCount = 0;
|
{
|
||||||
tableGPU.ColumnCount = 0;
|
menuEco.Visible = buttonEco.Visible = false;
|
||||||
tableScreen.ColumnCount = 0;
|
menuOptimized.Visible = buttonOptimized.Visible = false;
|
||||||
menuUltimate.Visible = false;
|
buttonStopGPU.Visible = true;
|
||||||
|
tableGPU.ColumnCount = 3;
|
||||||
|
tableScreen.ColumnCount = 3;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
buttonStopGPU.Visible = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ultimate)
|
||||||
|
{
|
||||||
|
menuUltimate.Visible = buttonUltimate.Visible = false;
|
||||||
|
tableGPU.ColumnCount = 3;
|
||||||
|
tableScreen.ColumnCount = 3;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void HideGPUModes()
|
public void HideGPUModes(bool gpuExists)
|
||||||
{
|
{
|
||||||
isGpuSection = false;
|
isGpuSection = false;
|
||||||
|
|
||||||
@@ -995,14 +1123,17 @@ namespace GHelper
|
|||||||
buttonStandard.Visible = false;
|
buttonStandard.Visible = false;
|
||||||
buttonUltimate.Visible = false;
|
buttonUltimate.Visible = false;
|
||||||
buttonOptimized.Visible = false;
|
buttonOptimized.Visible = false;
|
||||||
|
|
||||||
buttonStopGPU.Visible = true;
|
buttonStopGPU.Visible = true;
|
||||||
|
|
||||||
|
tableGPU.ColumnCount = 0;
|
||||||
|
|
||||||
SetContextMenu();
|
SetContextMenu();
|
||||||
if (HardwareControl.FormatFan(Program.acpi.DeviceGet(AsusACPI.GPU_Fan)) is null) panelGPU.Visible = false;
|
|
||||||
|
panelGPU.Visible = gpuExists;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void LockGPUModes(string text = null)
|
public void LockGPUModes(string text = null)
|
||||||
{
|
{
|
||||||
Invoke(delegate
|
Invoke(delegate
|
||||||
@@ -1045,7 +1176,6 @@ namespace GHelper
|
|||||||
buttonOptimized.Activated = GPUAuto;
|
buttonOptimized.Activated = GPUAuto;
|
||||||
labelGPU.Text = Properties.Strings.GPUMode + ": " + Properties.Strings.GPUModeEco;
|
labelGPU.Text = Properties.Strings.GPUMode + ": " + Properties.Strings.GPUModeEco;
|
||||||
Program.trayIcon.Icon = Properties.Resources.eco;
|
Program.trayIcon.Icon = Properties.Resources.eco;
|
||||||
ButtonEnabled(buttonXGM, false);
|
|
||||||
break;
|
break;
|
||||||
case AsusACPI.GPUModeUltimate:
|
case AsusACPI.GPUModeUltimate:
|
||||||
buttonUltimate.Activated = true;
|
buttonUltimate.Activated = true;
|
||||||
@@ -1058,10 +1188,12 @@ namespace GHelper
|
|||||||
buttonOptimized.Activated = GPUAuto;
|
buttonOptimized.Activated = GPUAuto;
|
||||||
labelGPU.Text = Properties.Strings.GPUMode + ": " + Properties.Strings.GPUModeStandard;
|
labelGPU.Text = Properties.Strings.GPUMode + ": " + Properties.Strings.GPUModeStandard;
|
||||||
Program.trayIcon.Icon = Properties.Resources.standard;
|
Program.trayIcon.Icon = Properties.Resources.standard;
|
||||||
ButtonEnabled(buttonXGM, true);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VisualizeXGM(GPUMode);
|
||||||
|
|
||||||
|
|
||||||
if (isGpuSection)
|
if (isGpuSection)
|
||||||
{
|
{
|
||||||
menuEco.Checked = buttonEco.Activated;
|
menuEco.Checked = buttonEco.Activated;
|
||||||
@@ -1099,6 +1231,22 @@ namespace GHelper
|
|||||||
{
|
{
|
||||||
labelBatteryTitle.Text = Properties.Strings.BatteryChargeLimit + ": " + limit.ToString() + "%";
|
labelBatteryTitle.Text = Properties.Strings.BatteryChargeLimit + ": " + limit.ToString() + "%";
|
||||||
sliderBattery.Value = limit;
|
sliderBattery.Value = limit;
|
||||||
|
VisualiseBatteryFull();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void VisualiseBatteryFull()
|
||||||
|
{
|
||||||
|
if (AppConfig.Is("charge_full"))
|
||||||
|
{
|
||||||
|
buttonBatteryFull.BackColor = colorStandard;
|
||||||
|
buttonBatteryFull.ForeColor = SystemColors.ControlLightLight;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
buttonBatteryFull.BackColor = buttonSecond;
|
||||||
|
buttonBatteryFull.ForeColor = SystemColors.ControlDark;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1122,8 +1270,16 @@ namespace GHelper
|
|||||||
|
|
||||||
if (m.IsDeviceReady)
|
if (m.IsDeviceReady)
|
||||||
{
|
{
|
||||||
b.Text = m.GetDisplayName() + "\n" + m.Battery + "%"
|
if (m.HasBattery())
|
||||||
+ (m.Charging ? "(" + Properties.Strings.Charging + ")" : "");
|
{
|
||||||
|
b.Text = m.GetDisplayName() + "\n" + m.Battery + "%"
|
||||||
|
+ (m.Charging ? "(" + Properties.Strings.Charging + ")" : "");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
b.Text = m.GetDisplayName();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1175,6 +1331,12 @@ namespace GHelper
|
|||||||
|
|
||||||
private void ButtonPeripheral_Click(object? sender, EventArgs e)
|
private void ButtonPeripheral_Click(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
if (mouseSettings is not null)
|
||||||
|
{
|
||||||
|
mouseSettings.Close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int index = 0;
|
int index = 0;
|
||||||
if (sender == buttonPeripheral2) index = 1;
|
if (sender == buttonPeripheral2) index = 1;
|
||||||
if (sender == buttonPeripheral3) index = 2;
|
if (sender == buttonPeripheral3) index = 2;
|
||||||
@@ -1195,16 +1357,30 @@ namespace GHelper
|
|||||||
//Should not happen if all device classes are implemented correctly. But better safe than sorry.
|
//Should not happen if all device classes are implemented correctly. But better safe than sorry.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
AsusMouseSettings s = new AsusMouseSettings(am);
|
mouseSettings = new AsusMouseSettings(am);
|
||||||
if (!s.IsDisposed)
|
mouseSettings.TopMost = true;
|
||||||
|
mouseSettings.FormClosed += MouseSettings_FormClosed;
|
||||||
|
mouseSettings.Disposed += MouseSettings_Disposed;
|
||||||
|
if (!mouseSettings.IsDisposed)
|
||||||
{
|
{
|
||||||
s.Show();
|
mouseSettings.Show();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mouseSettings = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MouseSettings_Disposed(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
mouseSettings = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MouseSettings_FormClosed(object? sender, FormClosedEventArgs e)
|
||||||
|
{
|
||||||
|
mouseSettings = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void VisualiseFnLock()
|
public void VisualiseFnLock()
|
||||||
|
|||||||
@@ -62,6 +62,23 @@ namespace GHelper.UI
|
|||||||
|
|
||||||
private static bool IsDarkTheme()
|
private static bool IsDarkTheme()
|
||||||
{
|
{
|
||||||
|
string? uiMode = AppConfig.GetString("ui_mode");
|
||||||
|
|
||||||
|
if (uiMode is not null && uiMode.ToLower() == "dark")
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (uiMode is not null && uiMode.ToLower() == "light")
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (uiMode is not null && uiMode.ToLower() == "windows")
|
||||||
|
{
|
||||||
|
return CheckSystemDarkModeStatus();
|
||||||
|
}
|
||||||
|
|
||||||
using var key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize");
|
using var key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize");
|
||||||
var registryValueObject = key?.GetValue("AppsUseLightTheme");
|
var registryValueObject = key?.GetValue("AppsUseLightTheme");
|
||||||
|
|
||||||
@@ -71,7 +88,7 @@ namespace GHelper.UI
|
|||||||
|
|
||||||
public bool InitTheme(bool setDPI = false)
|
public bool InitTheme(bool setDPI = false)
|
||||||
{
|
{
|
||||||
bool newDarkTheme = CheckSystemDarkModeStatus();
|
bool newDarkTheme = IsDarkTheme();
|
||||||
bool changed = darkTheme != newDarkTheme;
|
bool changed = darkTheme != newDarkTheme;
|
||||||
darkTheme = newDarkTheme;
|
darkTheme = newDarkTheme;
|
||||||
|
|
||||||
|
|||||||
24
app/Updates.Designer.cs
generated
24
app/Updates.Designer.cs
generated
@@ -54,16 +54,17 @@ namespace GHelper
|
|||||||
//
|
//
|
||||||
tableBios.AutoSize = true;
|
tableBios.AutoSize = true;
|
||||||
tableBios.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
tableBios.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||||
tableBios.ColumnCount = 3;
|
tableBios.ColumnCount = 4;
|
||||||
tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
|
tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
|
||||||
tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
|
tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40F));
|
||||||
|
tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 15F));
|
||||||
tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
|
tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
|
||||||
tableBios.Dock = DockStyle.Top;
|
tableBios.Dock = DockStyle.Top;
|
||||||
tableBios.Location = new Point(20, 20);
|
tableBios.Location = new Point(20, 20);
|
||||||
tableBios.Margin = new Padding(4);
|
tableBios.Margin = new Padding(4);
|
||||||
tableBios.MinimumSize = new Size(1100, 0);
|
tableBios.MinimumSize = new Size(1300, 0);
|
||||||
tableBios.Name = "tableBios";
|
tableBios.Name = "tableBios";
|
||||||
tableBios.Size = new Size(1216, 0);
|
tableBios.Size = new Size(1300, 0);
|
||||||
tableBios.TabIndex = 0;
|
tableBios.TabIndex = 0;
|
||||||
//
|
//
|
||||||
// labelBIOS
|
// labelBIOS
|
||||||
@@ -105,7 +106,7 @@ namespace GHelper
|
|||||||
//
|
//
|
||||||
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, GraphicsUnit.Point);
|
||||||
labelUpdates.Location = new Point(941, 23);
|
labelUpdates.Location = new Point(810, 23);
|
||||||
labelUpdates.Name = "labelUpdates";
|
labelUpdates.Name = "labelUpdates";
|
||||||
labelUpdates.Size = new Size(245, 32);
|
labelUpdates.Size = new Size(245, 32);
|
||||||
labelUpdates.TabIndex = 4;
|
labelUpdates.TabIndex = 4;
|
||||||
@@ -156,16 +157,17 @@ namespace GHelper
|
|||||||
//
|
//
|
||||||
tableDrivers.AutoSize = true;
|
tableDrivers.AutoSize = true;
|
||||||
tableDrivers.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
tableDrivers.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||||
tableDrivers.ColumnCount = 3;
|
tableDrivers.ColumnCount = 4;
|
||||||
tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
|
tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
|
||||||
tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
|
tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40F));
|
||||||
|
tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 15F));
|
||||||
tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
|
tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
|
||||||
tableDrivers.Dock = DockStyle.Top;
|
tableDrivers.Dock = DockStyle.Top;
|
||||||
tableDrivers.Location = new Point(20, 20);
|
tableDrivers.Location = new Point(20, 20);
|
||||||
tableDrivers.Margin = new Padding(4);
|
tableDrivers.Margin = new Padding(4);
|
||||||
tableDrivers.MinimumSize = new Size(1100, 0);
|
tableDrivers.MinimumSize = new Size(1300, 0);
|
||||||
tableDrivers.Name = "tableDrivers";
|
tableDrivers.Name = "tableDrivers";
|
||||||
tableDrivers.Size = new Size(1216, 0);
|
tableDrivers.Size = new Size(1300, 0);
|
||||||
tableDrivers.TabIndex = 0;
|
tableDrivers.TabIndex = 0;
|
||||||
//
|
//
|
||||||
// panelDriversTitle
|
// panelDriversTitle
|
||||||
|
|||||||
171
app/Updates.cs
171
app/Updates.cs
@@ -7,31 +7,33 @@ using System.Text.Json;
|
|||||||
namespace GHelper
|
namespace GHelper
|
||||||
{
|
{
|
||||||
|
|
||||||
struct DriverDownload
|
|
||||||
{
|
|
||||||
public string categoryName;
|
|
||||||
public string title;
|
|
||||||
public string version;
|
|
||||||
public string downloadUrl;
|
|
||||||
public JsonElement hardwares;
|
|
||||||
}
|
|
||||||
|
|
||||||
public partial class Updates : RForm
|
public partial class Updates : RForm
|
||||||
{
|
{
|
||||||
|
const int DRIVER_NOT_FOUND = 2;
|
||||||
|
const int DRIVER_NEWER = 1;
|
||||||
|
|
||||||
//static int rowCount = 0;
|
//static int rowCount = 0;
|
||||||
static string model;
|
|
||||||
static string bios;
|
static string bios;
|
||||||
|
static string model;
|
||||||
|
|
||||||
static int updatesCount = 0;
|
static int updatesCount = 0;
|
||||||
private static long lastUpdate;
|
private static long lastUpdate;
|
||||||
|
public struct DriverDownload
|
||||||
|
{
|
||||||
|
public string categoryName;
|
||||||
|
public string title;
|
||||||
|
public string version;
|
||||||
|
public string downloadUrl;
|
||||||
|
public string date;
|
||||||
|
public JsonElement hardwares;
|
||||||
|
}
|
||||||
private void LoadUpdates(bool force = false)
|
private void LoadUpdates(bool force = false)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (!force && (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastUpdate) < 5000)) return;
|
if (!force && (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastUpdate) < 5000)) return;
|
||||||
lastUpdate = DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
lastUpdate = DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
||||||
|
|
||||||
InitBiosAndModel();
|
(bios, model) = AppConfig.GetBiosAndModel();
|
||||||
|
|
||||||
updatesCount = 0;
|
updatesCount = 0;
|
||||||
labelUpdates.ForeColor = colorEco;
|
labelUpdates.ForeColor = colorEco;
|
||||||
@@ -114,33 +116,71 @@ namespace GHelper
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private string InitBiosAndModel()
|
|
||||||
{
|
|
||||||
using (ManagementObjectSearcher objSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_BIOS"))
|
|
||||||
{
|
|
||||||
using (ManagementObjectCollection objCollection = objSearcher.Get())
|
|
||||||
{
|
|
||||||
foreach (ManagementObject obj in objCollection)
|
|
||||||
if (obj["SMBIOSBIOSVersion"] is not null)
|
|
||||||
{
|
|
||||||
string[] results = obj["SMBIOSBIOSVersion"].ToString().Split(".");
|
|
||||||
if (results.Length > 1)
|
|
||||||
{
|
|
||||||
model = results[0];
|
|
||||||
bios = results[1];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
model = obj["SMBIOSBIOSVersion"].ToString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return "";
|
public void VisualiseDriver(DriverDownload driver, TableLayoutPanel table)
|
||||||
}
|
{
|
||||||
|
Invoke(delegate
|
||||||
|
{
|
||||||
|
string versionText = driver.version.Replace("latest version at the ", "");
|
||||||
|
Label versionLabel = new Label { Text = versionText, Anchor = AnchorStyles.Left, AutoSize = true };
|
||||||
|
versionLabel.Cursor = Cursors.Hand;
|
||||||
|
versionLabel.Font = new Font(versionLabel.Font, FontStyle.Underline);
|
||||||
|
versionLabel.ForeColor = colorEco;
|
||||||
|
versionLabel.Padding = new Padding(5, 5, 5, 5);
|
||||||
|
versionLabel.Click += delegate
|
||||||
|
{
|
||||||
|
Process.Start(new ProcessStartInfo(driver.downloadUrl) { UseShellExecute = true });
|
||||||
|
};
|
||||||
|
|
||||||
|
table.RowStyles.Add(new RowStyle(SizeType.AutoSize));
|
||||||
|
table.Controls.Add(new Label { Text = driver.categoryName, Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Padding = new Padding(5, 5, 5, 5) }, 0, table.RowCount);
|
||||||
|
table.Controls.Add(new Label { Text = driver.title, Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Padding = new Padding(5, 5, 5, 5) }, 1, table.RowCount);
|
||||||
|
table.Controls.Add(new Label { Text = driver.date, Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Padding = new Padding(5, 5, 5, 5) }, 2, table.RowCount);
|
||||||
|
table.Controls.Add(versionLabel, 3, table.RowCount);
|
||||||
|
table.RowCount++;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ShowTable(TableLayoutPanel table)
|
||||||
|
{
|
||||||
|
Invoke(delegate
|
||||||
|
{
|
||||||
|
table.Visible = true;
|
||||||
|
ResumeLayout(false);
|
||||||
|
PerformLayout();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void VisualiseNewDriver(int position, int newer, TableLayoutPanel table)
|
||||||
|
{
|
||||||
|
var label = table.GetControlFromPosition(3, position) as Label;
|
||||||
|
if (label != null)
|
||||||
|
{
|
||||||
|
Invoke(delegate
|
||||||
|
{
|
||||||
|
if (newer == DRIVER_NEWER)
|
||||||
|
{
|
||||||
|
label.Font = new Font(label.Font, FontStyle.Underline | FontStyle.Bold);
|
||||||
|
label.ForeColor = colorTurbo;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newer == DRIVER_NOT_FOUND) label.ForeColor = Color.Gray;
|
||||||
|
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async void DriversAsync(string url, int type, TableLayoutPanel table)
|
public void VisualiseNewCount(int updatesCount, TableLayoutPanel table)
|
||||||
|
{
|
||||||
|
Invoke(delegate
|
||||||
|
{
|
||||||
|
labelUpdates.Text = $"{Properties.Strings.NewUpdates}: {updatesCount}";
|
||||||
|
labelUpdates.ForeColor = colorTurbo;
|
||||||
|
labelUpdates.Font = new Font(labelUpdates.Font, FontStyle.Bold);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public async void DriversAsync(string url, int type, TableLayoutPanel table)
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
@@ -183,41 +223,17 @@ namespace GHelper
|
|||||||
driver.version = file.GetProperty("Version").ToString().Replace("V", "");
|
driver.version = file.GetProperty("Version").ToString().Replace("V", "");
|
||||||
driver.downloadUrl = file.GetProperty("DownloadUrl").GetProperty("Global").ToString();
|
driver.downloadUrl = file.GetProperty("DownloadUrl").GetProperty("Global").ToString();
|
||||||
driver.hardwares = file.GetProperty("HardwareInfoList");
|
driver.hardwares = file.GetProperty("HardwareInfoList");
|
||||||
|
driver.date = file.GetProperty("ReleaseDate").ToString();
|
||||||
drivers.Add(driver);
|
drivers.Add(driver);
|
||||||
|
|
||||||
|
VisualiseDriver(driver, table);
|
||||||
Invoke(delegate
|
|
||||||
{
|
|
||||||
string versionText = driver.version.Replace("latest version at the ", "");
|
|
||||||
Label versionLabel = new Label { Text = versionText, Anchor = AnchorStyles.Left, AutoSize = true };
|
|
||||||
versionLabel.Cursor = Cursors.Hand;
|
|
||||||
versionLabel.Font = new Font(versionLabel.Font, FontStyle.Underline);
|
|
||||||
versionLabel.ForeColor = colorEco;
|
|
||||||
versionLabel.Padding = new Padding(5, 5, 5, 5);
|
|
||||||
versionLabel.Click += delegate
|
|
||||||
{
|
|
||||||
Process.Start(new ProcessStartInfo(driver.downloadUrl) { UseShellExecute = true });
|
|
||||||
};
|
|
||||||
|
|
||||||
table.RowStyles.Add(new RowStyle(SizeType.AutoSize));
|
|
||||||
table.Controls.Add(new Label { Text = driver.categoryName, Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Padding = new Padding(5, 5, 5, 5) }, 0, table.RowCount);
|
|
||||||
table.Controls.Add(new Label { Text = driver.title, Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Padding = new Padding(5, 5, 5, 5) }, 1, table.RowCount);
|
|
||||||
table.Controls.Add(versionLabel, 2, table.RowCount);
|
|
||||||
table.RowCount++;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
oldTitle = title;
|
oldTitle = title;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ShowTable(table);
|
||||||
Invoke(delegate
|
|
||||||
{
|
|
||||||
table.Visible = true;
|
|
||||||
ResumeLayout(false);
|
|
||||||
PerformLayout();
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
Dictionary<string, string> devices = new();
|
Dictionary<string, string> devices = new();
|
||||||
@@ -228,38 +244,29 @@ namespace GHelper
|
|||||||
int count = 0;
|
int count = 0;
|
||||||
foreach (var driver in drivers)
|
foreach (var driver in drivers)
|
||||||
{
|
{
|
||||||
int newer = -2;
|
int newer = DRIVER_NOT_FOUND;
|
||||||
if (type == 0 && driver.hardwares.ToString().Length > 0)
|
if (type == 0 && driver.hardwares.ToString().Length > 0)
|
||||||
for (int k = 0; k < driver.hardwares.GetArrayLength(); k++)
|
for (int k = 0; k < driver.hardwares.GetArrayLength(); k++)
|
||||||
{
|
{
|
||||||
var deviceID = driver.hardwares[k].GetProperty("hardwareid").ToString();
|
var deviceID = driver.hardwares[k].GetProperty("hardwareid").ToString();
|
||||||
var localVersion = devices.Where(p => p.Key.Contains(deviceID)).Select(p => p.Value).FirstOrDefault();
|
var localVersions = devices.Where(p => p.Key.Contains(deviceID)).Select(p => p.Value);
|
||||||
if (localVersion is not null)
|
foreach (var localVersion in localVersions)
|
||||||
{
|
{
|
||||||
newer = new Version(driver.version).CompareTo(new Version(localVersion));
|
newer = Math.Min(newer, new Version(driver.version).CompareTo(new Version(localVersion)));
|
||||||
break;
|
Logger.WriteLine(driver.title + " " + deviceID + " "+ driver.version + " vs " + localVersion + " = " + newer);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type == 1)
|
if (type == 1)
|
||||||
newer = Int32.Parse(driver.version) > Int32.Parse(bios) ? 1 : -1;
|
newer = Int32.Parse(driver.version) > Int32.Parse(bios) ? 1 : -1;
|
||||||
|
|
||||||
if (newer > 0)
|
VisualiseNewDriver(count, newer, table);
|
||||||
{
|
|
||||||
var label = table.GetControlFromPosition(2, count) as Label;
|
|
||||||
if (label != null)
|
|
||||||
{
|
|
||||||
Invoke(delegate
|
|
||||||
{
|
|
||||||
updatesCount++;
|
|
||||||
label.Font = new Font(label.Font, FontStyle.Underline | FontStyle.Bold);
|
|
||||||
label.ForeColor = colorTurbo;
|
|
||||||
|
|
||||||
labelUpdates.Text = $"{Properties.Strings.NewUpdates}: {updatesCount}";
|
if (newer == DRIVER_NEWER)
|
||||||
labelUpdates.ForeColor = colorTurbo;
|
{
|
||||||
labelUpdates.Font = new Font(label.Font, FontStyle.Bold);
|
updatesCount++;
|
||||||
});
|
VisualiseNewCount(updatesCount, table);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
count++;
|
count++;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing"">Blue</data>
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ Small and lightweight Armoury Crate alternative for Asus laptops offering almost
|
|||||||
- Don't forget to [**Check Requirements**](#requirements-mandatory) and [**Read FAQ**](#question-faq)
|
- Don't forget to [**Check Requirements**](#requirements-mandatory) and [**Read FAQ**](#question-faq)
|
||||||
- If you like this app, please give it a star :star: and spread the word about it!
|
- If you like this app, please give it a star :star: and spread the word about it!
|
||||||
|
|
||||||
#### Support project in [:euro: EUR](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA) | [💵 USD](https://www.paypal.com/donate/?hosted_button_id=SRM6QUX6ACXDY) | [:credit_card: Stripe](https://buy.stripe.com/00gaFJ9Lf79v7WobII)
|
#### Support project in [:euro: EUR](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA) | [💵 USD](https://www.paypal.com/donate/?hosted_button_id=SRM6QUX6ACXDY)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -72,6 +72,8 @@ Each BIOS mode is paired with matching Windows Power Mode. You can adjust this s
|
|||||||
|
|
||||||

|

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

|
||||||
|
|
||||||
## :question: FAQ
|
## :question: FAQ
|
||||||
|
|
||||||
#### How do I stop the Armoury Crate install popup appearing every time I press the M4 / Rog key?
|
#### How do I stop the Armoury Crate install popup appearing every time I press the M4 / Rog key?
|
||||||
@@ -79,6 +81,7 @@ Stop ``ArmouryCrateControlInterface`` service under windows Services app or you
|
|||||||
|
|
||||||
#### Battery charge limiter is not working
|
#### Battery charge limiter is not working
|
||||||
It could be that Asus services are overwriting this limit after. You may want to stop them by clicking "Stop" in the Asus Services section (under Extra).
|
It could be that Asus services are overwriting this limit after. You may want to stop them by clicking "Stop" in the Asus Services section (under Extra).
|
||||||
|
Please note: For some devices not every charge limit % may be working. Try to set standard **80%** to be sure.
|
||||||
|
|
||||||
#### I don't see GPU modes section
|
#### I don't see GPU modes section
|
||||||
Some older models (for example G14 2020) don't support disabling GPU on hardware level, therefore GPU section makes no sense for them and will be hidden
|
Some older models (for example G14 2020) don't support disabling GPU on hardware level, therefore GPU section makes no sense for them and will be hidden
|
||||||
@@ -96,7 +99,7 @@ You don't have to, it's purely optional. From my experience built in (in BIOS) p
|
|||||||
Click on them
|
Click on them
|
||||||
|
|
||||||
#### When I try to apply a custom fan curve I get "BIOS rejected fan curve"
|
#### When I try to apply a custom fan curve I get "BIOS rejected fan curve"
|
||||||
TUF models from 2021 and older don't support custom fan curves at all. Most probably you didn't have them in Armoury as well?
|
TUF models from 2021 and older don't support custom fan curves at all. Most probably you didn't have them in the Armoury as well?
|
||||||
|
|
||||||
#### I don't see a GPU temperature in G-helper
|
#### I don't see a GPU temperature in G-helper
|
||||||
Most probably either you are using Eco / Optimized mode and your dGPU is simply off, or your windows has put the dGPU into sleep to preserve power.
|
Most probably either you are using Eco / Optimized mode and your dGPU is simply off, or your windows has put the dGPU into sleep to preserve power.
|
||||||
@@ -107,7 +110,7 @@ Please check the system tray for a ``(G)`` icon. By default Windows is keen to h
|
|||||||
#### App crashes or doesn't work properly
|
#### App crashes or doesn't work properly
|
||||||
Open "Event Viewer" from the start menu, go to Windows Logs -> Application and check for recent Errors mentioning G-Helper. If you see one - please post a [new issue](https://github.com/seerge/g-helper/issues) with all details from this error.
|
Open "Event Viewer" from the start menu, go to Windows Logs -> Application and check for recent Errors mentioning G-Helper. If you see one - please post a [new issue](https://github.com/seerge/g-helper/issues) with all details from this error.
|
||||||
|
|
||||||
#### Can I use MyASUS app along with G-Helper?
|
#### Can I use the MyASUS app along with G-Helper?
|
||||||
You can, the only problem is that MyASUS may override the battery charge limit that you set before. My advice in such a situation would be to set the same limit (i.e. 80%) in both MyASUS and G-Helper.
|
You can, the only problem is that MyASUS may override the battery charge limit that you set before. My advice in such a situation would be to set the same limit (i.e. 80%) in both MyASUS and G-Helper.
|
||||||
|
|
||||||
#### How do I set Mute Microphone to M3?
|
#### How do I set Mute Microphone to M3?
|
||||||
@@ -119,6 +122,13 @@ Personally, I'm not a big fan of them, as they make colors very inaccurate. But
|
|||||||
#### Can I overclock Nvidia GPU core / memory?
|
#### Can I overclock Nvidia GPU core / memory?
|
||||||
Make sure that your dGPU is enabled (i.e. it's not in Eco mode). Open Fans + Power section and adjust core / memory clock offsets. They work the same as in armoury's manual mode. Please keep in mind that (unfortunately) you need admin permissions for that, and the app will ask you for them. (*)
|
Make sure that your dGPU is enabled (i.e. it's not in Eco mode). Open Fans + Power section and adjust core / memory clock offsets. They work the same as in armoury's manual mode. Please keep in mind that (unfortunately) you need admin permissions for that, and the app will ask you for them. (*)
|
||||||
|
|
||||||
|
#### How to Undervolt GPU
|
||||||
|
Due to the way the Core Clock offset works for the GPU. When you increase clock offset you undervolt it at the same time (see picture)
|
||||||
|
1. Increase ``Core Clock Offset`` under ``Fans + Power -> GPU`` until your 3dmark / furmark / game runs stable. Start with +100, +150, +200 ... This should make your **scores / fps better within same power** / heat as before.
|
||||||
|
2. Set ``Core Clock Limit`` to a certain value (it really depends on application / game that you use) **to lower your power** / heat consumption
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
#### Windows Defender marks app as malware / virus
|
#### Windows Defender marks app as malware / virus
|
||||||
False positives from Windows Defender (or any other similar system that uses machine learning for detection) is possible as the application is not digitally signed with a certificate. You can always download a version below or compile the app by yourself. All application sources are open and can be monitored from A to Z :)
|
False positives from Windows Defender (or any other similar system that uses machine learning for detection) is possible as the application is not digitally signed with a certificate. You can always download a version below or compile the app by yourself. All application sources are open and can be monitored from A to Z :)
|
||||||
|
|
||||||
@@ -239,12 +249,42 @@ Example (for default windows "balanced" power plan):
|
|||||||
"scheme_2": "381b4222-f694-41f0-9685-ff5bb260df2e",
|
"scheme_2": "381b4222-f694-41f0-9685-ff5bb260df2e",
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Alternative Activation for XG Mobile 6850XT
|
||||||
|
If you experience a situation when your XG Mobile doesn't work on full power when Activated. It's possible it needs an "alternative" command to get activated.
|
||||||
|
To turn it on, add following line to config :
|
||||||
|
```
|
||||||
|
"xgm_special" : 1,
|
||||||
|
```
|
||||||
|
|
||||||
|
### Override UI theme
|
||||||
|
|
||||||
|
By default the app would set the UI theme from the "app" theme in Windows setting. You can override it to specific theme, or general windows theme
|
||||||
|
|
||||||
|
```
|
||||||
|
"ui_mode" : "dark",
|
||||||
|
"ui_mode" : "light",
|
||||||
|
"ui_mode" : "windows",
|
||||||
|
```
|
||||||
|
|
||||||
|
### Skip keyboard Aura initialisation on startup
|
||||||
|
By default the app would set the last remembered RGB mode for the keyboard on each launch. To disable it completely
|
||||||
|
|
||||||
|
```
|
||||||
|
"skip_aura" : 1,
|
||||||
|
````
|
||||||
|
|
||||||
### Disable OSD
|
### Disable OSD
|
||||||
Disable app's OSD (for performance modes, keyboard backlight, etc.)
|
Disable app's OSD (for performance modes, keyboard backlight, etc.)
|
||||||
```
|
```
|
||||||
"disable_osd": 1,
|
"disable_osd": 1,
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Disable "Tablet mode" on X13/X16
|
||||||
|
To disable automatic touchpad toggling when laptop enters / leaves tablet mode
|
||||||
|
```
|
||||||
|
"disable_tablet": 1,
|
||||||
|
```
|
||||||
|
|
||||||
### Extra Keybindings
|
### Extra Keybindings
|
||||||
- ``Ctrl + Shift + F5`` - Toggle Performance Modes
|
- ``Ctrl + Shift + F5`` - Toggle Performance Modes
|
||||||
- ``Ctrl + Shift + F12`` - Open G-Helper window
|
- ``Ctrl + Shift + F12`` - Open G-Helper window
|
||||||
@@ -256,20 +296,24 @@ If you don't want this bindings to work you can add
|
|||||||
"skip_hotkeys":1,
|
"skip_hotkeys":1,
|
||||||
```
|
```
|
||||||
|
|
||||||
### Toggle Performance Mode key binding
|
### Toggle Performance Mode or Toggle App Window key binding
|
||||||
|
|
||||||
To change binding for Toggle Performance Modes to ``Ctrl + Shift + KEY``
|
To change binding for Toggle Performance Modes to ``Ctrl + Shift + KEY``
|
||||||
|
|
||||||
```
|
```
|
||||||
"keybind_profile": 116,
|
"keybind_profile": 116,
|
||||||
```
|
```
|
||||||
|
|
||||||
|
To change binding for Toggle App Window to ``Ctrl + Shift + KEY``
|
||||||
|
```
|
||||||
|
"keybind_app": 123,
|
||||||
|
```
|
||||||
|
|
||||||
Where 116 is [numerical code for desired key](https://www.oreilly.com/library/view/javascript-dhtml/9780596514082/apb.html). Put 0 to completely disable this binding.
|
Where 116 is [numerical code for desired key](https://www.oreilly.com/library/view/javascript-dhtml/9780596514082/apb.html). Put 0 to completely disable this binding.
|
||||||
|
|
||||||
|
|
||||||
### Higher Maximum GPU Clock / Memory Offsets
|
### Higher Maximum GPU Clock / Memory Offsets
|
||||||
|
|
||||||
By default under GPU section you can set up to +250/+250 for Core and Memory Clock Offset. To increase this value:
|
By default under the GPU section you can set up to +250/+250 for Core and Memory Clock Offset. To increase this value:
|
||||||
```
|
```
|
||||||
"max_gpu_core": 300,
|
"max_gpu_core": 300,
|
||||||
"max_gpu_memory": 1500,
|
"max_gpu_memory": 1500,
|
||||||
@@ -282,7 +326,9 @@ Select ``Custom`` next to appropriate hotkey under ``Extra`` settings and do one
|
|||||||
1. To run any custom application - put a full path to exe into "action" text field, for example:
|
1. To run any custom application - put a full path to exe into "action" text field, for example:
|
||||||
``C:\Program Files\EA Games\Battlefield 2042\BF2042.exe``
|
``C:\Program Files\EA Games\Battlefield 2042\BF2042.exe``
|
||||||
|
|
||||||
2. To simulate any windows key - put appropriate keycode into the "action" field, for example ``0x2C`` for Print Screen.
|
2. To simulate any windows key or key-combination - put appropriate keycode(s) into the "action" field separated by space.
|
||||||
|
For example ``0x2C`` for ``Print Screen`` or ``0x11 0xA0 0x31`` for ``Ctrl+Shift+1``
|
||||||
|
|
||||||
Full list of keycodes https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
|
Full list of keycodes https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
|
||||||
|
|
||||||

|

|
||||||
|
|||||||
Reference in New Issue
Block a user