mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Compare commits
148 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
65e0065234 | ||
|
|
3fa8c04afa | ||
|
|
162514a8f9 | ||
|
|
b51c68572e | ||
|
|
ed5ec6b576 | ||
|
|
8c1885c2ae | ||
|
|
168b751795 | ||
|
|
3e93a93ab3 | ||
|
|
8a12e84423 | ||
|
|
c978c94d59 | ||
|
|
fc83e0e824 | ||
|
|
389fc41722 | ||
|
|
509817f442 | ||
|
|
8d8cfb0521 | ||
|
|
f021135f53 | ||
|
|
98670414d2 | ||
|
|
a41595068e | ||
|
|
d58c277733 | ||
|
|
5701a287aa | ||
|
|
1968b6487c | ||
|
|
95103108f2 | ||
|
|
defb0790e5 | ||
|
|
9da45b43ea | ||
|
|
32a20c3cce | ||
|
|
763337aedd | ||
|
|
f1b51a726b | ||
|
|
a085615398 | ||
|
|
d32a3452f9 | ||
|
|
433022b65d | ||
|
|
460f921836 | ||
|
|
1e2620c484 | ||
|
|
e774f704dd | ||
|
|
aa327f563f | ||
|
|
b9de97ecf4 | ||
|
|
5d7af9bdcd | ||
|
|
c2ca761d99 | ||
|
|
e480ee6f12 | ||
|
|
393cb3300c | ||
|
|
ee90fe4a3d | ||
|
|
a0628ef368 | ||
|
|
701a7d99c4 | ||
|
|
667d365992 | ||
|
|
6232fb1cfb | ||
|
|
a92924840b | ||
|
|
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 |
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
@@ -3,6 +3,8 @@ name: Release
|
||||
on:
|
||||
release:
|
||||
types: [ published ]
|
||||
workflow_dispatch:
|
||||
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
@@ -350,6 +350,8 @@ namespace GHelper.AnimeMatrix
|
||||
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);
|
||||
|
||||
|
||||
@@ -364,7 +366,12 @@ namespace GHelper.AnimeMatrix
|
||||
for (int i = 0; i < frameCount; i++)
|
||||
{
|
||||
image.SelectActiveFrame(dimension, i);
|
||||
device.GenerateFrame(image, matrixZoom, matrixX, matrixY, matrixQuality);
|
||||
|
||||
if (rotation == MatrixRotation.Planar)
|
||||
device.GenerateFrame(image, matrixZoom, matrixX, matrixY, matrixQuality);
|
||||
else
|
||||
device.GenerateFrameDiagonal(image, matrixZoom, matrixX, matrixY, matrixQuality);
|
||||
|
||||
device.AddFrame();
|
||||
}
|
||||
|
||||
@@ -377,7 +384,11 @@ namespace GHelper.AnimeMatrix
|
||||
}
|
||||
else
|
||||
{
|
||||
device.GenerateFrame(image, matrixZoom, matrixX, matrixY, matrixQuality);
|
||||
if (rotation == MatrixRotation.Planar)
|
||||
device.GenerateFrame(image, matrixZoom, matrixX, matrixY, matrixQuality);
|
||||
else
|
||||
device.GenerateFrameDiagonal(image, matrixZoom, matrixX, matrixY, matrixQuality);
|
||||
|
||||
device.Present();
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
using GHelper.AnimeMatrix.Communication;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Drawing.Imaging;
|
||||
using System.Drawing.Text;
|
||||
using System.Management;
|
||||
using System.Text;
|
||||
@@ -51,6 +50,12 @@ namespace Starlight.AnimeMatrix
|
||||
}
|
||||
}
|
||||
|
||||
public enum MatrixRotation
|
||||
{
|
||||
Planar,
|
||||
Diagonal
|
||||
}
|
||||
|
||||
internal class AnimeMatrixPacket : Packet
|
||||
{
|
||||
public AnimeMatrixPacket(byte[] command)
|
||||
@@ -90,7 +95,7 @@ namespace Starlight.AnimeMatrix
|
||||
public int MaxColumns = 34;
|
||||
public int LedStart = 0;
|
||||
|
||||
public int TextShift = 8;
|
||||
public int FullRows = 11;
|
||||
|
||||
private int frameIndex = 0;
|
||||
|
||||
@@ -114,7 +119,7 @@ namespace Starlight.AnimeMatrix
|
||||
|
||||
UpdatePageLength = 410;
|
||||
|
||||
TextShift = 11;
|
||||
FullRows = 5;
|
||||
|
||||
LedStart = 1;
|
||||
}
|
||||
@@ -128,19 +133,11 @@ namespace Starlight.AnimeMatrix
|
||||
LedCount = 1711;
|
||||
UpdatePageLength = 630;
|
||||
|
||||
TextShift = 10;
|
||||
FullRows = 9;
|
||||
}
|
||||
|
||||
_displayBuffer = new byte[LedCount];
|
||||
|
||||
/*
|
||||
for (int i = 0; i < MaxRows; i++)
|
||||
{
|
||||
_model = AnimeType.GA401;
|
||||
Logger.WriteLine(FirstX(i) + " " + Pitch(i));
|
||||
}
|
||||
*/
|
||||
|
||||
LoadMFont();
|
||||
|
||||
}
|
||||
@@ -298,6 +295,17 @@ namespace Starlight.AnimeMatrix
|
||||
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()
|
||||
{
|
||||
Set(Packet<AnimeMatrixPacket>(Encoding.ASCII.GetBytes("ASUS Tech.Inc.")));
|
||||
@@ -391,25 +399,43 @@ namespace Starlight.AnimeMatrix
|
||||
}
|
||||
|
||||
|
||||
public void PresentClock()
|
||||
private void SetBitmapDiagonal(Bitmap bmp, int deltaX = 0, int deltaY = 0)
|
||||
{
|
||||
string second = (DateTime.Now.Second % 2 == 0) ? ":" : " ";
|
||||
string time = DateTime.Now.ToString("HH" + second + "mm");
|
||||
|
||||
Clear();
|
||||
TextDiagonal(time, 15, 12, TextShift + 11);
|
||||
TextDiagonal(DateTime.Now.ToString("yy'. 'MM'. 'dd"), 11.5F, 3, TextShift);
|
||||
Present();
|
||||
|
||||
for (int y = 0; y < bmp.Height; y++)
|
||||
{
|
||||
for (int x = 0; x < bmp.Width; x++)
|
||||
{
|
||||
var pixel = bmp.GetPixel(x, y);
|
||||
var color = (pixel.R + pixel.G + pixel.B) / 3;
|
||||
if (color > 20)
|
||||
SetLedDiagonal(x, y, (byte)color, deltaX + (FullRows / 2) + 1, deltaY - (FullRows / 2) - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void TextDiagonal(string text, float fontSize = 10, int deltaX = 0, int deltaY = 10)
|
||||
private void SetBitmapLinear(Bitmap bmp)
|
||||
{
|
||||
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 maxX = (int)Math.Sqrt(MaxRows * MaxRows + MaxColumns * MaxColumns);
|
||||
int textHeight;
|
||||
int width = MaxRows - FullRows;
|
||||
int height = MaxRows - FullRows;
|
||||
int textHeight, textWidth;
|
||||
|
||||
using (Bitmap bmp = new Bitmap(maxX, MaxRows))
|
||||
using (Bitmap bmp = new Bitmap(width, height))
|
||||
{
|
||||
using (Graphics g = Graphics.FromImage(bmp))
|
||||
{
|
||||
@@ -421,59 +447,29 @@ namespace Starlight.AnimeMatrix
|
||||
{
|
||||
SizeF textSize = g.MeasureString(text, font);
|
||||
textHeight = (int)textSize.Height;
|
||||
g.DrawString(text, font, Brushes.White, 0, 0);
|
||||
textWidth = (int)textSize.Width;
|
||||
g.DrawString(text, font, Brushes.White, x, height - y);
|
||||
}
|
||||
}
|
||||
|
||||
for (int y = 0; y < bmp.Height; y++)
|
||||
{
|
||||
for (int x = 0; x < bmp.Width; x++)
|
||||
{
|
||||
var pixel = bmp.GetPixel(x, y);
|
||||
var color = (pixel.R + pixel.G + pixel.B) / 3;
|
||||
if (color > 100) SetLedDiagonal(x, y, (byte)color, deltaX, deltaY);
|
||||
}
|
||||
}
|
||||
SetBitmapDiagonal(bmp, (width - textWidth), height);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void PresentText(string text1, string text2 = "")
|
||||
public void PresentClock()
|
||||
{
|
||||
using (Bitmap bmp = new Bitmap(MaxColumns * 3, MaxRows))
|
||||
{
|
||||
using (Graphics g = Graphics.FromImage(bmp))
|
||||
{
|
||||
g.CompositingQuality = CompositingQuality.HighQuality;
|
||||
g.SmoothingMode = SmoothingMode.AntiAlias;
|
||||
g.TextRenderingHint = TextRenderingHint.SingleBitPerPixel;
|
||||
string second = (DateTime.Now.Second % 2 == 0) ? ":" : " ";
|
||||
string time = DateTime.Now.ToString("HH" + second + "mm");
|
||||
|
||||
using (Font font = new Font("Consolas", 22F, FontStyle.Regular, GraphicsUnit.Pixel))
|
||||
{
|
||||
SizeF textSize = g.MeasureString(text1, font);
|
||||
g.DrawString(text1, font, Brushes.White, (MaxColumns * 3 - textSize.Width) + 3, -4);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
bmp.Save("test.bmp", ImageFormat.Bmp);
|
||||
|
||||
GenerateFrame(bmp);
|
||||
Present();
|
||||
}
|
||||
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 height = MaxRows;
|
||||
|
||||
@@ -498,29 +494,37 @@ namespace Starlight.AnimeMatrix
|
||||
|
||||
}
|
||||
|
||||
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 < 10) color = 0;
|
||||
SetLedPlanar(x / 2, y, (byte)color);
|
||||
}
|
||||
}
|
||||
Clear();
|
||||
SetBitmapLinear(bmp);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void SetLedDiagonal(int x, int y, byte color, int deltaX = 0, int deltaY = 10)
|
||||
public void GenerateFrameDiagonal(Image image, float zoom = 100, int panX = 0, int panY = 0, InterpolationMode quality = InterpolationMode.Default)
|
||||
{
|
||||
x += deltaX;
|
||||
y -= deltaY;
|
||||
int width = MaxRows - FullRows;
|
||||
int height = MaxRows - FullRows*2;
|
||||
float scale;
|
||||
|
||||
int plX = (x - y) / 2;
|
||||
int plY = x + y;
|
||||
SetLedPlanar(plX, plY, color);
|
||||
using (Bitmap bmp = new Bitmap(width, height))
|
||||
{
|
||||
scale = Math.Min((float)width / (float)image.Width, (float)height / (float)image.Height) * zoom / 100;
|
||||
|
||||
using (var graph = Graphics.FromImage(bmp))
|
||||
{
|
||||
var scaleWidth = (float)(image.Width * scale);
|
||||
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);
|
||||
|
||||
}
|
||||
|
||||
Clear();
|
||||
SetBitmapDiagonal(bmp, -panX, height + panY);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -7,7 +7,10 @@ public static class AppConfig
|
||||
{
|
||||
|
||||
private static string configFile;
|
||||
|
||||
private static string? _model;
|
||||
private static string? _modelShort;
|
||||
private static string? _bios;
|
||||
|
||||
private static Dictionary<string, object> config = new Dictionary<string, object>();
|
||||
|
||||
@@ -69,6 +72,34 @@ public static class AppConfig
|
||||
return _model;
|
||||
}
|
||||
|
||||
public static (string, string) GetBiosAndModel()
|
||||
{
|
||||
if (_bios is not null && _modelShort is not null) return (_bios, _modelShort);
|
||||
|
||||
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)
|
||||
{
|
||||
_modelShort = results[0];
|
||||
_bios = results[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
_modelShort = obj["SMBIOSBIOSVersion"].ToString();
|
||||
}
|
||||
}
|
||||
|
||||
return (_bios, _modelShort);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static string GetModelShort()
|
||||
{
|
||||
string model = GetModel();
|
||||
@@ -271,7 +302,7 @@ public static class AppConfig
|
||||
|
||||
public static bool NoMKeys()
|
||||
{
|
||||
return ContainsModel("Z13") ||
|
||||
return (ContainsModel("Z13") && !IsARCNM()) ||
|
||||
ContainsModel("FX706") ||
|
||||
ContainsModel("FA506") ||
|
||||
ContainsModel("FX506") ||
|
||||
@@ -279,6 +310,11 @@ public static class AppConfig
|
||||
ContainsModel("FX505");
|
||||
}
|
||||
|
||||
public static bool IsARCNM()
|
||||
{
|
||||
return ContainsModel("GZ301VIC");
|
||||
}
|
||||
|
||||
public static bool IsTUF()
|
||||
{
|
||||
return ContainsModel("TUF");
|
||||
@@ -292,7 +328,7 @@ public static class AppConfig
|
||||
// Devices with bugged bios command to change brightness
|
||||
public static bool SwappedBrightness()
|
||||
{
|
||||
return ContainsModel("FA506IH") || ContainsModel("FX506LU");
|
||||
return ContainsModel("FA506IH") || ContainsModel("FA506IC") || ContainsModel("FX506LU") || ContainsModel("FX506IC") || ContainsModel("FX506LH");
|
||||
}
|
||||
|
||||
|
||||
@@ -309,7 +345,7 @@ public static class AppConfig
|
||||
|
||||
public static bool IsSingleColor()
|
||||
{
|
||||
return ContainsModel("GA401");
|
||||
return ContainsModel("GA401") || ContainsModel("FX517Z") || ContainsModel("X13");
|
||||
}
|
||||
|
||||
public static bool IsStrix()
|
||||
@@ -317,6 +353,11 @@ public static class AppConfig
|
||||
return ContainsModel("Strix") || ContainsModel("Scar");
|
||||
}
|
||||
|
||||
public static bool IsStrixLimitedRGB()
|
||||
{
|
||||
return ContainsModel("G614JV") || ContainsModel("G614JZ");
|
||||
}
|
||||
|
||||
public static bool IsZ13()
|
||||
{
|
||||
return ContainsModel("Z13");
|
||||
@@ -356,9 +397,23 @@ public static class AppConfig
|
||||
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()
|
||||
{
|
||||
return ContainsModel("GA402X") || ContainsModel("G513") || ContainsModel("G713R");
|
||||
return ContainsModel("GA402X") || ContainsModel("G513") || ContainsModel("G713R") || ContainsModel("G713P");
|
||||
}
|
||||
|
||||
public static bool IsPowerRequired()
|
||||
@@ -368,7 +423,7 @@ public static class AppConfig
|
||||
|
||||
public static bool IsGPUFixNeeded()
|
||||
{
|
||||
return ContainsModel("GA402X") || ContainsModel("GV302") || ContainsModel("FX506") || ContainsModel("GU603V");
|
||||
return ContainsModel("GA402X") || ContainsModel("GV302") || ContainsModel("GZ301") || ContainsModel("FX506") || ContainsModel("GU603V") || ContainsModel("GU603Z");
|
||||
}
|
||||
|
||||
public static bool IsGPUFix()
|
||||
|
||||
@@ -65,6 +65,7 @@ public class AsusACPI
|
||||
public const uint GPUXG = 0x00090019;
|
||||
|
||||
public const uint GPUMux = 0x00090016;
|
||||
public const uint GPUMuxVivo = 0x00090026;
|
||||
|
||||
public const uint BatteryLimit = 0x00120057;
|
||||
public const uint ScreenOverdrive = 0x00050019;
|
||||
@@ -286,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];
|
||||
BitConverter.GetBytes((uint)DeviceID).CopyTo(args, 0);
|
||||
@@ -295,12 +296,14 @@ public class AsusACPI
|
||||
byte[] status = CallMethod(DEVS, args);
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
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];
|
||||
BitConverter.GetBytes((uint)DeviceID).CopyTo(args, 0);
|
||||
@@ -309,7 +312,9 @@ public class AsusACPI
|
||||
byte[] status = CallMethod(DEVS, args);
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -375,6 +380,10 @@ public class AsusACPI
|
||||
|
||||
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};
|
||||
@@ -389,6 +398,7 @@ public class AsusACPI
|
||||
result = DeviceSet(DevsCPUFan, range, "FanRangeCPU");
|
||||
break;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -400,7 +410,9 @@ public class AsusACPI
|
||||
if (curve.All(singleByte => singleByte == 0)) return -1;
|
||||
|
||||
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);
|
||||
|
||||
@@ -537,7 +549,7 @@ public class AsusACPI
|
||||
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[6];
|
||||
@@ -549,8 +561,8 @@ public class AsusACPI
|
||||
setting[4] = color.B;
|
||||
setting[5] = (byte)speed;
|
||||
|
||||
int result = DeviceSet(TUF_KB, setting, "TUF RGB");
|
||||
if (result != 1) DeviceSet(TUF_KB2, setting, "TUF RGB");
|
||||
int result = DeviceSet(TUF_KB, setting, log);
|
||||
if (result != 1) DeviceSet(TUF_KB2, setting, log);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -671,7 +671,8 @@ namespace GHelper
|
||||
|
||||
private void VisualizeMouseSettings()
|
||||
{
|
||||
comboProfile.SelectedIndex = mouse.Profile;
|
||||
if (mouse.Profile < comboProfile.Items.Count)
|
||||
comboProfile.SelectedIndex = mouse.Profile;
|
||||
|
||||
if (mouse.HasRGB())
|
||||
{
|
||||
|
||||
@@ -121,7 +121,7 @@ namespace GHelper
|
||||
{
|
||||
timer.Elapsed += Timer_Elapsed;
|
||||
|
||||
isSingleColor = AppConfig.ContainsModel("GA401") || AppConfig.ContainsModel("X13"); // Mono Color
|
||||
isSingleColor = AppConfig.IsSingleColor(); // Mono Color
|
||||
|
||||
var device = GetDevice(AURA_HID_ID);
|
||||
if (device is not null && (device.Attributes.Version == 22 || device.Attributes.Version == 23) && (AppConfig.ContainsModel("GA402X") || AppConfig.ContainsModel("GA402N"))) isSingleColor = true;
|
||||
@@ -211,7 +211,7 @@ namespace GHelper
|
||||
return _modes;
|
||||
}
|
||||
|
||||
if (AppConfig.IsStrix())
|
||||
if (AppConfig.IsStrix() && !AppConfig.IsStrixLimitedRGB())
|
||||
{
|
||||
return _modesStrix;
|
||||
}
|
||||
@@ -333,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 () =>
|
||||
{
|
||||
|
||||
if (delay) await Task.Delay(TimeSpan.FromSeconds(1));
|
||||
|
||||
if (isTuf) Program.acpi.TUFKeyboardBrightness(brightness);
|
||||
|
||||
byte[] msg = { AURA_HID_ID, 0xba, 0xc5, 0xc4, (byte)brightness };
|
||||
@@ -470,7 +472,7 @@ namespace GHelper
|
||||
|
||||
if (isTuf)
|
||||
{
|
||||
Program.acpi.TUFKeyboardRGB(0, color, 0);
|
||||
Program.acpi.TUFKeyboardRGB(0, color, 0, null);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -529,7 +531,7 @@ namespace GHelper
|
||||
|
||||
else
|
||||
{
|
||||
Debug.WriteLine(color.ToString());
|
||||
//Debug.WriteLine(color.ToString());
|
||||
auraDevice.Write(AuraMessage(0, color, color, 0));
|
||||
auraDevice.Write(MESSAGE_SET);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,31 @@
|
||||
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 UnSetBatteryLimitFull()
|
||||
{
|
||||
AppConfig.Set("charge_full", 0);
|
||||
Program.settingsForm.VisualiseBatteryFull();
|
||||
}
|
||||
|
||||
public static void AutoBattery(bool init = false)
|
||||
{
|
||||
if (AppConfig.Is("charge_full") && !init) SetBatteryLimitFull();
|
||||
else SetBatteryChargeLimit();
|
||||
}
|
||||
|
||||
public static void SetBatteryChargeLimit(int limit = -1)
|
||||
{
|
||||
|
||||
@@ -10,10 +35,11 @@
|
||||
if (limit < 40 || limit > 100) return;
|
||||
|
||||
Program.acpi.DeviceSet(AsusACPI.BatteryLimit, limit, "BatteryLimit");
|
||||
Program.settingsForm.VisualiseBattery(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()
|
||||
{
|
||||
int miniled = (AppConfig.Get("miniled") == 1) ? 0 : 1;
|
||||
int miniled = (Program.acpi.DeviceGet(AsusACPI.ScreenMiniled) == 1) ? 0 : 1;
|
||||
AppConfig.Set("miniled", miniled);
|
||||
SetScreen(-1, -1, miniled);
|
||||
}
|
||||
@@ -77,8 +77,13 @@ namespace GHelper.Display
|
||||
int overdrive = Program.acpi.DeviceGet(AsusACPI.ScreenOverdrive);
|
||||
int miniled = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled);
|
||||
|
||||
bool hdr = false;
|
||||
|
||||
if (miniled >= 0)
|
||||
{
|
||||
AppConfig.Set("miniled", miniled);
|
||||
hdr = ScreenCCD.GetHDRStatus();
|
||||
}
|
||||
|
||||
bool screenEnabled = (frequency >= 0);
|
||||
|
||||
@@ -94,7 +99,8 @@ namespace GHelper.Display
|
||||
maxFrequency: maxFrequency,
|
||||
overdrive: overdrive,
|
||||
overdriveSetting: overdriveSetting,
|
||||
miniled: miniled
|
||||
miniled: miniled,
|
||||
hdr: hdr
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
using Microsoft.VisualBasic.Logging;
|
||||
using System.Collections;
|
||||
using System.Diagnostics.Metrics;
|
||||
using System.Collections;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows.Forms;
|
||||
using static GHelper.Display.ScreenInterrogatory;
|
||||
|
||||
namespace GHelper.Display
|
||||
@@ -163,9 +160,12 @@ namespace GHelper.Display
|
||||
device.monitorFriendlyDeviceName == internalName)
|
||||
{
|
||||
if (log) Logger.WriteLine(device.monitorDevicePath + " " + device.outputTechnology);
|
||||
|
||||
AppConfig.Set("internal_display", device.monitorFriendlyDeviceName);
|
||||
var names = device.monitorDevicePath.Split("#");
|
||||
return names[1];
|
||||
|
||||
if (names.Length > 1) return names[1];
|
||||
else return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
86
app/Extra.cs
86
app/Extra.cs
@@ -16,25 +16,33 @@ namespace GHelper
|
||||
|
||||
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)
|
||||
{
|
||||
|
||||
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)
|
||||
{
|
||||
case "m1":
|
||||
@@ -48,6 +56,7 @@ namespace GHelper
|
||||
break;
|
||||
case "m4":
|
||||
customActions[""] = Properties.Strings.OpenGHelper;
|
||||
customActions.Remove("ghelper");
|
||||
break;
|
||||
case "fnf4":
|
||||
customActions[""] = Properties.Strings.ToggleAura;
|
||||
@@ -59,7 +68,6 @@ namespace GHelper
|
||||
break;
|
||||
case "fne":
|
||||
customActions[""] = "Calculator";
|
||||
customActions["ghelper"] = Properties.Strings.OpenGHelper;
|
||||
break;
|
||||
case "paddle":
|
||||
customActions[""] = EMPTY;
|
||||
@@ -131,12 +139,15 @@ namespace GHelper
|
||||
|
||||
Text = Properties.Strings.ExtraSettings;
|
||||
|
||||
if (AppConfig.IsDUO())
|
||||
if (AppConfig.IsARCNM())
|
||||
{
|
||||
customActions.Add("screenpad_down", Properties.Strings.ScreenPadDown);
|
||||
customActions.Add("screenpad_up", Properties.Strings.ScreenPadUp);
|
||||
}
|
||||
|
||||
labelM3.Text = "FN+F6";
|
||||
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())
|
||||
{
|
||||
labelM1.Text = "FN+F2";
|
||||
@@ -265,22 +276,27 @@ namespace GHelper
|
||||
checkSleepBar.Visible = false;
|
||||
checkShutdownBar.Visible = false;
|
||||
|
||||
if (!AppConfig.IsZ13())
|
||||
{
|
||||
labelBacklightLid.Visible = false;
|
||||
checkAwakeLid.Visible = false;
|
||||
checkBootLid.Visible = false;
|
||||
checkSleepLid.Visible = false;
|
||||
checkShutdownLid.Visible = false;
|
||||
}
|
||||
|
||||
labelBacklightLogo.Visible = false;
|
||||
checkAwakeLogo.Visible = false;
|
||||
checkBootLogo.Visible = false;
|
||||
checkSleepLogo.Visible = false;
|
||||
checkShutdownLogo.Visible = false;
|
||||
if ((!AppConfig.IsStrix() && !AppConfig.IsZ13()) || AppConfig.IsStrixLimitedRGB())
|
||||
{
|
||||
labelBacklightLid.Visible = false;
|
||||
checkAwakeLid.Visible = false;
|
||||
checkBootLid.Visible = false;
|
||||
checkSleepLid.Visible = false;
|
||||
checkShutdownLid.Visible = false;
|
||||
|
||||
labelBacklightKeyboard.Visible = false;
|
||||
}
|
||||
labelBacklightLogo.Visible = false;
|
||||
checkAwakeLogo.Visible = false;
|
||||
checkBootLogo.Visible = false;
|
||||
checkSleepLogo.Visible = false;
|
||||
checkShutdownLogo.Visible = false;
|
||||
|
||||
}
|
||||
|
||||
if (!AppConfig.IsStrix() && !AppConfig.IsZ13())
|
||||
{
|
||||
labelBacklightKeyboard.Visible = false;
|
||||
}
|
||||
|
||||
//checkAutoToggleClamshellMode.Visible = clamshellControl.IsExternalDisplayConnected();
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
4
app/Fans.Designer.cs
generated
4
app/Fans.Designer.cs
generated
@@ -430,7 +430,7 @@ namespace GHelper
|
||||
buttonCalibrate.BorderColor = Color.Transparent;
|
||||
buttonCalibrate.BorderRadius = 2;
|
||||
buttonCalibrate.FlatStyle = FlatStyle.Flat;
|
||||
buttonCalibrate.Location = new Point(239, 40);
|
||||
buttonCalibrate.Location = new Point(275, 40);
|
||||
buttonCalibrate.Margin = new Padding(4, 2, 4, 2);
|
||||
buttonCalibrate.Name = "buttonCalibrate";
|
||||
buttonCalibrate.Secondary = true;
|
||||
@@ -476,7 +476,7 @@ namespace GHelper
|
||||
buttonReset.Margin = new Padding(4, 2, 4, 2);
|
||||
buttonReset.Name = "buttonReset";
|
||||
buttonReset.Secondary = true;
|
||||
buttonReset.Size = new Size(216, 50);
|
||||
buttonReset.Size = new Size(252, 50);
|
||||
buttonReset.TabIndex = 18;
|
||||
buttonReset.Text = Properties.Strings.FactoryDefaults;
|
||||
buttonReset.UseVisualStyleBackColor = false;
|
||||
|
||||
119
app/Fans.cs
119
app/Fans.cs
@@ -1,4 +1,5 @@
|
||||
using GHelper.Gpu.NVidia;
|
||||
using GHelper.Fan;
|
||||
using GHelper.Gpu.NVidia;
|
||||
using GHelper.Mode;
|
||||
using GHelper.UI;
|
||||
using Ryzen;
|
||||
@@ -26,13 +27,15 @@ namespace GHelper
|
||||
NvidiaGpuControl? nvControl = null;
|
||||
ModeControl modeControl = Program.modeControl;
|
||||
|
||||
public static System.Timers.Timer timer = default!;
|
||||
FanSensorControl fanSensorControl;
|
||||
|
||||
public Fans()
|
||||
{
|
||||
|
||||
InitializeComponent();
|
||||
|
||||
fanSensorControl = new FanSensorControl(this);
|
||||
|
||||
//float dpi = ControlHelper.GetDpiScale(this).Value;
|
||||
//comboModes.Size = new Size(comboModes.Width, (int)dpi * 18);
|
||||
comboModes.ClientSize = new Size(comboModes.Width, comboModes.Height - 4);
|
||||
@@ -200,96 +203,22 @@ namespace GHelper
|
||||
|
||||
checkApplyUV.Click += CheckApplyUV_Click;
|
||||
|
||||
timer = new System.Timers.Timer(1000);
|
||||
timer.Elapsed += Timer_Elapsed;
|
||||
buttonCalibrate.Click += ButtonCalibrate_Click;
|
||||
|
||||
ToggleNavigation(0);
|
||||
|
||||
if (Program.acpi.DeviceGet(AsusACPI.DevsCPUFanCurve) < 0) buttonCalibrate.Visible = false;
|
||||
|
||||
FormClosed += Fans_FormClosed;
|
||||
|
||||
}
|
||||
|
||||
const int FAN_COUNT = 3;
|
||||
static int[] fanMax;
|
||||
static int sameCount = 0;
|
||||
|
||||
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 > fanMax[i])
|
||||
{
|
||||
fanMax[i] = fan;
|
||||
same = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (same) sameCount++;
|
||||
else sameCount = 0;
|
||||
|
||||
LabelFansResult("Max Speed - CPU: " + fanMax[(int)AsusFan.CPU] * 100 + ", GPU: " + fanMax[(int)AsusFan.GPU] * 100 + " (" + sameCount + "s)");
|
||||
|
||||
if (sameCount >= 15)
|
||||
{
|
||||
for (int i = 0; i < FAN_COUNT; i++)
|
||||
{
|
||||
if (fanMax[i] > 30 && fanMax[i] < 80) AppConfig.Set("fan_max_" + i, fanMax[i]);
|
||||
}
|
||||
|
||||
sameCount = 0;
|
||||
CalibrateNext();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void CalibrateNext()
|
||||
{
|
||||
|
||||
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;
|
||||
|
||||
LabelFansResult(label);
|
||||
|
||||
Invoke(delegate
|
||||
{
|
||||
buttonCalibrate.Enabled = true;
|
||||
SetAxis(chartCPU, AsusFan.CPU);
|
||||
SetAxis(chartGPU, AsusFan.GPU);
|
||||
if (chartMid.Visible) SetAxis(chartMid, AsusFan.Mid);
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void ButtonCalibrate_Click(object? sender, EventArgs e)
|
||||
{
|
||||
fanMax = new int[] { 0, 0, 0 };
|
||||
|
||||
buttonCalibrate.Enabled = false;
|
||||
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 });
|
||||
fanSensorControl.StartCalibration();
|
||||
}
|
||||
|
||||
private void ChartCPU_MouseClick(object? sender, MouseEventArgs e)
|
||||
@@ -660,10 +589,8 @@ namespace GHelper
|
||||
{
|
||||
if (percentage == 0) return "OFF";
|
||||
|
||||
int Min = HardwareControl.DEFAULT_FAN_MIN;
|
||||
int Max = AppConfig.Get("fan_max_" + (int)device, HardwareControl.DEFAULT_FAN_MAX);
|
||||
|
||||
if (device == AsusFan.XGM) Max = 72;
|
||||
int Min = FanSensorControl.DEFAULT_FAN_MIN;
|
||||
int Max = FanSensorControl.GetFanMax(device);
|
||||
|
||||
if (fanRpm)
|
||||
return (200 * Math.Round((float)(Min * 100 + (Max - Min) * percentage) / 200)).ToString() + unit;
|
||||
@@ -765,7 +692,14 @@ namespace GHelper
|
||||
comboBoost.SelectedIndex = Math.Min(boost, comboBoost.Items.Count - 1);
|
||||
|
||||
string powerMode = PowerNative.GetPowerMode();
|
||||
comboPowerMode.SelectedValue = powerMode;
|
||||
bool batterySaver = PowerNative.GetBatterySaverStatus();
|
||||
|
||||
comboPowerMode.Enabled = !batterySaver;
|
||||
|
||||
if (batterySaver)
|
||||
comboPowerMode.SelectedIndex = 0;
|
||||
else
|
||||
comboPowerMode.SelectedValue = powerMode;
|
||||
|
||||
}
|
||||
|
||||
@@ -809,9 +743,25 @@ 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)
|
||||
{
|
||||
if (text.Length > 0) Logger.WriteLine(text);
|
||||
|
||||
if (this == null || this.Text == "") return;
|
||||
|
||||
Invoke(delegate
|
||||
{
|
||||
labelFansResult.Text = text;
|
||||
@@ -821,7 +771,6 @@ namespace GHelper
|
||||
|
||||
private void Fans_FormClosing(object? sender, FormClosingEventArgs e)
|
||||
{
|
||||
|
||||
/*
|
||||
if (e.CloseReason == CloseReason.UserClosing)
|
||||
{
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||
<AssemblyVersion>0.120</AssemblyVersion>
|
||||
<AssemblyVersion>0.130</AssemblyVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
||||
@@ -24,9 +24,13 @@ namespace GHelper.Gpu
|
||||
int eco = Program.acpi.DeviceGet(AsusACPI.GPUEco);
|
||||
int mux = Program.acpi.DeviceGet(AsusACPI.GPUMux);
|
||||
|
||||
if (mux < 0) mux = Program.acpi.DeviceGet(AsusACPI.GPUMuxVivo);
|
||||
|
||||
Logger.WriteLine("Eco flag : " + eco);
|
||||
Logger.WriteLine("Mux flag : " + mux);
|
||||
|
||||
settings.VisualiseGPUButtons(eco >= 0, mux >= 0);
|
||||
|
||||
if (mux == 0)
|
||||
{
|
||||
gpuMode = AsusACPI.GPUModeUltimate;
|
||||
@@ -38,9 +42,6 @@ namespace GHelper.Gpu
|
||||
else
|
||||
gpuMode = AsusACPI.GPUModeStandard;
|
||||
|
||||
// Ultimate mode not supported
|
||||
if (mux != 1) settings.HideUltimateMode();
|
||||
|
||||
// GPU mode not supported
|
||||
if (eco < 0 && mux < 0)
|
||||
{
|
||||
@@ -73,12 +74,15 @@ namespace GHelper.Gpu
|
||||
var restart = false;
|
||||
var changed = false;
|
||||
|
||||
int status;
|
||||
|
||||
if (CurrentGPU == AsusACPI.GPUModeUltimate)
|
||||
{
|
||||
DialogResult dialogResult = MessageBox.Show(Properties.Strings.AlertUltimateOff, Properties.Strings.AlertUltimateTitle, MessageBoxButtons.YesNo);
|
||||
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;
|
||||
changed = true;
|
||||
}
|
||||
@@ -93,7 +97,8 @@ namespace GHelper.Gpu
|
||||
Program.acpi.SetGPUEco(0);
|
||||
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;
|
||||
changed = true;
|
||||
}
|
||||
@@ -160,7 +165,7 @@ namespace GHelper.Gpu
|
||||
|
||||
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
|
||||
{
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using GHelper;
|
||||
using GHelper.Fan;
|
||||
using GHelper.Gpu;
|
||||
using GHelper.Gpu.NVidia;
|
||||
using GHelper.Gpu.AMD;
|
||||
@@ -6,15 +7,11 @@ using GHelper.Gpu.AMD;
|
||||
using GHelper.Helpers;
|
||||
using System.Diagnostics;
|
||||
using System.Management;
|
||||
using GHelper.Battery;
|
||||
|
||||
public static class HardwareControl
|
||||
{
|
||||
|
||||
public const int DEFAULT_FAN_MIN = 18;
|
||||
public const int DEFAULT_FAN_MAX = 58;
|
||||
|
||||
const int INADEQUATE_MAX = 72;
|
||||
|
||||
public static IGpuControl? GpuControl;
|
||||
|
||||
public static float? cpuTemp = -1;
|
||||
@@ -37,62 +34,6 @@ public static class HardwareControl
|
||||
|
||||
static long lastUpdate;
|
||||
|
||||
static int[] _fanMax = new int[3] { DEFAULT_FAN_MAX, DEFAULT_FAN_MAX, DEFAULT_FAN_MAX };
|
||||
static bool _fanRpm = false;
|
||||
|
||||
public static int GetFanMax(AsusFan device)
|
||||
{
|
||||
return _fanMax[(int)device];
|
||||
}
|
||||
|
||||
public static void SetFanMax(AsusFan device, int 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;
|
||||
}
|
||||
}
|
||||
|
||||
static HardwareControl()
|
||||
{
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
_fanMax[i] = AppConfig.Get("fan_max_" + i);
|
||||
|
||||
if (_fanMax[i] > INADEQUATE_MAX) _fanMax[i] = -1; // skipping inadvequate settings
|
||||
|
||||
if (_fanMax[i] < 0 && AppConfig.ContainsModel("401")) _fanMax[i] = 72;
|
||||
if (_fanMax[i] < 0 && AppConfig.ContainsModel("503")) _fanMax[i] = 68;
|
||||
if (_fanMax[i] < 0) _fanMax[i] = DEFAULT_FAN_MAX;
|
||||
}
|
||||
|
||||
|
||||
_fanRpm = AppConfig.IsNotFalse("fan_rpm");
|
||||
|
||||
}
|
||||
|
||||
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 GHelper.Properties.Strings.FanSpeed + ": " + (value * 100).ToString() + "RPM";
|
||||
else
|
||||
return GHelper.Properties.Strings.FanSpeed + ": " + Math.Min(Math.Round((float)value / GetFanMax(device) * 100), 100).ToString() + "%"; // relatively to 6000 rpm
|
||||
}
|
||||
|
||||
private static int GetGpuUse()
|
||||
{
|
||||
try
|
||||
@@ -140,7 +81,7 @@ public static class HardwareControl
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine("Discharge Reading: " + ex.Message);
|
||||
Debug.WriteLine("Discharge Reading: " + ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -162,7 +103,7 @@ public static class HardwareControl
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine("Full Charge Reading: " + ex.Message);
|
||||
Debug.WriteLine("Full Charge Reading: " + ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -185,7 +126,7 @@ public static class HardwareControl
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine("Design Capacity Reading: " + ex.Message);
|
||||
Debug.WriteLine("Design Capacity Reading: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -245,9 +186,9 @@ public static class HardwareControl
|
||||
gpuTemp = -1;
|
||||
gpuUse = -1;
|
||||
|
||||
cpuFan = FormatFan(AsusFan.CPU, Program.acpi.GetFan(AsusFan.CPU));
|
||||
gpuFan = FormatFan(AsusFan.GPU, Program.acpi.GetFan(AsusFan.GPU));
|
||||
midFan = FormatFan(AsusFan.Mid, Program.acpi.GetFan(AsusFan.Mid));
|
||||
cpuFan = FanSensorControl.FormatFan(AsusFan.CPU, Program.acpi.GetFan(AsusFan.CPU));
|
||||
gpuFan = FanSensorControl.FormatFan(AsusFan.GPU, Program.acpi.GetFan(AsusFan.GPU));
|
||||
midFan = FanSensorControl.FormatFan(AsusFan.Mid, Program.acpi.GetFan(AsusFan.Mid));
|
||||
|
||||
cpuTemp = GetCPUTemp();
|
||||
|
||||
@@ -271,6 +212,7 @@ public static class HardwareControl
|
||||
if (fullCapacity > 0 && chargeCapacity > 0)
|
||||
{
|
||||
batteryCapacity = Math.Min(100, ((decimal)chargeCapacity / (decimal)fullCapacity) * 100);
|
||||
if (batteryCapacity > 99) BatteryControl.UnSetBatteryLimitFull();
|
||||
}
|
||||
|
||||
|
||||
@@ -327,6 +269,7 @@ public static class HardwareControl
|
||||
if (_gpuControl.IsValid)
|
||||
{
|
||||
GpuControl = _gpuControl;
|
||||
if (GpuControl.FullName.Contains("6850M")) AppConfig.Set("xgm_special", 1);
|
||||
Logger.WriteLine(GpuControl.FullName);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -95,6 +95,10 @@ namespace GHelper.Helpers
|
||||
|
||||
if (IsClamshellEnabled())
|
||||
ToggleLidAction();
|
||||
|
||||
if (Program.settingsForm.Visible)
|
||||
Program.screenControl.InitScreen();
|
||||
|
||||
}
|
||||
|
||||
private static int CheckAndSaveLidAction()
|
||||
|
||||
@@ -10,8 +10,8 @@ public class Startup
|
||||
|
||||
public static bool IsScheduled()
|
||||
{
|
||||
TaskService taskService = new TaskService();
|
||||
return (taskService.RootFolder.AllTasks.Any(t => t.Name == taskName));
|
||||
using (TaskService taskService = new TaskService())
|
||||
return (taskService.RootFolder.AllTasks.Any(t => t.Name == taskName));
|
||||
}
|
||||
|
||||
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()
|
||||
{
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ using GHelper.Mode;
|
||||
using Microsoft.Win32;
|
||||
using System.Diagnostics;
|
||||
using System.Management;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace GHelper.Input
|
||||
{
|
||||
@@ -142,25 +143,59 @@ namespace GHelper.Input
|
||||
|
||||
}
|
||||
|
||||
|
||||
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")
|
||||
{
|
||||
string command = AppConfig.GetString(configKey + "_custom");
|
||||
int intKey;
|
||||
int[] hexKeys = new int[0];
|
||||
|
||||
try
|
||||
{
|
||||
intKey = Convert.ToInt32(command, 16);
|
||||
hexKeys = ParseHexValues(command);
|
||||
}
|
||||
catch
|
||||
{
|
||||
intKey = -1;
|
||||
}
|
||||
|
||||
|
||||
if (intKey > 0)
|
||||
KeyboardHook.KeyPress((Keys)intKey);
|
||||
else
|
||||
LaunchProcess(command);
|
||||
switch (hexKeys.Length)
|
||||
{
|
||||
case 1:
|
||||
KeyboardHook.KeyPress((Keys)hexKeys[0]);
|
||||
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 +203,7 @@ namespace GHelper.Input
|
||||
static void SetBrightness(int delta)
|
||||
{
|
||||
int brightness = -1;
|
||||
|
||||
|
||||
if (isTUF) brightness = ScreenBrightness.Get();
|
||||
if (AppConfig.SwappedBrightness()) delta = -delta;
|
||||
|
||||
@@ -182,7 +217,7 @@ namespace GHelper.Input
|
||||
|
||||
Thread.Sleep(100);
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -264,7 +299,7 @@ namespace GHelper.Input
|
||||
SetBrightness(+10);
|
||||
break;
|
||||
case Keys.F9:
|
||||
KeyboardHook.KeyWinPress(Keys.P);
|
||||
KeyboardHook.KeyKeyPress(Keys.LWin, Keys.P);
|
||||
break;
|
||||
case Keys.F10:
|
||||
HandleOptimizationEvent(107);
|
||||
@@ -273,7 +308,7 @@ namespace GHelper.Input
|
||||
HandleOptimizationEvent(108);
|
||||
break;
|
||||
case Keys.F12:
|
||||
KeyboardHook.KeyWinPress(Keys.A);
|
||||
KeyboardHook.KeyKeyPress(Keys.LWin, Keys.A);
|
||||
break;
|
||||
case Keys.VolumeDown:
|
||||
KeyProcess("m1");
|
||||
@@ -311,6 +346,7 @@ namespace GHelper.Input
|
||||
if (e.Key == keyProfile) modeControl.CyclePerformanceMode(true);
|
||||
}
|
||||
|
||||
|
||||
if (e.Modifier == (ModifierKeys.Control))
|
||||
{
|
||||
switch (e.Key)
|
||||
@@ -388,10 +424,17 @@ namespace GHelper.Input
|
||||
modeControl.CyclePerformanceMode(Control.ModifierKeys == Keys.Shift);
|
||||
break;
|
||||
case "ghelper":
|
||||
Program.settingsForm.BeginInvoke(delegate
|
||||
try
|
||||
{
|
||||
Program.SettingsToggle();
|
||||
});
|
||||
Program.settingsForm.BeginInvoke(delegate
|
||||
{
|
||||
Program.SettingsToggle();
|
||||
});
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine(ex);
|
||||
}
|
||||
break;
|
||||
case "fnlock":
|
||||
ToggleFnLock();
|
||||
@@ -433,6 +476,11 @@ namespace GHelper.Input
|
||||
}
|
||||
}
|
||||
|
||||
static void ToggleTouchpad()
|
||||
{
|
||||
KeyboardHook.KeyKeyKeyPress(Keys.LWin, Keys.LControlKey, Keys.F24);
|
||||
}
|
||||
|
||||
public static void ToggleArrowLock()
|
||||
{
|
||||
int arLock = AppConfig.Is("arrow_lock") ? 0 : 1;
|
||||
@@ -476,7 +524,7 @@ namespace GHelper.Input
|
||||
// We'll special-case the translation of those.
|
||||
if (AppConfig.IsAlly())
|
||||
{
|
||||
switch(EventID)
|
||||
switch (EventID)
|
||||
{
|
||||
|
||||
// This is both the M1 and M2 keys.
|
||||
@@ -541,7 +589,8 @@ namespace GHelper.Input
|
||||
case 199: // ON Z13 - FN+F11 - cycles backlight
|
||||
SetBacklight(4);
|
||||
return;
|
||||
case 53: // FN+F6 on GA-502DU model
|
||||
case 51: // Fn+F6 on old TUFs
|
||||
case 53: // Fn+F6 on GA-502DU model
|
||||
NativeMethods.TurnOffScreen();
|
||||
return;
|
||||
}
|
||||
@@ -558,15 +607,19 @@ namespace GHelper.Input
|
||||
switch (EventID)
|
||||
{
|
||||
case 16: // FN+F7
|
||||
//ScreenBrightness.Adjust(-10);
|
||||
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Brightness_Down, "Brightness");
|
||||
if (Control.ModifierKeys == Keys.Shift)
|
||||
SetScreenpad(-10);
|
||||
else
|
||||
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Brightness_Down, "Brightness");
|
||||
break;
|
||||
case 32: // FN+F8
|
||||
//ScreenBrightness.Adjust(+10);
|
||||
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Brightness_Up, "Brightness");
|
||||
if (Control.ModifierKeys == Keys.Shift)
|
||||
SetScreenpad(10);
|
||||
else
|
||||
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Brightness_Up, "Brightness");
|
||||
break;
|
||||
case 107: // FN+F10
|
||||
AsusUSB.TouchpadToggle();
|
||||
ToggleTouchpad();
|
||||
Thread.Sleep(200);
|
||||
Program.toast.RunToast(GetTouchpadState() ? "On" : "Off", ToastIcon.Touchpad);
|
||||
break;
|
||||
@@ -574,7 +627,10 @@ namespace GHelper.Input
|
||||
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.KB_Sleep, "Sleep");
|
||||
break;
|
||||
case 106: // Screenpad button on DUO
|
||||
SetScreenpad(100);
|
||||
if (Control.ModifierKeys == Keys.Shift)
|
||||
ToggleScreenpad();
|
||||
else
|
||||
SetScreenpad(100);
|
||||
break;
|
||||
|
||||
|
||||
@@ -599,9 +655,7 @@ namespace GHelper.Input
|
||||
public static void SetBacklightAuto(bool init = false)
|
||||
{
|
||||
if (init) AsusUSB.Init();
|
||||
|
||||
//if (!OptimizationService.IsRunning())
|
||||
AsusUSB.ApplyBrightness(GetBacklight(), "Auto");
|
||||
AsusUSB.ApplyBrightness(GetBacklight(), "Auto", init);
|
||||
}
|
||||
|
||||
public static void SetBacklight(int delta, bool force = false)
|
||||
@@ -635,6 +689,16 @@ namespace GHelper.Input
|
||||
|
||||
}
|
||||
|
||||
public static void ToggleScreenpad()
|
||||
{
|
||||
int toggle = AppConfig.Is("screenpad_toggle") ? 0 : 1;
|
||||
|
||||
Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, toggle, "ScreenpadToggle");
|
||||
AppConfig.Set("screenpad_toggle", toggle);
|
||||
Program.toast.RunToast($"Screen Pad " + (toggle == 1 ? "On" : "Off"), toggle > 0 ? ToastIcon.BrightnessUp : ToastIcon.BrightnessDown);
|
||||
}
|
||||
|
||||
|
||||
public static void SetScreenpad(int delta)
|
||||
{
|
||||
int brightness = AppConfig.Get("screenpad", 100);
|
||||
@@ -645,7 +709,8 @@ namespace GHelper.Input
|
||||
else if (brightness >= 100) brightness = 0;
|
||||
else brightness = -10;
|
||||
|
||||
} else
|
||||
}
|
||||
else
|
||||
{
|
||||
brightness = Math.Max(Math.Min(100, brightness + delta), -10);
|
||||
}
|
||||
@@ -654,9 +719,9 @@ namespace GHelper.Input
|
||||
|
||||
if (brightness >= 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, 1, "ScreenpadOn");
|
||||
|
||||
Program.acpi.DeviceSet(AsusACPI.ScreenPadBrightness, Math.Max(brightness * 255 / 100, 0 ), "Screenpad");
|
||||
Program.acpi.DeviceSet(AsusACPI.ScreenPadBrightness, Math.Max(brightness * 255 / 100, 0), "Screenpad");
|
||||
|
||||
if (brightness < 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, 0, "ScreenpadOff");
|
||||
if (brightness < 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, 0, "ScreenpadOff");
|
||||
|
||||
string toast;
|
||||
|
||||
@@ -677,11 +742,14 @@ namespace GHelper.Input
|
||||
|
||||
//string executable = command.Split(' ')[0];
|
||||
//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.FileName = command;
|
||||
//startInfo.Arguments = arguments;
|
||||
Process proc = Process.Start(startInfo);
|
||||
}
|
||||
|
||||
@@ -17,21 +17,33 @@ public sealed class KeyboardHook : IDisposable
|
||||
|
||||
public const int KEYEVENTF_EXTENDEDKEY = 1;
|
||||
public const int KEYEVENTF_KEYUP = 2;
|
||||
|
||||
private const byte VK_LWIN = 0x5B;
|
||||
private const byte VK_LCONTROL = 0xA2;
|
||||
|
||||
public static void KeyPress(Keys key)
|
||||
{
|
||||
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)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(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)key, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
|
||||
keybd_event((byte)key2, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
|
||||
keybd_event((byte)key3, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Represents the window that is used internally to get the messages.
|
||||
|
||||
50
app/Matrix.Designer.cs
generated
50
app/Matrix.Designer.cs
generated
@@ -35,6 +35,9 @@
|
||||
panelMain = new Panel();
|
||||
panelButtons = new Panel();
|
||||
buttonReset = new UI.RButton();
|
||||
panelRotation = new Panel();
|
||||
comboRotation = new UI.RComboBox();
|
||||
labelRotation = new Label();
|
||||
panelScaling = new Panel();
|
||||
comboScaling = new UI.RComboBox();
|
||||
labelScaling = new Label();
|
||||
@@ -46,6 +49,7 @@
|
||||
panelPicture.SuspendLayout();
|
||||
panelMain.SuspendLayout();
|
||||
panelButtons.SuspendLayout();
|
||||
panelRotation.SuspendLayout();
|
||||
panelScaling.SuspendLayout();
|
||||
panelZoom.SuspendLayout();
|
||||
SuspendLayout();
|
||||
@@ -105,14 +109,16 @@
|
||||
//
|
||||
// panelMain
|
||||
//
|
||||
panelMain.AutoSize = true;
|
||||
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.Size = new Size(834, 814);
|
||||
panelMain.TabIndex = 5;
|
||||
//
|
||||
// panelButtons
|
||||
@@ -120,7 +126,7 @@
|
||||
panelButtons.Controls.Add(buttonReset);
|
||||
panelButtons.Controls.Add(buttonPicture);
|
||||
panelButtons.Dock = DockStyle.Top;
|
||||
panelButtons.Location = new Point(0, 642);
|
||||
panelButtons.Location = new Point(0, 720);
|
||||
panelButtons.Name = "panelButtons";
|
||||
panelButtons.Size = new Size(834, 94);
|
||||
panelButtons.TabIndex = 6;
|
||||
@@ -144,6 +150,40 @@
|
||||
buttonReset.TextImageRelation = TextImageRelation.ImageBeforeText;
|
||||
buttonReset.UseVisualStyleBackColor = false;
|
||||
//
|
||||
// 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";
|
||||
//
|
||||
// panelScaling
|
||||
//
|
||||
panelScaling.Controls.Add(comboScaling);
|
||||
@@ -232,11 +272,14 @@
|
||||
panelMain.ResumeLayout(false);
|
||||
panelMain.PerformLayout();
|
||||
panelButtons.ResumeLayout(false);
|
||||
panelRotation.ResumeLayout(false);
|
||||
panelRotation.PerformLayout();
|
||||
panelScaling.ResumeLayout(false);
|
||||
panelScaling.PerformLayout();
|
||||
panelZoom.ResumeLayout(false);
|
||||
panelZoom.PerformLayout();
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -254,5 +297,8 @@
|
||||
private Panel panelScaling;
|
||||
private Label labelScaling;
|
||||
private UI.RComboBox comboScaling;
|
||||
private Panel panelRotation;
|
||||
private UI.RComboBox comboRotation;
|
||||
private Label labelRotation;
|
||||
}
|
||||
}
|
||||
@@ -45,11 +45,22 @@ namespace GHelper
|
||||
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);
|
||||
|
||||
@@ -153,6 +153,13 @@ namespace GHelper.Mode
|
||||
Guid guidScheme = new Guid(scheme);
|
||||
|
||||
uint status = PowerGetEffectiveOverlayScheme(out Guid activeScheme);
|
||||
|
||||
if (GetBatterySaverStatus())
|
||||
{
|
||||
Logger.WriteLine("Battery Saver detected");
|
||||
return;
|
||||
}
|
||||
|
||||
if (status != 0 || activeScheme != guidScheme)
|
||||
{
|
||||
status = PowerSetActiveOverlayScheme(guidScheme);
|
||||
@@ -288,6 +295,48 @@ namespace GHelper.Mode
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
209
app/Peripherals/Mouse/Models/Chakram.cs
Normal file
209
app/Peripherals/Mouse/Models/Chakram.cs
Normal file
@@ -0,0 +1,209 @@
|
||||
|
||||
namespace GHelper.Peripherals.Mouse.Models
|
||||
{
|
||||
//P704
|
||||
public class Chakram : AsusMouse
|
||||
{
|
||||
public Chakram() : base(0x0B05, 0x18E5, "mi_00", true) {
|
||||
|
||||
}
|
||||
|
||||
protected Chakram(ushort vendorId, bool wireless) : base(0x0B05, vendorId, "mi_00", wireless)
|
||||
{
|
||||
}
|
||||
public override int DPIProfileCount()
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "ROG Chakram (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 ChakramWired : Chakram
|
||||
{
|
||||
public ChakramWired() : base(0x18E3, false)
|
||||
{
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "ROG Chakram (Wired)";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -66,6 +66,15 @@
|
||||
return new LightingZone[] { LightingZone.Logo };
|
||||
}
|
||||
|
||||
public override bool IsLightingModeSupported(LightingMode lightingMode)
|
||||
{
|
||||
return lightingMode == LightingMode.Static
|
||||
|| lightingMode == LightingMode.Breathing
|
||||
|| lightingMode == LightingMode.ColorCycle
|
||||
|| lightingMode == LightingMode.BatteryState
|
||||
|| lightingMode == LightingMode.React;
|
||||
}
|
||||
|
||||
public override bool HasAutoPowerOff()
|
||||
{
|
||||
return true;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
170
app/Peripherals/Mouse/Models/TUFM5.cs
Normal file
170
app/Peripherals/Mouse/Models/TUFM5.cs
Normal file
@@ -0,0 +1,170 @@
|
||||
namespace GHelper.Peripherals.Mouse.Models
|
||||
{
|
||||
//P304
|
||||
public class TUFM5 : AsusMouse
|
||||
{
|
||||
public TUFM5() : base(0x0B05, 0x1898, "mi_02", false)
|
||||
{
|
||||
}
|
||||
|
||||
public override int DPIProfileCount()
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "TUF GAMING M5";
|
||||
}
|
||||
|
||||
|
||||
public override PollingRate[] SupportedPollingrates()
|
||||
{
|
||||
return new PollingRate[] {
|
||||
PollingRate.PR125Hz,
|
||||
PollingRate.PR250Hz,
|
||||
PollingRate.PR500Hz,
|
||||
PollingRate.PR1000Hz
|
||||
};
|
||||
}
|
||||
|
||||
//Mouse has React mapped to 0x03 instead of 0x04 like other mice
|
||||
protected override byte IndexForLightingMode(LightingMode lightingMode)
|
||||
{
|
||||
if (lightingMode == LightingMode.React)
|
||||
{
|
||||
return 0x03;
|
||||
}
|
||||
return ((byte)lightingMode);
|
||||
}
|
||||
|
||||
//Mouse has React mapped to 0x03 instead of 0x04 like other mice
|
||||
protected override LightingMode LightingModeForIndex(byte lightingMode)
|
||||
{
|
||||
if (lightingMode == 0x03)
|
||||
{
|
||||
return LightingMode.React;
|
||||
}
|
||||
return base.LightingModeForIndex(lightingMode);
|
||||
|
||||
}
|
||||
|
||||
public override int ProfileCount()
|
||||
{
|
||||
return 3;
|
||||
}
|
||||
public override int MaxDPI()
|
||||
{
|
||||
return 6_200;
|
||||
}
|
||||
public override bool HasBattery()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool HasLiftOffSetting()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
public override LightingZone[] SupportedLightingZones()
|
||||
{
|
||||
return new LightingZone[] { LightingZone.Logo };
|
||||
}
|
||||
|
||||
public override bool HasRGB()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasAngleSnapping()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override int DPIIncrements()
|
||||
{
|
||||
return 100;
|
||||
}
|
||||
|
||||
public override bool CanChangeDPIProfile()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasDebounceSetting()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override int MaxBrightness()
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
public override bool IsLightingModeSupported(LightingMode lightingMode)
|
||||
{
|
||||
return lightingMode == LightingMode.Static
|
||||
|| lightingMode == LightingMode.Breathing
|
||||
|| lightingMode == LightingMode.ColorCycle
|
||||
|| lightingMode == LightingMode.React;
|
||||
}
|
||||
|
||||
|
||||
protected override byte[] GetUpdatePollingRatePacket(PollingRate pollingRate)
|
||||
{
|
||||
return new byte[] { reportId, 0x51, 0x31, 0x02, 0x00, (byte)pollingRate };
|
||||
}
|
||||
|
||||
protected override byte[] GetUpdateAngleSnappingPacket(bool angleSnapping)
|
||||
{
|
||||
return new byte[] { reportId, 0x51, 0x31, 0x04, 0x00, (byte)(angleSnapping ? 0x01 : 0x00) };
|
||||
}
|
||||
|
||||
protected override PollingRate ParsePollingRate(byte[] packet)
|
||||
{
|
||||
|
||||
if (packet[1] == 0x12 && packet[2] == 0x04 && packet[3] == 0x00)
|
||||
{
|
||||
return (PollingRate)packet[9];
|
||||
}
|
||||
|
||||
return PollingRate.PR125Hz;
|
||||
}
|
||||
|
||||
protected override bool ParseAngleSnapping(byte[] packet)
|
||||
{
|
||||
|
||||
if (packet[1] == 0x12 && packet[2] == 0x04 && packet[3] == 0x00)
|
||||
{
|
||||
return packet[13] == 0x01;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
protected override byte[] GetUpdateDebouncePacket(DebounceTime debounce)
|
||||
{
|
||||
return new byte[] { reportId, 0x51, 0x31, 0x03, 0x00, ((byte)debounce) };
|
||||
}
|
||||
|
||||
protected override DebounceTime ParseDebounce(byte[] packet)
|
||||
{
|
||||
if (packet[1] != 0x12 || packet[2] != 0x04 || packet[3] != 0x00)
|
||||
{
|
||||
return DebounceTime.MS12;
|
||||
}
|
||||
|
||||
if (packet[11] < 0x02)
|
||||
{
|
||||
return DebounceTime.MS12;
|
||||
}
|
||||
|
||||
if (packet[11] > 0x07)
|
||||
{
|
||||
return DebounceTime.MS32;
|
||||
}
|
||||
|
||||
return (DebounceTime)packet[11];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -200,10 +200,14 @@ namespace GHelper.Peripherals
|
||||
DetectMouse(new HarpeAceAimLabEditionWired());
|
||||
DetectMouse(new HarpeAceAimLabEditionOmni());
|
||||
DetectMouse(new TUFM3());
|
||||
DetectMouse(new TUFM5());
|
||||
DetectMouse(new KerisWirelssAimpoint());
|
||||
DetectMouse(new KerisWirelssAimpointWired());
|
||||
DetectMouse(new PugioII());
|
||||
DetectMouse(new PugioIIWired());
|
||||
DetectMouse(new StrixImpactII());
|
||||
DetectMouse(new Chakram());
|
||||
DetectMouse(new ChakramWired());
|
||||
}
|
||||
|
||||
public static void DetectMouse(AsusMouse am)
|
||||
|
||||
@@ -29,9 +29,9 @@ namespace GHelper
|
||||
public static SettingsForm settingsForm = new SettingsForm();
|
||||
|
||||
public static ModeControl modeControl = new ModeControl();
|
||||
static GPUModeControl gpuControl = new GPUModeControl(settingsForm);
|
||||
static ScreenControl screenControl = new ScreenControl();
|
||||
static ClamshellModeControl clamshellControl = new ClamshellModeControl();
|
||||
public static GPUModeControl gpuControl = new GPUModeControl(settingsForm);
|
||||
public static ScreenControl screenControl = new ScreenControl();
|
||||
public static ClamshellModeControl clamshellControl = new ClamshellModeControl();
|
||||
|
||||
public static ToastForm toast = new ToastForm();
|
||||
|
||||
@@ -97,7 +97,7 @@ namespace GHelper
|
||||
|
||||
gpuControl.InitXGM();
|
||||
|
||||
SetAutoModes();
|
||||
SetAutoModes(init : true);
|
||||
|
||||
// Subscribing for system power change events
|
||||
SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
|
||||
@@ -119,7 +119,7 @@ namespace GHelper
|
||||
|
||||
if (Environment.CurrentDirectory.Trim('\\') == Application.StartupPath.Trim('\\') || action.Length > 0)
|
||||
{
|
||||
SettingsToggle(action);
|
||||
SettingsToggle(action, false);
|
||||
}
|
||||
|
||||
Application.Run();
|
||||
@@ -129,7 +129,7 @@ namespace GHelper
|
||||
private static void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
|
||||
{
|
||||
gpuControl.StandardModeFix();
|
||||
BatteryControl.SetBatteryChargeLimit();
|
||||
BatteryControl.AutoBattery();
|
||||
}
|
||||
|
||||
private static void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
|
||||
@@ -156,24 +156,24 @@ namespace GHelper
|
||||
lastTheme = DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
||||
}
|
||||
|
||||
if (settingsForm.fans is not null && settingsForm.fans.Text != "")
|
||||
settingsForm.fans.InitTheme();
|
||||
if (settingsForm.fansForm is not null && settingsForm.fansForm.Text != "")
|
||||
settingsForm.fansForm.InitTheme();
|
||||
|
||||
if (settingsForm.keyb is not null && settingsForm.keyb.Text != "")
|
||||
settingsForm.keyb.InitTheme();
|
||||
if (settingsForm.extraForm is not null && settingsForm.extraForm.Text != "")
|
||||
settingsForm.extraForm.InitTheme();
|
||||
|
||||
if (settingsForm.updates is not null && settingsForm.updates.Text != "")
|
||||
settingsForm.updates.InitTheme();
|
||||
if (settingsForm.updatesForm is not null && settingsForm.updatesForm.Text != "")
|
||||
settingsForm.updatesForm.InitTheme();
|
||||
|
||||
if (settingsForm.matrix is not null && settingsForm.matrix.Text != "")
|
||||
settingsForm.matrix.InitTheme();
|
||||
if (settingsForm.matrixForm is not null && settingsForm.matrixForm.Text != "")
|
||||
settingsForm.matrixForm.InitTheme();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static void SetAutoModes(bool powerChanged = false)
|
||||
public static void SetAutoModes(bool powerChanged = false, bool init = false)
|
||||
{
|
||||
|
||||
if (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastAuto) < 3000) return;
|
||||
@@ -194,7 +194,7 @@ namespace GHelper
|
||||
screenControl.AutoScreen();
|
||||
}
|
||||
|
||||
BatteryControl.SetBatteryChargeLimit();
|
||||
BatteryControl.AutoBattery(init);
|
||||
|
||||
settingsForm.AutoKeyboard();
|
||||
settingsForm.matrixControl.SetMatrix(true);
|
||||
@@ -213,11 +213,21 @@ namespace GHelper
|
||||
SetAutoModes(true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static void SettingsToggle(string action = "")
|
||||
public static void SettingsToggle(string action = "", bool checkForFocus = true, bool trayClick = false)
|
||||
{
|
||||
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(trayClick))
|
||||
{
|
||||
settingsForm.ShowAll();
|
||||
}
|
||||
else
|
||||
{
|
||||
settingsForm.HideAll();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -246,15 +256,18 @@ namespace GHelper
|
||||
gpuControl.RestartGPU(false);
|
||||
break;
|
||||
case "services":
|
||||
settingsForm.keyb = new Extra();
|
||||
settingsForm.keyb.Show();
|
||||
settingsForm.keyb.ServiesToggle();
|
||||
settingsForm.extraForm = new Extra();
|
||||
settingsForm.extraForm.Show();
|
||||
settingsForm.extraForm.ServiesToggle();
|
||||
break;
|
||||
case "uv":
|
||||
Startup.ReScheduleAdmin();
|
||||
settingsForm.FansToggle(2);
|
||||
modeControl.SetRyzen();
|
||||
break;
|
||||
default:
|
||||
Startup.StartupCheck();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -262,7 +275,7 @@ namespace GHelper
|
||||
static void TrayIcon_MouseClick(object? sender, MouseEventArgs e)
|
||||
{
|
||||
if (e.Button == MouseButtons.Left)
|
||||
SettingsToggle();
|
||||
SettingsToggle(trayClick: true);
|
||||
|
||||
}
|
||||
|
||||
@@ -279,5 +292,4 @@ namespace GHelper
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
9
app/Properties/Strings.Designer.cs
generated
9
app/Properties/Strings.Designer.cs
generated
@@ -465,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>
|
||||
/// Looks up a localized string similar to BIOS and Driver Updates.
|
||||
/// </summary>
|
||||
|
||||
@@ -130,10 +130,10 @@
|
||||
<value>Eco Modus</value>
|
||||
</data>
|
||||
<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 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 name="AlertUltimateTitle" xml:space="preserve">
|
||||
<value>Jetzt neu starten?</value>
|
||||
@@ -252,6 +252,9 @@
|
||||
<data name="BatteryHealth" xml:space="preserve">
|
||||
<value>Batteriezustand</value>
|
||||
</data>
|
||||
<data name="BatteryLimitFull" xml:space="preserve">
|
||||
<value>Einmalig auf 100% aufladen</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>BIOS und Treiber Updates</value>
|
||||
</data>
|
||||
@@ -270,6 +273,9 @@
|
||||
<data name="BrightnessUp" xml:space="preserve">
|
||||
<value>Helligkeit erhöhen</value>
|
||||
</data>
|
||||
<data name="Calibrate" xml:space="preserve">
|
||||
<value>Kalibrieren</value>
|
||||
</data>
|
||||
<data name="Charging" xml:space="preserve">
|
||||
<value>Lädt</value>
|
||||
</data>
|
||||
@@ -289,7 +295,7 @@
|
||||
<value>Standard</value>
|
||||
</data>
|
||||
<data name="DisableOverdrive" xml:space="preserve">
|
||||
<value>Overdrive abschalten</value>
|
||||
<value>Bildschirm: Overdrive abschalten</value>
|
||||
</data>
|
||||
<data name="Discharging" xml:space="preserve">
|
||||
<value>Entlädt</value>
|
||||
@@ -307,7 +313,7 @@
|
||||
<value>Eco</value>
|
||||
</data>
|
||||
<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>
|
||||
</data>
|
||||
@@ -399,7 +405,7 @@ Trotzdem fortfahren?</value>
|
||||
<value>Alle Anwendungen auf der dGPU beim Wechsel in den Eco Modus beenden.</value>
|
||||
</data>
|
||||
<data name="LaptopBacklight" xml:space="preserve">
|
||||
<value>Laptopbelechtung</value>
|
||||
<value>Laptopbeleuchtung</value>
|
||||
</data>
|
||||
<data name="LaptopKeyboard" xml:space="preserve">
|
||||
<value>Laptoptastatur</value>
|
||||
@@ -495,7 +501,7 @@ Trotzdem fortfahren?</value>
|
||||
<value>Neue Updates:</value>
|
||||
</data>
|
||||
<data name="NoNewUpdates" xml:space="preserve">
|
||||
<value>Keine Updates verfügbar</value>
|
||||
<value>Keine Updates</value>
|
||||
</data>
|
||||
<data name="NotConnected" xml:space="preserve">
|
||||
<value>Nicht verbunden</value>
|
||||
@@ -627,7 +633,7 @@ Trotzdem fortfahren?</value>
|
||||
<value>Ultimativ</value>
|
||||
</data>
|
||||
<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 name="Updates" xml:space="preserve">
|
||||
<value>Aktualisierungen</value>
|
||||
|
||||
@@ -252,6 +252,9 @@
|
||||
<data name="BatteryHealth" xml:space="preserve">
|
||||
<value>Salud de la batería</value>
|
||||
</data>
|
||||
<data name="BatteryLimitFull" xml:space="preserve">
|
||||
<value>Cargar una vez al 100%</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>Actualizaciones de BIOS y Drivers</value>
|
||||
</data>
|
||||
@@ -259,7 +262,7 @@
|
||||
<value>Al arrancar</value>
|
||||
</data>
|
||||
<data name="BootSound" xml:space="preserve">
|
||||
<value>Boot Sound</value>
|
||||
<value>Sonido al arranque</value>
|
||||
</data>
|
||||
<data name="Brightness" xml:space="preserve">
|
||||
<value>Brillo</value>
|
||||
@@ -270,6 +273,9 @@
|
||||
<data name="BrightnessUp" xml:space="preserve">
|
||||
<value>Subir brillo</value>
|
||||
</data>
|
||||
<data name="Calibrate" xml:space="preserve">
|
||||
<value>Calibrar</value>
|
||||
</data>
|
||||
<data name="Charging" xml:space="preserve">
|
||||
<value>Cargando</value>
|
||||
</data>
|
||||
|
||||
@@ -252,6 +252,9 @@
|
||||
<data name="BatteryHealth" xml:space="preserve">
|
||||
<value>Santé de la batterie</value>
|
||||
</data>
|
||||
<data name="BatteryLimitFull" xml:space="preserve">
|
||||
<value>One time charge to 100%</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>Mise à jour BIOS et pilotes</value>
|
||||
</data>
|
||||
@@ -270,6 +273,9 @@
|
||||
<data name="BrightnessUp" xml:space="preserve">
|
||||
<value>Augmenter la luminosité</value>
|
||||
</data>
|
||||
<data name="Calibrate" xml:space="preserve">
|
||||
<value>Calibrate</value>
|
||||
</data>
|
||||
<data name="Charging" xml:space="preserve">
|
||||
<value>Chargement en cours</value>
|
||||
</data>
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
<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>Acceleration</value>
|
||||
<value>Gyorsítás</value>
|
||||
</data>
|
||||
<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>
|
||||
@@ -166,28 +166,28 @@
|
||||
<value>Asus szolgáltatások futnak</value>
|
||||
</data>
|
||||
<data name="AuraBatteryState" xml:space="preserve">
|
||||
<value>Battery State</value>
|
||||
<value>Akkuállapot</value>
|
||||
</data>
|
||||
<data name="AuraBreathe" xml:space="preserve">
|
||||
<value>Lélegző</value>
|
||||
</data>
|
||||
<data name="AuraClockwise" xml:space="preserve">
|
||||
<value>Clockwise</value>
|
||||
<value>Jobbra forog</value>
|
||||
</data>
|
||||
<data name="AuraColorCycle" xml:space="preserve">
|
||||
<value>Színváltás</value>
|
||||
</data>
|
||||
<data name="AuraComet" xml:space="preserve">
|
||||
<value>Comet</value>
|
||||
<value>Üstökös</value>
|
||||
</data>
|
||||
<data name="AuraCounterClockwise" xml:space="preserve">
|
||||
<value>Counterclockwise</value>
|
||||
<value>Balra forog</value>
|
||||
</data>
|
||||
<data name="AuraFast" xml:space="preserve">
|
||||
<value>Gyors</value>
|
||||
</data>
|
||||
<data name="AuraLightingMode" xml:space="preserve">
|
||||
<value>Lighting Mode</value>
|
||||
<value>Világítás típusa</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>Normál</value>
|
||||
@@ -196,10 +196,10 @@
|
||||
<value>Szivárvány</value>
|
||||
</data>
|
||||
<data name="AuraRandomColor" xml:space="preserve">
|
||||
<value>Random</value>
|
||||
<value>Véletlen</value>
|
||||
</data>
|
||||
<data name="AuraReact" xml:space="preserve">
|
||||
<value>React</value>
|
||||
<value>Reagál</value>
|
||||
</data>
|
||||
<data name="AuraSlow" xml:space="preserve">
|
||||
<value>Lassú</value>
|
||||
@@ -211,16 +211,16 @@
|
||||
<value>Stroboszkóp</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>All</value>
|
||||
<value>Mindegyik</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dock</value>
|
||||
<value>Dokk</value>
|
||||
</data>
|
||||
<data name="AuraZoneLogo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
<value>Logó</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Scrollwheel</value>
|
||||
<value>Görgetés</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Underglow</value>
|
||||
@@ -238,19 +238,22 @@
|
||||
<value>Ébren</value>
|
||||
</data>
|
||||
<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 name="Balanced" xml:space="preserve">
|
||||
<value>Teljesítmény</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>Charge</value>
|
||||
<value>Töltés</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Töltési korlát</value>
|
||||
</data>
|
||||
<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 name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>BIOS és illesztőprogram frissítések</value>
|
||||
@@ -259,7 +262,7 @@
|
||||
<value>Rendszerbetöltés</value>
|
||||
</data>
|
||||
<data name="BootSound" xml:space="preserve">
|
||||
<value>Boot Sound</value>
|
||||
<value>Rendszerindítási hang</value>
|
||||
</data>
|
||||
<data name="Brightness" xml:space="preserve">
|
||||
<value>Fényerő</value>
|
||||
@@ -270,8 +273,11 @@
|
||||
<data name="BrightnessUp" xml:space="preserve">
|
||||
<value>Fényerő növelése</value>
|
||||
</data>
|
||||
<data name="Calibrate" xml:space="preserve">
|
||||
<value>Kalibrálás</value>
|
||||
</data>
|
||||
<data name="Charging" xml:space="preserve">
|
||||
<value>Charging</value>
|
||||
<value>Töltés</value>
|
||||
</data>
|
||||
<data name="Color" xml:space="preserve">
|
||||
<value>Szín</value>
|
||||
@@ -283,7 +289,7 @@
|
||||
<value>Egyéni</value>
|
||||
</data>
|
||||
<data name="Deceleration" xml:space="preserve">
|
||||
<value>Deceleration</value>
|
||||
<value>Lassítás</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>Alapért.</value>
|
||||
@@ -295,7 +301,7 @@
|
||||
<value>Merülés</value>
|
||||
</data>
|
||||
<data name="DownloadUpdate" xml:space="preserve">
|
||||
<value>Download</value>
|
||||
<value>Letöltés</value>
|
||||
</data>
|
||||
<data name="DriverAndSoftware" xml:space="preserve">
|
||||
<value>Illesztőprogramok és alkalmazások</value>
|
||||
@@ -315,7 +321,7 @@ Do you still want to continue?</value>
|
||||
<value>NVIDIA kijelzőmód nincs Optimus-ra állítva</value>
|
||||
</data>
|
||||
<data name="EnergySettings" xml:space="preserve">
|
||||
<value>Energy Settings</value>
|
||||
<value>Energia beállítások</value>
|
||||
</data>
|
||||
<data name="Extra" xml:space="preserve">
|
||||
<value>Extra</value>
|
||||
@@ -351,7 +357,7 @@ Do you still want to continue?</value>
|
||||
<value>Venti + energia</value>
|
||||
</data>
|
||||
<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 name="GPUBoost" xml:space="preserve">
|
||||
<value>Dinamikus gyorsítás</value>
|
||||
@@ -384,10 +390,10 @@ Do you still want to continue?</value>
|
||||
<value>Célhőmérséklet</value>
|
||||
</data>
|
||||
<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 name="High" xml:space="preserve">
|
||||
<value>High</value>
|
||||
<value>Magas</value>
|
||||
</data>
|
||||
<data name="KeyBindings" xml:space="preserve">
|
||||
<value>Gyorsbillentyűk</value>
|
||||
@@ -396,7 +402,7 @@ Do you still want to continue?</value>
|
||||
<value>Billentyűzet</value>
|
||||
</data>
|
||||
<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 name="LaptopBacklight" xml:space="preserve">
|
||||
<value>Laptop háttérvilágítás</value>
|
||||
@@ -414,19 +420,19 @@ Do you still want to continue?</value>
|
||||
<value>Fénysáv</value>
|
||||
</data>
|
||||
<data name="Lighting" xml:space="preserve">
|
||||
<value>Lighting</value>
|
||||
<value>Világítás</value>
|
||||
</data>
|
||||
<data name="Logo" xml:space="preserve">
|
||||
<value>Logó</value>
|
||||
</data>
|
||||
<data name="Low" xml:space="preserve">
|
||||
<value>Low</value>
|
||||
<value>Alacsony</value>
|
||||
</data>
|
||||
<data name="MatrixAudio" xml:space="preserve">
|
||||
<value>Hang vizualizáció</value>
|
||||
</data>
|
||||
<data name="MatrixBanner" xml:space="preserve">
|
||||
<value>Binary Banner</value>
|
||||
<value>Bináris logó</value>
|
||||
</data>
|
||||
<data name="MatrixBright" xml:space="preserve">
|
||||
<value>Fényes</value>
|
||||
@@ -456,19 +462,19 @@ Do you still want to continue?</value>
|
||||
<value>60Hz-s frissítési gyakoriság, hogy spóroljon az akkuval</value>
|
||||
</data>
|
||||
<data name="Minute" xml:space="preserve">
|
||||
<value>Minute</value>
|
||||
<value>perc</value>
|
||||
</data>
|
||||
<data name="Minutes" xml:space="preserve">
|
||||
<value>Minutes</value>
|
||||
<value>perc</value>
|
||||
</data>
|
||||
<data name="MouseAngleSnapping" xml:space="preserve">
|
||||
<value>Angle Snapping</value>
|
||||
</data>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Auto Power Off After</value>
|
||||
<value>Automatikus kikapcsolás idő múlva</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>Button Response</value>
|
||||
<value>Gomb funkciója</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Lift Off Distance</value>
|
||||
@@ -477,10 +483,10 @@ Do you still want to continue?</value>
|
||||
<value>Low Battery Warning at</value>
|
||||
</data>
|
||||
<data name="MousePerformance" xml:space="preserve">
|
||||
<value>Performance</value>
|
||||
<value>Teljesítmény</value>
|
||||
</data>
|
||||
<data name="MouseSynchronize" xml:space="preserve">
|
||||
<value>Synchronize with mouse</value>
|
||||
<value>Szinkronizálás egérrel</value>
|
||||
</data>
|
||||
<data name="Multizone" xml:space="preserve">
|
||||
<value>Többzónás</value>
|
||||
@@ -489,7 +495,7 @@ Do you still want to continue?</value>
|
||||
<value>Mikrofon némítása</value>
|
||||
</data>
|
||||
<data name="Never" xml:space="preserve">
|
||||
<value>Never</value>
|
||||
<value>Soha</value>
|
||||
</data>
|
||||
<data name="NewUpdates" xml:space="preserve">
|
||||
<value>Új frissítés</value>
|
||||
@@ -498,7 +504,7 @@ Do you still want to continue?</value>
|
||||
<value>Nincs új frissítés</value>
|
||||
</data>
|
||||
<data name="NotConnected" xml:space="preserve">
|
||||
<value>Not Connected</value>
|
||||
<value>Nincs csatlakoztatva</value>
|
||||
</data>
|
||||
<data name="OpenGHelper" xml:space="preserve">
|
||||
<value>G-Helper ablak megnyitása</value>
|
||||
@@ -507,7 +513,7 @@ Do you still want to continue?</value>
|
||||
<value>Optimalizált</value>
|
||||
</data>
|
||||
<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 name="OptimizedUSBC" xml:space="preserve">
|
||||
<value>Optimalizált módban USB-C-s töltés közben tartsa letiltva a GPU-t</value>
|
||||
@@ -522,7 +528,7 @@ Do you still want to continue?</value>
|
||||
<value>Üzemmód</value>
|
||||
</data>
|
||||
<data name="Peripherals" xml:space="preserve">
|
||||
<value>Peripherals</value>
|
||||
<value>Perifériák</value>
|
||||
</data>
|
||||
<data name="PictureGif" xml:space="preserve">
|
||||
<value>Kép / Gif</value>
|
||||
@@ -543,19 +549,19 @@ Do you still want to continue?</value>
|
||||
<value>PrintScreen</value>
|
||||
</data>
|
||||
<data name="Profile" xml:space="preserve">
|
||||
<value>Profile</value>
|
||||
<value>Profil</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Bezárás</value>
|
||||
</data>
|
||||
<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 name="RPM" xml:space="preserve">
|
||||
<value>Fordulatszám</value>
|
||||
</data>
|
||||
<data name="RunOnStartup" xml:space="preserve">
|
||||
<value>Futtatás rendszerindításkor</value>
|
||||
<value>Indítás a rendszerrel</value>
|
||||
</data>
|
||||
<data name="ScreenPadDown" xml:space="preserve">
|
||||
<value>Screenpad Brightness Down</value>
|
||||
@@ -621,7 +627,7 @@ Do you still want to continue?</value>
|
||||
<value>Akkus üzemmódban kikapcsol</value>
|
||||
</data>
|
||||
<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 name="UltimateMode" xml:space="preserve">
|
||||
<value>Ultimate</value>
|
||||
|
||||
656
app/Properties/Strings.id.resx
Normal file
656
app/Properties/Strings.id.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>Akselerasi</value>
|
||||
</data>
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Tidak dapat terhubung ke ASUS ACPI. tanpanya aplikasi tidak dapat berfungsi. Cobalah untuk menginstal Asus System Control Interface</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>Tampaknya GPU sedang digunakan intensif, nonaktifkan?</value>
|
||||
</data>
|
||||
<data name="AlertDGPUTitle" xml:space="preserve">
|
||||
<value>Mode Eco</value>
|
||||
</data>
|
||||
<data name="AlertUltimateOff" xml:space="preserve">
|
||||
<value>Mematikan Mode Ultimate memerlukan restart.</value>
|
||||
</data>
|
||||
<data name="AlertUltimateOn" xml:space="preserve">
|
||||
<value>Mode Ultimate memerlukan restart</value>
|
||||
</data>
|
||||
<data name="AlertUltimateTitle" xml:space="preserve">
|
||||
<value>Mulai ulang sekarang?</value>
|
||||
</data>
|
||||
<data name="AnimationSpeed" xml:space="preserve">
|
||||
<value>Kecepatan Animasi</value>
|
||||
</data>
|
||||
<data name="AnimeMatrix" xml:space="preserve">
|
||||
<value>Anime Matrix</value>
|
||||
</data>
|
||||
<data name="AppAlreadyRunning" xml:space="preserve">
|
||||
<value>Aplikasi sudah berjalan</value>
|
||||
</data>
|
||||
<data name="AppAlreadyRunningText" xml:space="preserve">
|
||||
<value>G-Helper sudah berjalan. Periksa system tray untuk menemukan ikonnya.</value>
|
||||
</data>
|
||||
<data name="Apply" xml:space="preserve">
|
||||
<value>Terapkan</value>
|
||||
</data>
|
||||
<data name="ApplyFanCurve" xml:space="preserve">
|
||||
<value>Terapkan Custom Fan Curve</value>
|
||||
</data>
|
||||
<data name="ApplyPowerLimits" xml:space="preserve">
|
||||
<value>Terapkan Batas Daya</value>
|
||||
</data>
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<value>Otomatis sesuaikan Mode Daya Windows</value>
|
||||
</data>
|
||||
<data name="AsusServicesRunning" xml:space="preserve">
|
||||
<value>Layanan Asus Berjalan</value>
|
||||
</data>
|
||||
<data name="AuraBatteryState" xml:space="preserve">
|
||||
<value>Status Baterai</value>
|
||||
</data>
|
||||
<data name="AuraBreathe" xml:space="preserve">
|
||||
<value>Bernapas</value>
|
||||
</data>
|
||||
<data name="AuraClockwise" xml:space="preserve">
|
||||
<value>Searah Jarum Jam</value>
|
||||
</data>
|
||||
<data name="AuraColorCycle" xml:space="preserve">
|
||||
<value>Siklus Warna</value>
|
||||
</data>
|
||||
<data name="AuraComet" xml:space="preserve">
|
||||
<value>Komet</value>
|
||||
</data>
|
||||
<data name="AuraCounterClockwise" xml:space="preserve">
|
||||
<value>Berlawanan Jarum Jam</value>
|
||||
</data>
|
||||
<data name="AuraFast" xml:space="preserve">
|
||||
<value>Cepat</value>
|
||||
</data>
|
||||
<data name="AuraLightingMode" xml:space="preserve">
|
||||
<value>Mode Pencahayaan</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>Normal</value>
|
||||
</data>
|
||||
<data name="AuraRainbow" xml:space="preserve">
|
||||
<value>Pelangi</value>
|
||||
</data>
|
||||
<data name="AuraRandomColor" xml:space="preserve">
|
||||
<value>Acak</value>
|
||||
</data>
|
||||
<data name="AuraReact" xml:space="preserve">
|
||||
<value>Reaksi</value>
|
||||
</data>
|
||||
<data name="AuraSlow" xml:space="preserve">
|
||||
<value>Pelan</value>
|
||||
</data>
|
||||
<data name="AuraStatic" xml:space="preserve">
|
||||
<value>Statis</value>
|
||||
</data>
|
||||
<data name="AuraStrobe" xml:space="preserve">
|
||||
<value>Berkedip</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>Semua</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dok</value>
|
||||
</data>
|
||||
<data name="AuraZoneLogo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Roda Gulir</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Cahaya Bawah</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>Terapkan Secara Otomatis</value>
|
||||
</data>
|
||||
<data name="AutoMode" xml:space="preserve">
|
||||
<value>Otomatis</value>
|
||||
</data>
|
||||
<data name="AutoRefreshTooltip" xml:space="preserve">
|
||||
<value>Atur ke 60Hz untuk menghemat baterai, dan kembalikan saat mengisi daya</value>
|
||||
</data>
|
||||
<data name="Awake" xml:space="preserve">
|
||||
<value>Bangun</value>
|
||||
</data>
|
||||
<data name="BacklightTimeout" xml:space="preserve">
|
||||
<value>Waktu tunggu dicolokan / menggunakan baterai (0 - Hidup)</value>
|
||||
</data>
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>Seimbang</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>Baterai</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Batas Pengisian Baterai</value>
|
||||
</data>
|
||||
<data name="BatteryHealth" xml:space="preserve">
|
||||
<value>Kesehatan Baterai</value>
|
||||
</data>
|
||||
<data name="BatteryLimitFull" xml:space="preserve">
|
||||
<value>Isi daya sekali hingga mencapai 100%</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>Pembaruan BIOS dan Driver</value>
|
||||
</data>
|
||||
<data name="Boot" xml:space="preserve">
|
||||
<value>Boot</value>
|
||||
</data>
|
||||
<data name="BootSound" xml:space="preserve">
|
||||
<value>Suara Boot</value>
|
||||
</data>
|
||||
<data name="Brightness" xml:space="preserve">
|
||||
<value>Kecerahan</value>
|
||||
</data>
|
||||
<data name="BrightnessDown" xml:space="preserve">
|
||||
<value>Kurangi Kecerahan</value>
|
||||
</data>
|
||||
<data name="BrightnessUp" xml:space="preserve">
|
||||
<value>Tingkatkan Kecerahan</value>
|
||||
</data>
|
||||
<data name="Calibrate" xml:space="preserve">
|
||||
<value>Kalibrasi</value>
|
||||
</data>
|
||||
<data name="Charging" xml:space="preserve">
|
||||
<value>Mengisi Daya</value>
|
||||
</data>
|
||||
<data name="Color" xml:space="preserve">
|
||||
<value>Warna</value>
|
||||
</data>
|
||||
<data name="CPUBoost" xml:space="preserve">
|
||||
<value>CPU Boost</value>
|
||||
</data>
|
||||
<data name="Custom" xml:space="preserve">
|
||||
<value>Kustom</value>
|
||||
</data>
|
||||
<data name="Deceleration" xml:space="preserve">
|
||||
<value>Perlambatan</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>Standar</value>
|
||||
</data>
|
||||
<data name="DisableOverdrive" xml:space="preserve">
|
||||
<value>Nonaktifkan screen overdrive</value>
|
||||
</data>
|
||||
<data name="Discharging" xml:space="preserve">
|
||||
<value>Discharging</value>
|
||||
</data>
|
||||
<data name="DownloadUpdate" xml:space="preserve">
|
||||
<value>Unduh</value>
|
||||
</data>
|
||||
<data name="DriverAndSoftware" xml:space="preserve">
|
||||
<value>Driver dan Software</value>
|
||||
</data>
|
||||
<data name="EcoGPUTooltip" xml:space="preserve">
|
||||
<value>Menonaktikan dGPU untuk menghemat baterai</value>
|
||||
</data>
|
||||
<data name="EcoMode" xml:space="preserve">
|
||||
<value>Eco</value>
|
||||
</data>
|
||||
<data name="EnableOptimusText" xml:space="preserve">
|
||||
<value>Menonaktikan dGPU dengan masuk ke mode Eco saat Mode Tampilan di Panel Kontrol NVIDIA tidak diatur ke Optimus mungkin dapat menyebabkan masalah dengan kontrol kecerahan hingga mulai ulang berikutnya.
|
||||
|
||||
Apakah Anda masih ingin melanjutkan?</value>
|
||||
</data>
|
||||
<data name="EnableOptimusTitle" xml:space="preserve">
|
||||
<value>Mode Tampilan NVIDIA tidak diatur ke Optimus</value>
|
||||
</data>
|
||||
<data name="EnergySettings" xml:space="preserve">
|
||||
<value>Pengaturan Energi</value>
|
||||
</data>
|
||||
<data name="Extra" xml:space="preserve">
|
||||
<value>Ekstra</value>
|
||||
</data>
|
||||
<data name="ExtraSettings" xml:space="preserve">
|
||||
<value>Pengaturan Ekstra</value>
|
||||
</data>
|
||||
<data name="FactoryDefaults" xml:space="preserve">
|
||||
<value>Setelan Pabrik</value>
|
||||
</data>
|
||||
<data name="FanCurves" xml:space="preserve">
|
||||
<value>Kurva Kipas</value>
|
||||
</data>
|
||||
<data name="FanProfileCPU" xml:space="preserve">
|
||||
<value>Profil Kipas CPU</value>
|
||||
</data>
|
||||
<data name="FanProfileGPU" xml:space="preserve">
|
||||
<value>Profil Kipas GPU</value>
|
||||
</data>
|
||||
<data name="FanProfileMid" xml:space="preserve">
|
||||
<value>Profil Kipas Sedang</value>
|
||||
</data>
|
||||
<data name="FanProfiles" xml:space="preserve">
|
||||
<value>Profil Kipas</value>
|
||||
</data>
|
||||
<data name="FansAndPower" xml:space="preserve">
|
||||
<value>Kipas dan Daya</value>
|
||||
</data>
|
||||
<data name="FanSpeed" xml:space="preserve">
|
||||
<value>Kipas</value>
|
||||
</data>
|
||||
<data name="FansPower" xml:space="preserve">
|
||||
<value>Kipas + Daya</value>
|
||||
</data>
|
||||
<data name="FnLock" xml:space="preserve">
|
||||
<value>Proses tombol pintas Fn+F tanpa Fn</value>
|
||||
</data>
|
||||
<data name="GPUBoost" xml:space="preserve">
|
||||
<value>Dynamic Boost</value>
|
||||
</data>
|
||||
<data name="GPUChanging" xml:space="preserve">
|
||||
<value>Mengubah</value>
|
||||
</data>
|
||||
<data name="GPUCoreClockOffset" xml:space="preserve">
|
||||
<value>Core Clock Offset</value>
|
||||
</data>
|
||||
<data name="GPUMemoryClockOffset" xml:space="preserve">
|
||||
<value>Memory Clock Offset</value>
|
||||
</data>
|
||||
<data name="GPUMode" xml:space="preserve">
|
||||
<value>Mode GPU</value>
|
||||
</data>
|
||||
<data name="GPUModeEco" xml:space="preserve">
|
||||
<value>Hanya iGPU</value>
|
||||
</data>
|
||||
<data name="GPUModeStandard" xml:space="preserve">
|
||||
<value>iGPU + dGPU</value>
|
||||
</data>
|
||||
<data name="GPUModeUltimate" xml:space="preserve">
|
||||
<value>dGPU eksklusif</value>
|
||||
</data>
|
||||
<data name="GPUSettings" xml:space="preserve">
|
||||
<value>Pengaturan GPU</value>
|
||||
</data>
|
||||
<data name="GPUTempTarget" xml:space="preserve">
|
||||
<value>Target Suhu</value>
|
||||
</data>
|
||||
<data name="HibernateAfter" xml:space="preserve">
|
||||
<value>Menit hingga Hibernasi dalam mode tidur saat menggunakan baterai (0 - Mati)</value>
|
||||
</data>
|
||||
<data name="High" xml:space="preserve">
|
||||
<value>Tinggi</value>
|
||||
</data>
|
||||
<data name="KeyBindings" xml:space="preserve">
|
||||
<value>Pintasan Keyboard</value>
|
||||
</data>
|
||||
<data name="Keyboard" xml:space="preserve">
|
||||
<value>Keyboard</value>
|
||||
</data>
|
||||
<data name="KillGpuApps" xml:space="preserve">
|
||||
<value>Hentikan semua aplikasi yang menggunakan GPU saat beralih ke mode Eco</value>
|
||||
</data>
|
||||
<data name="LaptopBacklight" xml:space="preserve">
|
||||
<value>Laptop Backlight</value>
|
||||
</data>
|
||||
<data name="LaptopKeyboard" xml:space="preserve">
|
||||
<value>Laptop Keyboard</value>
|
||||
</data>
|
||||
<data name="LaptopScreen" xml:space="preserve">
|
||||
<value>Layar Laptop</value>
|
||||
</data>
|
||||
<data name="Lid" xml:space="preserve">
|
||||
<value>Lid</value>
|
||||
</data>
|
||||
<data name="Lightbar" xml:space="preserve">
|
||||
<value>Lightbar</value>
|
||||
</data>
|
||||
<data name="Lighting" xml:space="preserve">
|
||||
<value>Lighting</value>
|
||||
</data>
|
||||
<data name="Logo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="Low" xml:space="preserve">
|
||||
<value>Rendah</value>
|
||||
</data>
|
||||
<data name="MatrixAudio" xml:space="preserve">
|
||||
<value>Visualisasi Audio</value>
|
||||
</data>
|
||||
<data name="MatrixBanner" xml:space="preserve">
|
||||
<value>Binary Banner</value>
|
||||
</data>
|
||||
<data name="MatrixBright" xml:space="preserve">
|
||||
<value>Terang</value>
|
||||
</data>
|
||||
<data name="MatrixClock" xml:space="preserve">
|
||||
<value>Jam</value>
|
||||
</data>
|
||||
<data name="MatrixDim" xml:space="preserve">
|
||||
<value>Redup</value>
|
||||
</data>
|
||||
<data name="MatrixLogo" xml:space="preserve">
|
||||
<value>Logo Rog</value>
|
||||
</data>
|
||||
<data name="MatrixMedium" xml:space="preserve">
|
||||
<value>Sedang</value>
|
||||
</data>
|
||||
<data name="MatrixOff" xml:space="preserve">
|
||||
<value>Mati</value>
|
||||
</data>
|
||||
<data name="MatrixPicture" xml:space="preserve">
|
||||
<value>Gambar</value>
|
||||
</data>
|
||||
<data name="MaxRefreshTooltip" xml:space="preserve">
|
||||
<value>Maks refresh rate untuk mengurangi latensi</value>
|
||||
</data>
|
||||
<data name="MinRefreshTooltip" xml:space="preserve">
|
||||
<value>60Hz refresh rate untuk menghemat baterai</value>
|
||||
</data>
|
||||
<data name="Minute" xml:space="preserve">
|
||||
<value>Menit</value>
|
||||
</data>
|
||||
<data name="Minutes" xml:space="preserve">
|
||||
<value>Menit</value>
|
||||
</data>
|
||||
<data name="MouseAngleSnapping" xml:space="preserve">
|
||||
<value>Angle Snapping</value>
|
||||
</data>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Mati Otomatis Setelah</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>Respon Tombol</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Jarak Angkat</value>
|
||||
</data>
|
||||
<data name="MouseLowBatteryWarning" xml:space="preserve">
|
||||
<value>Peringatan Baterai Rendah pada</value>
|
||||
</data>
|
||||
<data name="MousePerformance" xml:space="preserve">
|
||||
<value>Performa</value>
|
||||
</data>
|
||||
<data name="MouseSynchronize" xml:space="preserve">
|
||||
<value>Sinkronkan dengan mouse</value>
|
||||
</data>
|
||||
<data name="Multizone" xml:space="preserve">
|
||||
<value>Multizona</value>
|
||||
</data>
|
||||
<data name="MuteMic" xml:space="preserve">
|
||||
<value>Bisukan Mic</value>
|
||||
</data>
|
||||
<data name="Never" xml:space="preserve">
|
||||
<value>Jangan Pernah</value>
|
||||
</data>
|
||||
<data name="NewUpdates" xml:space="preserve">
|
||||
<value>Pembaruan Terbaru</value>
|
||||
</data>
|
||||
<data name="NoNewUpdates" xml:space="preserve">
|
||||
<value>Tidak ada pembaruan</value>
|
||||
</data>
|
||||
<data name="NotConnected" xml:space="preserve">
|
||||
<value>Tidak Tersambung</value>
|
||||
</data>
|
||||
<data name="OpenGHelper" xml:space="preserve">
|
||||
<value>Buka Jendela G-Helper</value>
|
||||
</data>
|
||||
<data name="Optimized" xml:space="preserve">
|
||||
<value>Dioptimalkan</value>
|
||||
</data>
|
||||
<data name="OptimizedGPUTooltip" xml:space="preserve">
|
||||
<value>Beralih ke Mode Eco saat menggunakan baterai dan ke Mode Standar saat mengisi daya.</value>
|
||||
</data>
|
||||
<data name="OptimizedUSBC" xml:space="preserve">
|
||||
<value>Tetap matikan GPU pada pengisi daya USB-C dalam mode Dioptimalkan</value>
|
||||
</data>
|
||||
<data name="Other" xml:space="preserve">
|
||||
<value>Lainnya</value>
|
||||
</data>
|
||||
<data name="Overdrive" xml:space="preserve">
|
||||
<value>Overdrive</value>
|
||||
</data>
|
||||
<data name="PerformanceMode" xml:space="preserve">
|
||||
<value>Mode</value>
|
||||
</data>
|
||||
<data name="Peripherals" xml:space="preserve">
|
||||
<value>Periferal</value>
|
||||
</data>
|
||||
<data name="PictureGif" xml:space="preserve">
|
||||
<value>Gambar / Gif</value>
|
||||
</data>
|
||||
<data name="PlayPause" xml:space="preserve">
|
||||
<value>Putar / Jeda</value>
|
||||
</data>
|
||||
<data name="PollingRate" xml:space="preserve">
|
||||
<value>Polling Rate</value>
|
||||
</data>
|
||||
<data name="PowerLimits" xml:space="preserve">
|
||||
<value>Batas Daya</value>
|
||||
</data>
|
||||
<data name="PPTExperimental" xml:space="preserve">
|
||||
<value>Batas Daya adalah fitur eksperimental. Gunakan dengan hati-hati dan atas risiko Anda sendiri!</value>
|
||||
</data>
|
||||
<data name="PrintScreen" xml:space="preserve">
|
||||
<value>PrintScreen</value>
|
||||
</data>
|
||||
<data name="Profile" xml:space="preserve">
|
||||
<value>Profil</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Keluar</value>
|
||||
</data>
|
||||
<data name="RestartGPU" xml:space="preserve">
|
||||
<value>Ada yang menggunakan dGPU dan mencegah mode Eco. Biarkan G-Helper mencoba memulai ulang dGPU di pengelola perangkat? (Silakan lanjutkan dengan risiko Anda sendiri)</value>
|
||||
</data>
|
||||
<data name="RPM" xml:space="preserve">
|
||||
<value>RPM</value>
|
||||
</data>
|
||||
<data name="RunOnStartup" xml:space="preserve">
|
||||
<value>Jalankan di Startup</value>
|
||||
</data>
|
||||
<data name="ScreenPadDown" xml:space="preserve">
|
||||
<value>Kurangi Kecerahan Screenpad</value>
|
||||
</data>
|
||||
<data name="ScreenPadUp" xml:space="preserve">
|
||||
<value>Tingkatkan Kecerahan Screenpad</value>
|
||||
</data>
|
||||
<data name="Shutdown" xml:space="preserve">
|
||||
<value>Matikan</value>
|
||||
</data>
|
||||
<data name="Silent" xml:space="preserve">
|
||||
<value>Diam</value>
|
||||
</data>
|
||||
<data name="Sleep" xml:space="preserve">
|
||||
<value>Tidur</value>
|
||||
</data>
|
||||
<data name="StandardGPUTooltip" xml:space="preserve">
|
||||
<value>Mengaktifkan dGPU untuk penggunaan standar</value>
|
||||
</data>
|
||||
<data name="StandardMode" xml:space="preserve">
|
||||
<value>Standar</value>
|
||||
</data>
|
||||
<data name="Start" xml:space="preserve">
|
||||
<value>Mulai</value>
|
||||
</data>
|
||||
<data name="StartingServices" xml:space="preserve">
|
||||
<value>Memulai Services</value>
|
||||
</data>
|
||||
<data name="StartupError" xml:space="preserve">
|
||||
<value>Startup Error</value>
|
||||
</data>
|
||||
<data name="Stop" xml:space="preserve">
|
||||
<value>Berhenti</value>
|
||||
</data>
|
||||
<data name="StopGPUApps" xml:space="preserve">
|
||||
<value>Hentikan Aplikasi GPU</value>
|
||||
</data>
|
||||
<data name="StoppingServices" xml:space="preserve">
|
||||
<value>Menghentikan Services</value>
|
||||
</data>
|
||||
<data name="ToggleAura" xml:space="preserve">
|
||||
<value>Hidupkan/Matikan Aura</value>
|
||||
</data>
|
||||
<data name="ToggleClamshellMode" xml:space="preserve">
|
||||
<value>Otomatis Hidupkan/Matikan Mode Clamshell</value>
|
||||
</data>
|
||||
<data name="ToggleFnLock" xml:space="preserve">
|
||||
<value>Hidupkan/Matikan Fn-Lock</value>
|
||||
</data>
|
||||
<data name="ToggleMiniled" xml:space="preserve">
|
||||
<value>Toggle Miniled (jika didukung)</value>
|
||||
</data>
|
||||
<data name="ToggleScreen" xml:space="preserve">
|
||||
<value>Hidupkan/Matikan Layar</value>
|
||||
</data>
|
||||
<data name="Turbo" xml:space="preserve">
|
||||
<value>Turbo</value>
|
||||
</data>
|
||||
<data name="TurnedOff" xml:space="preserve">
|
||||
<value>Dimatikan</value>
|
||||
</data>
|
||||
<data name="TurnOffOnBattery" xml:space="preserve">
|
||||
<value>Matikan saat menggunakan baterai</value>
|
||||
</data>
|
||||
<data name="UltimateGPUTooltip" xml:space="preserve">
|
||||
<value>Merutekan layar laptop ke dGPU, memaksimalkan FPS</value>
|
||||
</data>
|
||||
<data name="UltimateMode" xml:space="preserve">
|
||||
<value>Ultimate</value>
|
||||
</data>
|
||||
<data name="UndervoltingRisky" xml:space="preserve">
|
||||
<value>Undervolting adalah fitur eksperimental dan berisiko. Jika nilai yang diterapkan terlalu rendah untuk perangkat keras Anda, ini dapat menjadi tidak stabil, mati mendadak, atau menyebabkan kerusakan data. Jika Anda ingin mencobanya, mulailah dengan nilai kecil terlebih dahulu, klik Terapkan, dan uji apa yang cocok untuk Anda.</value>
|
||||
</data>
|
||||
<data name="Updates" xml:space="preserve">
|
||||
<value>Pembaruan</value>
|
||||
</data>
|
||||
<data name="VersionLabel" xml:space="preserve">
|
||||
<value>Versi</value>
|
||||
</data>
|
||||
<data name="VolumeDown" xml:space="preserve">
|
||||
<value>Volume Turun</value>
|
||||
</data>
|
||||
<data name="VolumeMute" xml:space="preserve">
|
||||
<value>Volume Bisu</value>
|
||||
</data>
|
||||
<data name="VolumeUp" xml:space="preserve">
|
||||
<value>Volume Naik</value>
|
||||
</data>
|
||||
<data name="WindowTop" xml:space="preserve">
|
||||
<value>Jaga agar jendela aplikasi selalu di atas</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -252,6 +252,9 @@
|
||||
<data name="BatteryHealth" xml:space="preserve">
|
||||
<value>Salute Batteria</value>
|
||||
</data>
|
||||
<data name="BatteryLimitFull" xml:space="preserve">
|
||||
<value>One time charge to 100%</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>Aggiornamenti Driver e BIOS</value>
|
||||
</data>
|
||||
@@ -270,6 +273,9 @@
|
||||
<data name="BrightnessUp" xml:space="preserve">
|
||||
<value>Aumenta Luminosità</value>
|
||||
</data>
|
||||
<data name="Calibrate" xml:space="preserve">
|
||||
<value>Calibrate</value>
|
||||
</data>
|
||||
<data name="Charging" xml:space="preserve">
|
||||
<value>In carica</value>
|
||||
</data>
|
||||
|
||||
@@ -252,6 +252,9 @@
|
||||
<data name="BatteryHealth" xml:space="preserve">
|
||||
<value>배터리 수명</value>
|
||||
</data>
|
||||
<data name="BatteryLimitFull" xml:space="preserve">
|
||||
<value>One time charge to 100%</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>바이오스/드라이버 업데이트</value>
|
||||
</data>
|
||||
@@ -270,6 +273,9 @@
|
||||
<data name="BrightnessUp" xml:space="preserve">
|
||||
<value>밝기 증가</value>
|
||||
</data>
|
||||
<data name="Calibrate" xml:space="preserve">
|
||||
<value>Calibrate</value>
|
||||
</data>
|
||||
<data name="Charging" xml:space="preserve">
|
||||
<value>충전 중</value>
|
||||
</data>
|
||||
|
||||
@@ -252,6 +252,9 @@
|
||||
<data name="BatteryHealth" xml:space="preserve">
|
||||
<value>Sveikata</value>
|
||||
</data>
|
||||
<data name="BatteryLimitFull" xml:space="preserve">
|
||||
<value>Vienkartinė įkrova iki 100%</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>BIOS ir tvarkyklių naujinimai</value>
|
||||
</data>
|
||||
@@ -259,7 +262,7 @@
|
||||
<value>Paleidimas</value>
|
||||
</data>
|
||||
<data name="BootSound" xml:space="preserve">
|
||||
<value>Boot Sound</value>
|
||||
<value>Paleidimo garsas</value>
|
||||
</data>
|
||||
<data name="Brightness" xml:space="preserve">
|
||||
<value>Ryškumas</value>
|
||||
@@ -270,6 +273,9 @@
|
||||
<data name="BrightnessUp" xml:space="preserve">
|
||||
<value>Ryškumo didinimas</value>
|
||||
</data>
|
||||
<data name="Calibrate" xml:space="preserve">
|
||||
<value>Kalibruoti</value>
|
||||
</data>
|
||||
<data name="Charging" xml:space="preserve">
|
||||
<value>Įkrovimas</value>
|
||||
</data>
|
||||
|
||||
@@ -252,6 +252,9 @@
|
||||
<data name="BatteryHealth" xml:space="preserve">
|
||||
<value>Stan baterii</value>
|
||||
</data>
|
||||
<data name="BatteryLimitFull" xml:space="preserve">
|
||||
<value>Jednorazowo naładuj do 100%</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>Aktualizacje BIOS i sterowników</value>
|
||||
</data>
|
||||
@@ -270,6 +273,9 @@
|
||||
<data name="BrightnessUp" xml:space="preserve">
|
||||
<value>Zwiększ jasność</value>
|
||||
</data>
|
||||
<data name="Calibrate" xml:space="preserve">
|
||||
<value>Kalibruj</value>
|
||||
</data>
|
||||
<data name="Charging" xml:space="preserve">
|
||||
<value>Ładowanie</value>
|
||||
</data>
|
||||
|
||||
@@ -252,6 +252,9 @@
|
||||
<data name="BatteryHealth" xml:space="preserve">
|
||||
<value>Battery Health</value>
|
||||
</data>
|
||||
<data name="BatteryLimitFull" xml:space="preserve">
|
||||
<value>One time charge to 100%</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>BIOS and Driver Updates</value>
|
||||
</data>
|
||||
@@ -270,6 +273,9 @@
|
||||
<data name="BrightnessUp" xml:space="preserve">
|
||||
<value>Brightness Up</value>
|
||||
</data>
|
||||
<data name="Calibrate" xml:space="preserve">
|
||||
<value>Calibrate</value>
|
||||
</data>
|
||||
<data name="Charging" xml:space="preserve">
|
||||
<value>Charging</value>
|
||||
</data>
|
||||
|
||||
@@ -252,6 +252,9 @@
|
||||
<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>
|
||||
@@ -270,6 +273,9 @@
|
||||
<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>
|
||||
|
||||
@@ -252,6 +252,9 @@
|
||||
<data name="BatteryHealth" xml:space="preserve">
|
||||
<value>Battery Health</value>
|
||||
</data>
|
||||
<data name="BatteryLimitFull" xml:space="preserve">
|
||||
<value>One time charge to 100%</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>BIOS and Driver Updates</value>
|
||||
</data>
|
||||
|
||||
@@ -252,6 +252,9 @@
|
||||
<data name="BatteryHealth" xml:space="preserve">
|
||||
<value>Sănătatea bateriei</value>
|
||||
</data>
|
||||
<data name="BatteryLimitFull" xml:space="preserve">
|
||||
<value>One time charge to 100%</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>Actualizări BIOS și Driver</value>
|
||||
</data>
|
||||
@@ -270,6 +273,9 @@
|
||||
<data name="BrightnessUp" xml:space="preserve">
|
||||
<value>Mărirea luminozității</value>
|
||||
</data>
|
||||
<data name="Calibrate" xml:space="preserve">
|
||||
<value>Calibrate</value>
|
||||
</data>
|
||||
<data name="Charging" xml:space="preserve">
|
||||
<value>Se încarcă</value>
|
||||
</data>
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
<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>Acceleration</value>
|
||||
<value>Hızlandırma</value>
|
||||
</data>
|
||||
<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>
|
||||
@@ -151,7 +151,7 @@
|
||||
<value>G-Helper zaten çalışıyor. Simge için görev çubuğunu kontrol edin.</value>
|
||||
</data>
|
||||
<data name="Apply" xml:space="preserve">
|
||||
<value>Apply</value>
|
||||
<value>Uygula</value>
|
||||
</data>
|
||||
<data name="ApplyFanCurve" xml:space="preserve">
|
||||
<value>Özel Fan Eğrisini Uygula</value>
|
||||
@@ -163,31 +163,31 @@
|
||||
<value>Windows Güç Modunu otomatik ayarla</value>
|
||||
</data>
|
||||
<data name="AsusServicesRunning" xml:space="preserve">
|
||||
<value>Asus Services Running</value>
|
||||
<value>Çalışan Asus Hizmetleri</value>
|
||||
</data>
|
||||
<data name="AuraBatteryState" xml:space="preserve">
|
||||
<value>Battery State</value>
|
||||
<value>Pil Durumu</value>
|
||||
</data>
|
||||
<data name="AuraBreathe" xml:space="preserve">
|
||||
<value>Nefes</value>
|
||||
</data>
|
||||
<data name="AuraClockwise" xml:space="preserve">
|
||||
<value>Clockwise</value>
|
||||
<value>Saat Yönünde</value>
|
||||
</data>
|
||||
<data name="AuraColorCycle" xml:space="preserve">
|
||||
<value>Renk Döngüsü</value>
|
||||
</data>
|
||||
<data name="AuraComet" xml:space="preserve">
|
||||
<value>Comet</value>
|
||||
<value>Kuyruklu Yıldız</value>
|
||||
</data>
|
||||
<data name="AuraCounterClockwise" xml:space="preserve">
|
||||
<value>Counterclockwise</value>
|
||||
<value>Saat Yönünün Tersine</value>
|
||||
</data>
|
||||
<data name="AuraFast" xml:space="preserve">
|
||||
<value>Hızlı</value>
|
||||
</data>
|
||||
<data name="AuraLightingMode" xml:space="preserve">
|
||||
<value>Lighting Mode</value>
|
||||
<value>Işıklandırma Modu</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>Normal</value>
|
||||
@@ -196,10 +196,10 @@
|
||||
<value>Gökkuşağı</value>
|
||||
</data>
|
||||
<data name="AuraRandomColor" xml:space="preserve">
|
||||
<value>Random</value>
|
||||
<value>Rastgele</value>
|
||||
</data>
|
||||
<data name="AuraReact" xml:space="preserve">
|
||||
<value>React</value>
|
||||
<value>Reaksiyon</value>
|
||||
</data>
|
||||
<data name="AuraSlow" xml:space="preserve">
|
||||
<value>Yavaş</value>
|
||||
@@ -211,22 +211,22 @@
|
||||
<value>Flaş</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>All</value>
|
||||
<value>Tümü</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dock</value>
|
||||
<value>Yuva</value>
|
||||
</data>
|
||||
<data name="AuraZoneLogo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Scrollwheel</value>
|
||||
<value>Kaydırma Tekerleği</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Underglow</value>
|
||||
<value>Alttan Aydınlatma</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>Auto Apply</value>
|
||||
<value>Otomatik Uygula</value>
|
||||
</data>
|
||||
<data name="AutoMode" xml:space="preserve">
|
||||
<value>Otomatik</value>
|
||||
@@ -235,7 +235,7 @@
|
||||
<value>Pil tasarrufu için 60Hz kullanılır ve şarja takıldığında eski haline getirir</value>
|
||||
</data>
|
||||
<data name="Awake" xml:space="preserve">
|
||||
<value>Uyanık</value>
|
||||
<value>Uyanırken</value>
|
||||
</data>
|
||||
<data name="BacklightTimeout" xml:space="preserve">
|
||||
<value>Pildeyken klavye ışığının kapanma süresi</value>
|
||||
@@ -244,46 +244,52 @@
|
||||
<value>Dengeli</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>Charge</value>
|
||||
<value>Şarj</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Pil Şarj Limiti</value>
|
||||
</data>
|
||||
<data name="BatteryHealth" xml:space="preserve">
|
||||
<value>Battery Health</value>
|
||||
<value>Pil Sağlığı</value>
|
||||
</data>
|
||||
<data name="BatteryLimitFull" xml:space="preserve">
|
||||
<value>Bir seferlik %100 şarj etme</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>BIOS and Driver Updates</value>
|
||||
<value>BIOS ve Sürücü Güncellemeleri</value>
|
||||
</data>
|
||||
<data name="Boot" xml:space="preserve">
|
||||
<value>Önyükleme</value>
|
||||
<value>Boot</value>
|
||||
</data>
|
||||
<data name="BootSound" xml:space="preserve">
|
||||
<value>Boot Sound</value>
|
||||
<value>Boot Sesi</value>
|
||||
</data>
|
||||
<data name="Brightness" xml:space="preserve">
|
||||
<value>Parlaklığı</value>
|
||||
</data>
|
||||
<data name="BrightnessDown" xml:space="preserve">
|
||||
<value>Brightness Down</value>
|
||||
<value>Parlaklığı Azalt</value>
|
||||
</data>
|
||||
<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 name="Charging" xml:space="preserve">
|
||||
<value>Charging</value>
|
||||
<value>Şarj oluyor</value>
|
||||
</data>
|
||||
<data name="Color" xml:space="preserve">
|
||||
<value>Renk</value>
|
||||
</data>
|
||||
<data name="CPUBoost" xml:space="preserve">
|
||||
<value>CPU Boost</value>
|
||||
<value>CPU Desteği</value>
|
||||
</data>
|
||||
<data name="Custom" xml:space="preserve">
|
||||
<value>Özel</value>
|
||||
</data>
|
||||
<data name="Deceleration" xml:space="preserve">
|
||||
<value>Deceleration</value>
|
||||
<value>Yavaşlama</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>Varsayılan</value>
|
||||
@@ -292,13 +298,13 @@
|
||||
<value>Ekran overdrive özelliğini devre dışı bırak</value>
|
||||
</data>
|
||||
<data name="Discharging" xml:space="preserve">
|
||||
<value>Pil boşalıyor</value>
|
||||
<value>Şarj azalıyor</value>
|
||||
</data>
|
||||
<data name="DownloadUpdate" xml:space="preserve">
|
||||
<value>Download</value>
|
||||
<value>İndir</value>
|
||||
</data>
|
||||
<data name="DriverAndSoftware" xml:space="preserve">
|
||||
<value>Drivers and Software</value>
|
||||
<value>Sürücüler ve Yazılımlar</value>
|
||||
</data>
|
||||
<data name="EcoGPUTooltip" xml:space="preserve">
|
||||
<value>Pil tasarrufu için harici GPU'yu devre dışı bırakır</value>
|
||||
@@ -307,15 +313,15 @@
|
||||
<value>Eko</value>
|
||||
</data>
|
||||
<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 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 name="EnergySettings" xml:space="preserve">
|
||||
<value>Energy Settings</value>
|
||||
<value>Enerji Ayarları</value>
|
||||
</data>
|
||||
<data name="Extra" xml:space="preserve">
|
||||
<value>Ekstra</value>
|
||||
@@ -360,10 +366,10 @@ Do you still want to continue?</value>
|
||||
<value>Değiştiriliyor</value>
|
||||
</data>
|
||||
<data name="GPUCoreClockOffset" xml:space="preserve">
|
||||
<value>Core Clock Offset</value>
|
||||
<value>Çekirdek Frekans Dengesi</value>
|
||||
</data>
|
||||
<data name="GPUMemoryClockOffset" xml:space="preserve">
|
||||
<value>Memory Clock Offset</value>
|
||||
<value>Hafıza Frekans Dengesi</value>
|
||||
</data>
|
||||
<data name="GPUMode" xml:space="preserve">
|
||||
<value>GPU Modu</value>
|
||||
@@ -378,28 +384,28 @@ Do you still want to continue?</value>
|
||||
<value>sadece harici GPU</value>
|
||||
</data>
|
||||
<data name="GPUSettings" xml:space="preserve">
|
||||
<value>GPU Settings</value>
|
||||
<value>GPU Ayarları</value>
|
||||
</data>
|
||||
<data name="GPUTempTarget" xml:space="preserve">
|
||||
<value>Temperature Target</value>
|
||||
<value>Sıcaklık Hedefi</value>
|
||||
</data>
|
||||
<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 name="High" xml:space="preserve">
|
||||
<value>High</value>
|
||||
<value>Yüksek</value>
|
||||
</data>
|
||||
<data name="KeyBindings" xml:space="preserve">
|
||||
<value>Tuş Bağlantıları</value>
|
||||
<value>Tuş Atamaları</value>
|
||||
</data>
|
||||
<data name="Keyboard" xml:space="preserve">
|
||||
<value>Klavye</value>
|
||||
</data>
|
||||
<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 name="LaptopBacklight" xml:space="preserve">
|
||||
<value>Aydınlatması</value>
|
||||
<value>Laptop Aydınlatması</value>
|
||||
</data>
|
||||
<data name="LaptopKeyboard" xml:space="preserve">
|
||||
<value>Laptop Klavyesi</value>
|
||||
@@ -408,25 +414,25 @@ Do you still want to continue?</value>
|
||||
<value>Laptop Ekranı</value>
|
||||
</data>
|
||||
<data name="Lid" xml:space="preserve">
|
||||
<value>Lid</value>
|
||||
<value>Kapak</value>
|
||||
</data>
|
||||
<data name="Lightbar" xml:space="preserve">
|
||||
<value>Lightbar</value>
|
||||
<value>Işık Çubuğu</value>
|
||||
</data>
|
||||
<data name="Lighting" xml:space="preserve">
|
||||
<value>Lighting</value>
|
||||
<value>Işıklandırma</value>
|
||||
</data>
|
||||
<data name="Logo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="Low" xml:space="preserve">
|
||||
<value>Low</value>
|
||||
<value>Düşük</value>
|
||||
</data>
|
||||
<data name="MatrixAudio" xml:space="preserve">
|
||||
<value>Audio Visualizer</value>
|
||||
<value>Ses Görselleştirici</value>
|
||||
</data>
|
||||
<data name="MatrixBanner" xml:space="preserve">
|
||||
<value>Matrix Banner</value>
|
||||
<value>Binary Banner</value>
|
||||
</data>
|
||||
<data name="MatrixBright" xml:space="preserve">
|
||||
<value>Parlak</value>
|
||||
@@ -456,49 +462,49 @@ Do you still want to continue?</value>
|
||||
<value>Pil tasarrufu için 60Hz yenileme hızı</value>
|
||||
</data>
|
||||
<data name="Minute" xml:space="preserve">
|
||||
<value>Minute</value>
|
||||
<value>Dakika</value>
|
||||
</data>
|
||||
<data name="Minutes" xml:space="preserve">
|
||||
<value>Minutes</value>
|
||||
<value>Dakika</value>
|
||||
</data>
|
||||
<data name="MouseAngleSnapping" xml:space="preserve">
|
||||
<value>Angle Snapping</value>
|
||||
</data>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Auto Power Off After</value>
|
||||
<value>Sonrasında Otomatik Kapat</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>Button Response</value>
|
||||
<value>Tuş Tepkisi</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Lift Off Distance</value>
|
||||
<value>Havalanma Mesafesi</value>
|
||||
</data>
|
||||
<data name="MouseLowBatteryWarning" xml:space="preserve">
|
||||
<value>Low Battery Warning at</value>
|
||||
<value>Düşük Pil Uyarısı seviyesi</value>
|
||||
</data>
|
||||
<data name="MousePerformance" xml:space="preserve">
|
||||
<value>Performance</value>
|
||||
<value>Performans</value>
|
||||
</data>
|
||||
<data name="MouseSynchronize" xml:space="preserve">
|
||||
<value>Synchronize with mouse</value>
|
||||
<value>Fare ile senkronize edin</value>
|
||||
</data>
|
||||
<data name="Multizone" xml:space="preserve">
|
||||
<value>Çoklu Bölge</value>
|
||||
</data>
|
||||
<data name="MuteMic" xml:space="preserve">
|
||||
<value>Mute Mic</value>
|
||||
<value>Mikrofonu Sustur</value>
|
||||
</data>
|
||||
<data name="Never" xml:space="preserve">
|
||||
<value>Never</value>
|
||||
<value>Asla</value>
|
||||
</data>
|
||||
<data name="NewUpdates" xml:space="preserve">
|
||||
<value>New updates</value>
|
||||
<value>Yeni güncellemeler</value>
|
||||
</data>
|
||||
<data name="NoNewUpdates" xml:space="preserve">
|
||||
<value>No new updates</value>
|
||||
<value>Güncelleme yok</value>
|
||||
</data>
|
||||
<data name="NotConnected" xml:space="preserve">
|
||||
<value>Not Connected</value>
|
||||
<value>Bağlantı Yok</value>
|
||||
</data>
|
||||
<data name="OpenGHelper" xml:space="preserve">
|
||||
<value>G-Helper penceresini aç</value>
|
||||
@@ -522,7 +528,7 @@ Do you still want to continue?</value>
|
||||
<value>Performans Modu</value>
|
||||
</data>
|
||||
<data name="Peripherals" xml:space="preserve">
|
||||
<value>Peripherals</value>
|
||||
<value>Çevre Birimleri</value>
|
||||
</data>
|
||||
<data name="PictureGif" xml:space="preserve">
|
||||
<value>Resim / Gif</value>
|
||||
@@ -531,7 +537,7 @@ Do you still want to continue?</value>
|
||||
<value>Oynat / Duraklat</value>
|
||||
</data>
|
||||
<data name="PollingRate" xml:space="preserve">
|
||||
<value>Polling Rate</value>
|
||||
<value>Yoklama Sıklığı</value>
|
||||
</data>
|
||||
<data name="PowerLimits" xml:space="preserve">
|
||||
<value>Güç Sınırları</value>
|
||||
@@ -543,13 +549,13 @@ Do you still want to continue?</value>
|
||||
<value>Ekran Görüntüsü Al</value>
|
||||
</data>
|
||||
<data name="Profile" xml:space="preserve">
|
||||
<value>Profile</value>
|
||||
<value>Profil</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Çıkış Yap</value>
|
||||
</data>
|
||||
<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 name="RPM" xml:space="preserve">
|
||||
<value>RPM</value>
|
||||
@@ -558,13 +564,13 @@ Do you still want to continue?</value>
|
||||
<value>Başlangıçta Çalıştır</value>
|
||||
</data>
|
||||
<data name="ScreenPadDown" xml:space="preserve">
|
||||
<value>Screenpad Brightness Down</value>
|
||||
<value>Screenpad Parlaklığını Azalt</value>
|
||||
</data>
|
||||
<data name="ScreenPadUp" xml:space="preserve">
|
||||
<value>Screenpad Brightness Up</value>
|
||||
<value>Screenpad Parlaklığını Artır</value>
|
||||
</data>
|
||||
<data name="Shutdown" xml:space="preserve">
|
||||
<value>Kapalı</value>
|
||||
<value>Kapatma</value>
|
||||
</data>
|
||||
<data name="Silent" xml:space="preserve">
|
||||
<value>Sessiz</value>
|
||||
@@ -579,37 +585,37 @@ Do you still want to continue?</value>
|
||||
<value>Standart</value>
|
||||
</data>
|
||||
<data name="Start" xml:space="preserve">
|
||||
<value>Start</value>
|
||||
<value>Başlat</value>
|
||||
</data>
|
||||
<data name="StartingServices" xml:space="preserve">
|
||||
<value>Starting Services</value>
|
||||
<value>Hizmetler Başlatılıyor</value>
|
||||
</data>
|
||||
<data name="StartupError" xml:space="preserve">
|
||||
<value>Başlatma Hatası</value>
|
||||
</data>
|
||||
<data name="Stop" xml:space="preserve">
|
||||
<value>Stop</value>
|
||||
<value>Durdur</value>
|
||||
</data>
|
||||
<data name="StopGPUApps" xml:space="preserve">
|
||||
<value>Stop GPU Applications</value>
|
||||
<value>GPU Uygulamalarını Durdur</value>
|
||||
</data>
|
||||
<data name="StoppingServices" xml:space="preserve">
|
||||
<value>Stopping Services</value>
|
||||
<value>Hizmetler Durduruluyor</value>
|
||||
</data>
|
||||
<data name="ToggleAura" xml:space="preserve">
|
||||
<value>Aura'yı Değiştir</value>
|
||||
<value>Aura'yı Kullan</value>
|
||||
</data>
|
||||
<data name="ToggleClamshellMode" xml:space="preserve">
|
||||
<value>Auto Toggle Clamshell Mode</value>
|
||||
<value>Otomatik Clamshell Modunu Aç</value>
|
||||
</data>
|
||||
<data name="ToggleFnLock" xml:space="preserve">
|
||||
<value>Toggle Fn-Lock</value>
|
||||
<value>Fn-Lock'u Aç</value>
|
||||
</data>
|
||||
<data name="ToggleMiniled" xml:space="preserve">
|
||||
<value>Toggle Miniled (if supported)</value>
|
||||
<value>Miniled'i Aç (destekliyorsa)</value>
|
||||
</data>
|
||||
<data name="ToggleScreen" xml:space="preserve">
|
||||
<value>Toggle Screen</value>
|
||||
<value>Ekranı Değiştir</value>
|
||||
</data>
|
||||
<data name="Turbo" xml:space="preserve">
|
||||
<value>Turbo</value>
|
||||
@@ -627,22 +633,22 @@ Do you still want to continue?</value>
|
||||
<value>Ultimate</value>
|
||||
</data>
|
||||
<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 name="Updates" xml:space="preserve">
|
||||
<value>Updates</value>
|
||||
<value>Güncellemeler</value>
|
||||
</data>
|
||||
<data name="VersionLabel" xml:space="preserve">
|
||||
<value>Sürüm</value>
|
||||
</data>
|
||||
<data name="VolumeDown" xml:space="preserve">
|
||||
<value>Volume Down</value>
|
||||
<value>Sesi Azalt</value>
|
||||
</data>
|
||||
<data name="VolumeMute" xml:space="preserve">
|
||||
<value>Ses Kısma</value>
|
||||
<value>Sesi Kapat</value>
|
||||
</data>
|
||||
<data name="VolumeUp" xml:space="preserve">
|
||||
<value>Volume Up</value>
|
||||
<value>Sesi Artır</value>
|
||||
</data>
|
||||
<data name="WindowTop" xml:space="preserve">
|
||||
<value>Uygulama penceresini her zaman en üstte tut</value>
|
||||
|
||||
@@ -252,6 +252,9 @@
|
||||
<data name="BatteryHealth" xml:space="preserve">
|
||||
<value>Стан батареї</value>
|
||||
</data>
|
||||
<data name="BatteryLimitFull" xml:space="preserve">
|
||||
<value>One time charge to 100%</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>Оновлення BIOS та драйверів</value>
|
||||
</data>
|
||||
@@ -270,6 +273,9 @@
|
||||
<data name="BrightnessUp" xml:space="preserve">
|
||||
<value>Підвищити яскравість</value>
|
||||
</data>
|
||||
<data name="Calibrate" xml:space="preserve">
|
||||
<value>Calibrate</value>
|
||||
</data>
|
||||
<data name="Charging" xml:space="preserve">
|
||||
<value>Зарядка</value>
|
||||
</data>
|
||||
|
||||
@@ -252,6 +252,9 @@
|
||||
<data name="BatteryHealth" xml:space="preserve">
|
||||
<value>Sức khoẻ pin</value>
|
||||
</data>
|
||||
<data name="BatteryLimitFull" xml:space="preserve">
|
||||
<value>One time charge to 100%</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>Cập nhật BIOS và driver</value>
|
||||
</data>
|
||||
@@ -270,6 +273,9 @@
|
||||
<data name="BrightnessUp" xml:space="preserve">
|
||||
<value>Tăng độ sáng</value>
|
||||
</data>
|
||||
<data name="Calibrate" xml:space="preserve">
|
||||
<value>Calibrate</value>
|
||||
</data>
|
||||
<data name="Charging" xml:space="preserve">
|
||||
<value>Đang sạc</value>
|
||||
</data>
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
<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>Acceleration</value>
|
||||
<value>加速</value>
|
||||
</data>
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>无法连接到ASUS ACPI。 没有它应用程序将无法运行。 请尝试安装Asus System Control Interface驱动。</value>
|
||||
@@ -223,7 +223,7 @@
|
||||
<value>滚轮</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Underglow</value>
|
||||
<value>底灯</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>自动应用</value>
|
||||
@@ -252,6 +252,9 @@
|
||||
<data name="BatteryHealth" xml:space="preserve">
|
||||
<value>电池健康</value>
|
||||
</data>
|
||||
<data name="BatteryLimitFull" xml:space="preserve">
|
||||
<value>一次性充电至 100%</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>BIOS 和驱动程序更新</value>
|
||||
</data>
|
||||
@@ -270,6 +273,9 @@
|
||||
<data name="BrightnessUp" xml:space="preserve">
|
||||
<value>提高亮度</value>
|
||||
</data>
|
||||
<data name="Calibrate" xml:space="preserve">
|
||||
<value>校准</value>
|
||||
</data>
|
||||
<data name="Charging" xml:space="preserve">
|
||||
<value>充电中</value>
|
||||
</data>
|
||||
@@ -283,7 +289,7 @@
|
||||
<value>自定义设置</value>
|
||||
</data>
|
||||
<data name="Deceleration" xml:space="preserve">
|
||||
<value>Deceleration</value>
|
||||
<value>减速</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>默认</value>
|
||||
@@ -307,12 +313,12 @@
|
||||
<value>集显模式</value>
|
||||
</data>
|
||||
<data name="EnableOptimusText" xml:space="preserve">
|
||||
<value>若未在nVIDIA控制面板的混合显示模式中设置为Optimus,关闭独立显卡可能会导致亮度控制在系统重启前都不可用。
|
||||
<value>NVIDIA 控制面板中的显示模式未设置为 Optimus 时,通过集显模式禁用独立显卡可能会使亮度控制出现问题,直到下次重启后才能恢复。
|
||||
|
||||
确定还要继续吗?</value>
|
||||
</data>
|
||||
<data name="EnableOptimusTitle" xml:space="preserve">
|
||||
<value>NVIDIA 显示模式未设置为自动切换</value>
|
||||
<value>NVIDIA 显示模式未设置为 Optimus</value>
|
||||
</data>
|
||||
<data name="EnergySettings" xml:space="preserve">
|
||||
<value>电源设置</value>
|
||||
@@ -336,7 +342,7 @@
|
||||
<value>GPU 风扇配置文件</value>
|
||||
</data>
|
||||
<data name="FanProfileMid" xml:space="preserve">
|
||||
<value>中等风扇配置</value>
|
||||
<value>Mid 风扇配置文件</value>
|
||||
</data>
|
||||
<data name="FanProfiles" xml:space="preserve">
|
||||
<value>风扇配置</value>
|
||||
@@ -459,7 +465,7 @@
|
||||
<value>分钟</value>
|
||||
</data>
|
||||
<data name="Minutes" xml:space="preserve">
|
||||
<value>分组</value>
|
||||
<value>分钟</value>
|
||||
</data>
|
||||
<data name="MouseAngleSnapping" xml:space="preserve">
|
||||
<value>角度校正</value>
|
||||
@@ -471,7 +477,7 @@
|
||||
<value>按键响应</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>静默高度</value>
|
||||
<value>响应高度</value>
|
||||
</data>
|
||||
<data name="MouseLowBatteryWarning" xml:space="preserve">
|
||||
<value>低于该电量时警告</value>
|
||||
|
||||
@@ -252,6 +252,9 @@
|
||||
<data name="BatteryHealth" xml:space="preserve">
|
||||
<value>電池健康度</value>
|
||||
</data>
|
||||
<data name="BatteryLimitFull" xml:space="preserve">
|
||||
<value>僅本次將電力充滿</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>BIOS與驅動程式更新 Updates</value>
|
||||
</data>
|
||||
@@ -270,6 +273,9 @@
|
||||
<data name="BrightnessUp" xml:space="preserve">
|
||||
<value>螢幕亮度提高</value>
|
||||
</data>
|
||||
<data name="Calibrate" xml:space="preserve">
|
||||
<value>校準</value>
|
||||
</data>
|
||||
<data name="Charging" xml:space="preserve">
|
||||
<value>充電中</value>
|
||||
</data>
|
||||
|
||||
35
app/Settings.Designer.cs
generated
35
app/Settings.Designer.cs
generated
@@ -40,6 +40,7 @@ namespace GHelper
|
||||
labelMatrix = new Label();
|
||||
checkMatrix = new CheckBox();
|
||||
panelBattery = new Panel();
|
||||
buttonBatteryFull = new RButton();
|
||||
sliderBattery = new Slider();
|
||||
panelBatteryTitle = new Panel();
|
||||
labelBattery = new Label();
|
||||
@@ -278,6 +279,7 @@ namespace GHelper
|
||||
//
|
||||
panelBattery.AutoSize = true;
|
||||
panelBattery.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelBattery.Controls.Add(buttonBatteryFull);
|
||||
panelBattery.Controls.Add(sliderBattery);
|
||||
panelBattery.Controls.Add(panelBatteryTitle);
|
||||
panelBattery.Dock = DockStyle.Top;
|
||||
@@ -285,19 +287,39 @@ namespace GHelper
|
||||
panelBattery.Margin = new Padding(0);
|
||||
panelBattery.Name = "panelBattery";
|
||||
panelBattery.Padding = new Padding(20, 20, 20, 10);
|
||||
panelBattery.Size = new Size(827, 114);
|
||||
panelBattery.Size = new Size(827, 119);
|
||||
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.AccessibleName = "Battery Charge Limit";
|
||||
sliderBattery.Dock = DockStyle.Top;
|
||||
sliderBattery.Location = new Point(20, 64);
|
||||
sliderBattery.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
sliderBattery.Location = new Point(20, 65);
|
||||
sliderBattery.Margin = new Padding(4);
|
||||
sliderBattery.Max = 100;
|
||||
sliderBattery.Min = 40;
|
||||
sliderBattery.Name = "sliderBattery";
|
||||
sliderBattery.Size = new Size(787, 40);
|
||||
sliderBattery.Size = new Size(706, 40);
|
||||
sliderBattery.Step = 5;
|
||||
sliderBattery.TabIndex = 20;
|
||||
sliderBattery.Text = "sliderBattery";
|
||||
@@ -354,7 +376,7 @@ namespace GHelper
|
||||
panelFooter.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelFooter.Controls.Add(tableButtons);
|
||||
panelFooter.Dock = DockStyle.Top;
|
||||
panelFooter.Location = new Point(11, 1435);
|
||||
panelFooter.Location = new Point(11, 1440);
|
||||
panelFooter.Margin = new Padding(0);
|
||||
panelFooter.Name = "panelFooter";
|
||||
panelFooter.Padding = new Padding(20);
|
||||
@@ -1232,7 +1254,7 @@ namespace GHelper
|
||||
panelVersion.Controls.Add(labelCharge);
|
||||
panelVersion.Controls.Add(checkStartup);
|
||||
panelVersion.Dock = DockStyle.Top;
|
||||
panelVersion.Location = new Point(11, 1379);
|
||||
panelVersion.Location = new Point(11, 1384);
|
||||
panelVersion.Margin = new Padding(4);
|
||||
panelVersion.Name = "panelVersion";
|
||||
panelVersion.Size = new Size(827, 56);
|
||||
@@ -1550,5 +1572,6 @@ namespace GHelper
|
||||
private RButton buttonUpdates;
|
||||
private Label labelCharge;
|
||||
private RButton buttonFnLock;
|
||||
private RButton buttonBatteryFull;
|
||||
}
|
||||
}
|
||||
202
app/Settings.cs
202
app/Settings.cs
@@ -2,6 +2,7 @@
|
||||
using GHelper.AutoUpdate;
|
||||
using GHelper.Battery;
|
||||
using GHelper.Display;
|
||||
using GHelper.Fan;
|
||||
using GHelper.Gpu;
|
||||
using GHelper.Helpers;
|
||||
using GHelper.Input;
|
||||
@@ -31,16 +32,19 @@ namespace GHelper
|
||||
|
||||
public static System.Timers.Timer sensorTimer = default!;
|
||||
|
||||
public Matrix? matrix;
|
||||
public Fans? fans;
|
||||
public Extra? keyb;
|
||||
public Updates? updates;
|
||||
public Matrix? matrixForm;
|
||||
public Fans? fansForm;
|
||||
public Extra? extraForm;
|
||||
public Updates? updatesForm;
|
||||
|
||||
static long lastRefresh;
|
||||
static long lastBatteryRefresh;
|
||||
static long lastLostFocus;
|
||||
|
||||
bool isGpuSection = true;
|
||||
|
||||
bool batteryMouseOver = false;
|
||||
bool batteryFullMouseOver = false;
|
||||
|
||||
public SettingsForm()
|
||||
{
|
||||
@@ -85,6 +89,7 @@ namespace GHelper
|
||||
buttonUpdates.Text = Properties.Strings.Updates;
|
||||
|
||||
FormClosing += SettingsForm_FormClosing;
|
||||
Deactivate += SettingsForm_LostFocus;
|
||||
|
||||
buttonSilent.BorderColor = colorEco;
|
||||
buttonBalanced.BorderColor = colorStandard;
|
||||
@@ -192,6 +197,10 @@ namespace GHelper
|
||||
buttonPeripheral2.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();
|
||||
TopMost = AppConfig.Is("topmost");
|
||||
|
||||
@@ -205,6 +214,27 @@ namespace GHelper
|
||||
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)
|
||||
{
|
||||
@@ -259,21 +289,26 @@ namespace GHelper
|
||||
|
||||
private void ButtonUpdates_Click(object? sender, EventArgs e)
|
||||
{
|
||||
if (updates == null || updates.Text == "")
|
||||
if (updatesForm == null || updatesForm.Text == "")
|
||||
{
|
||||
updates = new Updates();
|
||||
updates.Show();
|
||||
updatesForm = new Updates();
|
||||
AddOwnedForm(updatesForm);
|
||||
}
|
||||
|
||||
if (updatesForm.Visible)
|
||||
{
|
||||
updatesForm.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
updates.Close();
|
||||
updatesForm.Show();
|
||||
}
|
||||
}
|
||||
|
||||
public void VisualiseMatrix(string image)
|
||||
{
|
||||
if (matrix == null || matrix.Text == "") return;
|
||||
matrix.VisualiseMatrix(image);
|
||||
if (matrixForm == null || matrixForm.Text == "") return;
|
||||
matrixForm.VisualiseMatrix(image);
|
||||
}
|
||||
|
||||
protected override void WndProc(ref Message m)
|
||||
@@ -521,19 +556,20 @@ namespace GHelper
|
||||
private void ButtonMatrix_Click(object? sender, EventArgs e)
|
||||
{
|
||||
|
||||
if (matrix == null || matrix.Text == "")
|
||||
if (matrixForm == null || matrixForm.Text == "")
|
||||
{
|
||||
matrix = new Matrix();
|
||||
matrixForm = new Matrix();
|
||||
AddOwnedForm(matrixForm);
|
||||
}
|
||||
|
||||
if (matrix.Visible)
|
||||
if (matrixForm.Visible)
|
||||
{
|
||||
matrix.Close();
|
||||
matrixForm.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
matrix.FormPosition();
|
||||
matrix.Show();
|
||||
matrixForm.FormPosition();
|
||||
matrixForm.Show();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -563,7 +599,7 @@ namespace GHelper
|
||||
|
||||
private void LabelCPUFan_Click(object? sender, EventArgs e)
|
||||
{
|
||||
HardwareControl.fanRpm = !HardwareControl.fanRpm;
|
||||
FanSensorControl.fanRpm = !FanSensorControl.fanRpm;
|
||||
RefreshSensors(true);
|
||||
}
|
||||
|
||||
@@ -588,14 +624,19 @@ namespace GHelper
|
||||
|
||||
private void ButtonKeyboard_Click(object? sender, EventArgs e)
|
||||
{
|
||||
if (keyb == null || keyb.Text == "")
|
||||
if (extraForm == null || extraForm.Text == "")
|
||||
{
|
||||
keyb = new Extra();
|
||||
keyb.Show();
|
||||
extraForm = new Extra();
|
||||
AddOwnedForm(extraForm);
|
||||
}
|
||||
|
||||
if (extraForm.Visible)
|
||||
{
|
||||
extraForm.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
keyb.Close();
|
||||
extraForm.Show();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -603,7 +644,7 @@ namespace GHelper
|
||||
{
|
||||
Invoke(delegate
|
||||
{
|
||||
if (fans != null && fans.Text != "") fans.InitAll();
|
||||
if (fansForm != null && fansForm.Text != "") fansForm.InitAll();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -611,26 +652,27 @@ namespace GHelper
|
||||
{
|
||||
Invoke(delegate
|
||||
{
|
||||
if (fans != null && fans.Text != "") fans.InitGPU();
|
||||
if (fansForm != null && fansForm.Text != "") fansForm.InitGPU();
|
||||
});
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
fans.FormPosition();
|
||||
fans.Show();
|
||||
fans.ToggleNavigation(index);
|
||||
fansForm.FormPosition();
|
||||
fansForm.Show();
|
||||
fansForm.ToggleNavigation(index);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -757,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);
|
||||
@@ -798,7 +840,8 @@ namespace GHelper
|
||||
|
||||
if (miniled >= 0)
|
||||
{
|
||||
buttonMiniled.Activated = (miniled == 1);
|
||||
buttonMiniled.Activated = (miniled == 1) || hdr;
|
||||
buttonMiniled.Enabled = !hdr;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -815,14 +858,39 @@ namespace GHelper
|
||||
Application.Exit();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Closes all forms except the settings. Hides the settings
|
||||
/// </summary>
|
||||
public void HideAll()
|
||||
{
|
||||
this.Hide();
|
||||
if (fans != null && fans.Text != "") fans.Close();
|
||||
if (keyb != null && keyb.Text != "") keyb.Close();
|
||||
if (updates != null && updates.Text != "") updates.Close();
|
||||
if (fansForm != null && fansForm.Text != "") fansForm.Close();
|
||||
if (extraForm != null && extraForm.Text != "") extraForm.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(bool lostFocusCheck = false)
|
||||
{
|
||||
return (fansForm != null && fansForm.ContainsFocus) ||
|
||||
(extraForm != null && extraForm.ContainsFocus) ||
|
||||
(updatesForm != null && updatesForm.ContainsFocus) ||
|
||||
(matrixForm != null && matrixForm.ContainsFocus) ||
|
||||
this.ContainsFocus ||
|
||||
(lostFocusCheck && Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastLostFocus) < 300);
|
||||
}
|
||||
|
||||
private void SettingsForm_FormClosing(object? sender, FormClosingEventArgs e)
|
||||
{
|
||||
@@ -904,7 +972,7 @@ namespace GHelper
|
||||
labelMidFan.Text = "Mid " + HardwareControl.midFan;
|
||||
|
||||
labelBattery.Text = battery;
|
||||
if (!batteryMouseOver) labelCharge.Text = charge;
|
||||
if (!batteryMouseOver && !batteryFullMouseOver) labelCharge.Text = charge;
|
||||
|
||||
//panelPerformance.AccessibleName = labelPerf.Text + " " + trayTip;
|
||||
});
|
||||
@@ -916,8 +984,8 @@ namespace GHelper
|
||||
|
||||
public void LabelFansResult(string text)
|
||||
{
|
||||
if (fans != null && fans.Text != "")
|
||||
fans.LabelFansResult(text);
|
||||
if (fansForm != null && fansForm.Text != "")
|
||||
fansForm.LabelFansResult(text);
|
||||
}
|
||||
|
||||
public void ShowMode(int mode)
|
||||
@@ -1024,13 +1092,27 @@ namespace GHelper
|
||||
|
||||
}
|
||||
|
||||
public void HideUltimateMode()
|
||||
public void VisualiseGPUButtons(bool eco = true, bool ultimate = true)
|
||||
{
|
||||
tableGPU.Controls.Remove(buttonUltimate);
|
||||
tablePerf.ColumnCount = 0;
|
||||
tableGPU.ColumnCount = 0;
|
||||
tableScreen.ColumnCount = 0;
|
||||
menuUltimate.Visible = false;
|
||||
if (!eco)
|
||||
{
|
||||
menuEco.Visible = buttonEco.Visible = false;
|
||||
menuOptimized.Visible = buttonOptimized.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(bool gpuExists)
|
||||
@@ -1041,15 +1123,17 @@ namespace GHelper
|
||||
buttonStandard.Visible = false;
|
||||
buttonUltimate.Visible = false;
|
||||
buttonOptimized.Visible = false;
|
||||
|
||||
buttonStopGPU.Visible = true;
|
||||
|
||||
tableGPU.ColumnCount = 0;
|
||||
|
||||
SetContextMenu();
|
||||
|
||||
panelGPU.Visible = gpuExists;
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void LockGPUModes(string text = null)
|
||||
{
|
||||
Invoke(delegate
|
||||
@@ -1147,6 +1231,22 @@ namespace GHelper
|
||||
{
|
||||
labelBatteryTitle.Text = Properties.Strings.BatteryChargeLimit + ": " + limit.ToString() + "%";
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1170,8 +1270,16 @@ namespace GHelper
|
||||
|
||||
if (m.IsDeviceReady)
|
||||
{
|
||||
b.Text = m.GetDisplayName() + "\n" + m.Battery + "%"
|
||||
+ (m.Charging ? "(" + Properties.Strings.Charging + ")" : "");
|
||||
if (m.HasBattery())
|
||||
{
|
||||
b.Text = m.GetDisplayName() + "\n" + m.Battery + "%"
|
||||
+ (m.Charging ? "(" + Properties.Strings.Charging + ")" : "");
|
||||
}
|
||||
else
|
||||
{
|
||||
b.Text = m.GetDisplayName();
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -13,8 +13,8 @@ namespace GHelper
|
||||
const int DRIVER_NEWER = 1;
|
||||
|
||||
//static int rowCount = 0;
|
||||
static string model;
|
||||
static string bios;
|
||||
static string model;
|
||||
|
||||
static int updatesCount = 0;
|
||||
private static long lastUpdate;
|
||||
@@ -33,7 +33,7 @@ namespace GHelper
|
||||
if (!force && (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastUpdate) < 5000)) return;
|
||||
lastUpdate = DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
||||
|
||||
InitBiosAndModel();
|
||||
(bios, model) = AppConfig.GetBiosAndModel();
|
||||
|
||||
updatesCount = 0;
|
||||
labelUpdates.ForeColor = colorEco;
|
||||
@@ -116,31 +116,6 @@ 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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
- 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)
|
||||
|
||||

|
||||
|
||||
@@ -99,7 +99,7 @@ You don't have to, it's purely optional. From my experience built in (in BIOS) p
|
||||
Click on them
|
||||
|
||||
#### 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
|
||||
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.
|
||||
@@ -110,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
|
||||
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.
|
||||
|
||||
#### How do I set Mute Microphone to M3?
|
||||
@@ -123,7 +123,7 @@ Personally, I'm not a big fan of them, as they make colors very inaccurate. But
|
||||
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 of how Core Clock offset works for GPU. When you increase clock offset you undervolt it at the same time (see picture)
|
||||
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
|
||||
|
||||
@@ -250,7 +250,7 @@ Example (for default windows "balanced" power plan):
|
||||
```
|
||||
|
||||
### Alternative Activation for XG Mobile 6850XT
|
||||
If you experience situation when your XG Mobile doesn't work on full power when Activated. It's possible it needs "alternative" command to get activated.
|
||||
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,
|
||||
@@ -258,7 +258,7 @@ To turn it on, add following line to config :
|
||||
|
||||
### Override UI theme
|
||||
|
||||
By default app would set UI theme from "app" theme in windows setting. You can override it to specific theme, or general windows 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",
|
||||
@@ -267,7 +267,7 @@ By default app would set UI theme from "app" theme in windows setting. You can o
|
||||
```
|
||||
|
||||
### Skip keyboard Aura initialisation on startup
|
||||
By default app would set last remembered RGB mode for keyboard on each launch. To disable it completely
|
||||
By default the app would set the last remembered RGB mode for the keyboard on each launch. To disable it completely
|
||||
|
||||
```
|
||||
"skip_aura" : 1,
|
||||
@@ -279,6 +279,12 @@ Disable app's OSD (for performance modes, keyboard backlight, etc.)
|
||||
"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
|
||||
- ``Ctrl + Shift + F5`` - Toggle Performance Modes
|
||||
- ``Ctrl + Shift + F12`` - Open G-Helper window
|
||||
@@ -290,20 +296,24 @@ If you don't want this bindings to work you can add
|
||||
"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``
|
||||
|
||||
```
|
||||
"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.
|
||||
|
||||
|
||||
### 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_memory": 1500,
|
||||
@@ -316,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:
|
||||
``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
|
||||
|
||||

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