mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Compare commits
20 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1472004d4b | ||
|
|
36c42ed05f | ||
|
|
66220351f1 | ||
|
|
8f2c8842e0 | ||
|
|
1cda822820 | ||
|
|
2afba74dd5 | ||
|
|
e69f9d1014 | ||
|
|
47d96aca61 | ||
|
|
f36fb6ca55 | ||
|
|
e765b4f037 | ||
|
|
f395c706f6 | ||
|
|
444fdcdd97 | ||
|
|
b874900393 | ||
|
|
05aad0f1ad | ||
|
|
a34cc1cb03 | ||
|
|
8c557344db | ||
|
|
5b2a4cb065 | ||
|
|
51bcad8bbe | ||
|
|
125aa44e6c | ||
|
|
9e6ca7c2e2 |
@@ -10,16 +10,16 @@ namespace GHelper.AnimeMatrix
|
|||||||
|
|
||||||
public class AniMatrix
|
public class AniMatrix
|
||||||
{
|
{
|
||||||
static System.Timers.Timer matrixTimer = default!;
|
System.Timers.Timer matrixTimer = default!;
|
||||||
static AnimeMatrixDevice mat;
|
AnimeMatrixDevice mat;
|
||||||
|
|
||||||
static double[] AudioValues;
|
double[] AudioValues;
|
||||||
static WasapiCapture AudioDevice;
|
WasapiCapture AudioDevice;
|
||||||
|
|
||||||
public static bool IsValid => mat != null;
|
public bool IsValid => mat != null;
|
||||||
|
|
||||||
private static long lastPresent;
|
private long lastPresent;
|
||||||
private static List<double> maxes = new List<double>();
|
private List<double> maxes = new List<double>();
|
||||||
|
|
||||||
public AniMatrix()
|
public AniMatrix()
|
||||||
{
|
{
|
||||||
@@ -78,8 +78,7 @@ namespace GHelper.AnimeMatrix
|
|||||||
SetMatrixPicture(AppConfig.getConfigString("matrix_picture"));
|
SetMatrixPicture(AppConfig.getConfigString("matrix_picture"));
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
StartMatrixTimer(1000);
|
SetMatrixClock();
|
||||||
Logger.WriteLine("Matrix Clock");
|
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
SetMatrixAudio();
|
SetMatrixAudio();
|
||||||
@@ -95,21 +94,21 @@ namespace GHelper.AnimeMatrix
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
private static void StartMatrixTimer(int interval = 100)
|
private void StartMatrixTimer(int interval = 100)
|
||||||
{
|
{
|
||||||
matrixTimer.Interval = interval;
|
matrixTimer.Interval = interval;
|
||||||
matrixTimer.Enabled = true;
|
matrixTimer.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void StopMatrixTimer()
|
private void StopMatrixTimer()
|
||||||
{
|
{
|
||||||
matrixTimer.Enabled = false;
|
matrixTimer.Stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static void MatrixTimer_Elapsed(object? sender, ElapsedEventArgs e)
|
private void MatrixTimer_Elapsed(object? sender, ElapsedEventArgs e)
|
||||||
{
|
{
|
||||||
if (!IsValid) return;
|
//if (!IsValid) return;
|
||||||
|
|
||||||
switch (AppConfig.getConfig("matrix_running"))
|
switch (AppConfig.getConfig("matrix_running"))
|
||||||
{
|
{
|
||||||
@@ -123,6 +122,14 @@ namespace GHelper.AnimeMatrix
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void SetMatrixClock()
|
||||||
|
{
|
||||||
|
mat.SetBuiltInAnimation(false);
|
||||||
|
StartMatrixTimer(1000);
|
||||||
|
Logger.WriteLine("Matrix Clock");
|
||||||
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
StopMatrixAudio();
|
StopMatrixAudio();
|
||||||
|
|||||||
@@ -71,11 +71,11 @@ public static class AppConfig
|
|||||||
File.WriteAllText(configFile, jsonString);
|
File.WriteAllText(configFile, jsonString);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int getConfig(string name)
|
public static int getConfig(string name, int empty = -1)
|
||||||
{
|
{
|
||||||
if (config.ContainsKey(name))
|
if (config.ContainsKey(name))
|
||||||
return int.Parse(config[name].ToString());
|
return int.Parse(config[name].ToString());
|
||||||
else return -1;
|
else return empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool isConfig(string name)
|
public static bool isConfig(string name)
|
||||||
@@ -83,11 +83,11 @@ public static class AppConfig
|
|||||||
return getConfig(name) == 1;
|
return getConfig(name) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string getConfigString(string name)
|
public static string getConfigString(string name, string empty = null)
|
||||||
{
|
{
|
||||||
if (config.ContainsKey(name))
|
if (config.ContainsKey(name))
|
||||||
return config[name].ToString();
|
return config[name].ToString();
|
||||||
else return null;
|
else return empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setConfig(string name, int value)
|
public static void setConfig(string name, int value)
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ public class AsusACPI
|
|||||||
|
|
||||||
const uint DSTS = 0x53545344;
|
const uint DSTS = 0x53545344;
|
||||||
const uint DEVS = 0x53564544;
|
const uint DEVS = 0x53564544;
|
||||||
|
const uint INIT = 0x54494E49;
|
||||||
|
|
||||||
public const uint UniversalControl = 0x00100021;
|
public const uint UniversalControl = 0x00100021;
|
||||||
public const int KB_Light_Up = 0xc4;
|
public const int KB_Light_Up = 0xc4;
|
||||||
@@ -161,7 +162,7 @@ public class AsusACPI
|
|||||||
public void RunListener()
|
public void RunListener()
|
||||||
{
|
{
|
||||||
|
|
||||||
eventHandle = CreateEvent(IntPtr.Zero, false, false, "ATK Event");
|
eventHandle = CreateEvent(IntPtr.Zero, false, false, "ATK4001");
|
||||||
|
|
||||||
byte[] outBuffer = new byte[16];
|
byte[] outBuffer = new byte[16];
|
||||||
byte[] data = new byte[8];
|
byte[] data = new byte[8];
|
||||||
@@ -171,14 +172,14 @@ public class AsusACPI
|
|||||||
data[1] = BitConverter.GetBytes(eventHandle.ToInt32())[1];
|
data[1] = BitConverter.GetBytes(eventHandle.ToInt32())[1];
|
||||||
|
|
||||||
result = Control(0x222400, data, outBuffer);
|
result = Control(0x222400, data, outBuffer);
|
||||||
Debug.WriteLine(result + ":" + BitConverter.ToString(data) + "|" + BitConverter.ToString(outBuffer));
|
Logger.WriteLine("ACPI " + result + ":" + BitConverter.ToString(data) + "|" + BitConverter.ToString(outBuffer));
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
WaitForSingleObject(eventHandle, Timeout.Infinite);
|
WaitForSingleObject(eventHandle, Timeout.Infinite);
|
||||||
Control(0x222408, new byte[0], outBuffer);
|
Control(0x222408, new byte[0], outBuffer);
|
||||||
int code = BitConverter.ToInt32(outBuffer);
|
int code = BitConverter.ToInt32(outBuffer);
|
||||||
Logger.WriteLine("Code: " + code);
|
Logger.WriteLine("ACPI Code: " + code);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -240,6 +241,13 @@ public class AsusACPI
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public byte[] DeviceInit()
|
||||||
|
{
|
||||||
|
byte[] args = new byte[8];
|
||||||
|
return CallMethod(INIT, args);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public int DeviceSet(uint DeviceID, int Status, string logName)
|
public int DeviceSet(uint DeviceID, int Status, string logName)
|
||||||
{
|
{
|
||||||
byte[] args = new byte[8];
|
byte[] args = new byte[8];
|
||||||
|
|||||||
114
app/AsusUSB.cs
114
app/AsusUSB.cs
@@ -53,16 +53,19 @@ namespace GHelper
|
|||||||
public static class AsusUSB
|
public static class AsusUSB
|
||||||
{
|
{
|
||||||
|
|
||||||
public const byte HID_ID = 0x5a;
|
public const int ASUS_ID = 0x0b05;
|
||||||
|
|
||||||
public static readonly byte[] LED_INIT1 = new byte[] { 0x5d, 0xb9 };
|
public const byte INPUT_HID_ID = 0x5a;
|
||||||
|
public const byte AURA_HID_ID = 0x5d;
|
||||||
|
|
||||||
|
public static readonly byte[] LED_INIT1 = new byte[] { AURA_HID_ID, 0xb9 };
|
||||||
public static readonly byte[] LED_INIT2 = Encoding.ASCII.GetBytes("]ASUS Tech.Inc.");
|
public static readonly byte[] LED_INIT2 = Encoding.ASCII.GetBytes("]ASUS Tech.Inc.");
|
||||||
public static readonly byte[] LED_INIT3 = new byte[] { 0x5d, 0x05, 0x20, 0x31, 0, 0x08 };
|
public static readonly byte[] LED_INIT3 = new byte[] { AURA_HID_ID, 0x05, 0x20, 0x31, 0, 0x08 };
|
||||||
public static readonly byte[] LED_INIT4 = Encoding.ASCII.GetBytes("^ASUS Tech.Inc.");
|
public static readonly byte[] LED_INIT4 = Encoding.ASCII.GetBytes("^ASUS Tech.Inc.");
|
||||||
public static readonly byte[] LED_INIT5 = new byte[] { 0x5e, 0x05, 0x20, 0x31, 0, 0x08 };
|
public static readonly byte[] LED_INIT5 = new byte[] { 0x5e, 0x05, 0x20, 0x31, 0, 0x08 };
|
||||||
|
|
||||||
static byte[] MESSAGE_SET = { 0x5d, 0xb5, 0, 0, 0 };
|
static byte[] MESSAGE_SET = { AURA_HID_ID, 0xb5, 0, 0, 0 };
|
||||||
static byte[] MESSAGE_APPLY = { 0x5d, 0xb4 };
|
static byte[] MESSAGE_APPLY = { AURA_HID_ID, 0xb4 };
|
||||||
|
|
||||||
static int[] deviceIds = { 0x1a30, 0x1854, 0x1869, 0x1866, 0x19b6, 0x1822, 0x1837, 0x1854, 0x184a, 0x183d, 0x8502, 0x1807, 0x17e0, 0x18c6 };
|
static int[] deviceIds = { 0x1a30, 0x1854, 0x1869, 0x1866, 0x19b6, 0x1822, 0x1837, 0x1854, 0x184a, 0x183d, 0x8502, 0x1807, 0x17e0, 0x18c6 };
|
||||||
|
|
||||||
@@ -174,24 +177,24 @@ namespace GHelper
|
|||||||
|
|
||||||
private static IEnumerable<HidDevice> GetHidDevices(int[] deviceIds, int minInput = 18)
|
private static IEnumerable<HidDevice> GetHidDevices(int[] deviceIds, int minInput = 18)
|
||||||
{
|
{
|
||||||
HidDevice[] HidDeviceList = HidDevices.Enumerate(0x0b05, deviceIds).ToArray();
|
HidDevice[] HidDeviceList = HidDevices.Enumerate(ASUS_ID, deviceIds).ToArray();
|
||||||
foreach (HidDevice device in HidDeviceList)
|
foreach (HidDevice device in HidDeviceList)
|
||||||
if (device.IsConnected
|
if (device.IsConnected
|
||||||
&& device.Capabilities.FeatureReportByteLength > 0
|
&& device.Capabilities.FeatureReportByteLength > 0
|
||||||
&& device.Capabilities.InputReportByteLength >= minInput) //
|
&& device.Capabilities.InputReportByteLength >= minInput)
|
||||||
yield return device;
|
yield return device;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static HidDevice? GetInputDevice()
|
public static HidDevice? GetDevice(byte reportID = INPUT_HID_ID)
|
||||||
{
|
{
|
||||||
HidDevice[] HidDeviceList = HidDevices.Enumerate(0x0b05, deviceIds).ToArray();
|
HidDevice[] HidDeviceList = HidDevices.Enumerate(ASUS_ID, deviceIds).ToArray();
|
||||||
HidDevice input = null;
|
HidDevice input = null;
|
||||||
|
|
||||||
foreach (HidDevice device in HidDeviceList)
|
foreach (HidDevice device in HidDeviceList)
|
||||||
if (device.ReadFeatureData(out byte[] data, HID_ID))
|
if (device.ReadFeatureData(out byte[] data, reportID))
|
||||||
{
|
{
|
||||||
input = device;
|
input = device;
|
||||||
Logger.WriteLine("Input Events" + device.Capabilities.FeatureReportByteLength + "|" + device.Capabilities.InputReportByteLength + device.Description + device.DevicePath);
|
//Logger.WriteLine("HID Device("+ reportID + ")" + + device.Capabilities.FeatureReportByteLength + "|" + device.Capabilities.InputReportByteLength + device.DevicePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
return input;
|
return input;
|
||||||
@@ -199,45 +202,17 @@ namespace GHelper
|
|||||||
|
|
||||||
public static bool TouchpadToggle()
|
public static bool TouchpadToggle()
|
||||||
{
|
{
|
||||||
HidDevice? input = GetInputDevice();
|
HidDevice? input = GetDevice();
|
||||||
if (input != null) return input.WriteFeatureData(new byte[] { HID_ID, 0xf4, 0x6b });
|
if (input != null) return input.WriteFeatureData(new byte[] { INPUT_HID_ID, 0xf4, 0x6b });
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void RunListener(Action<int> KeyHandler)
|
|
||||||
{
|
|
||||||
HidDevice? input = GetInputDevice();
|
|
||||||
if (input == null) return;
|
|
||||||
|
|
||||||
//Logger.WriteLine("Input Events " + input.DevicePath);
|
|
||||||
|
|
||||||
var task = Task.Run(() =>
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
var data = input.Read().Data;
|
|
||||||
if (data.Length > 1 && data[0] == HID_ID && data[1] > 0)
|
|
||||||
{
|
|
||||||
Logger.WriteLine("Key:" + data[1]);
|
|
||||||
KeyHandler(data[1]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Logger.WriteLine(ex.ToString());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static byte[] AuraMessage(int mode, Color color, Color color2, int speed)
|
public static byte[] AuraMessage(int mode, Color color, Color color2, int speed)
|
||||||
{
|
{
|
||||||
|
|
||||||
byte[] msg = new byte[17];
|
byte[] msg = new byte[17];
|
||||||
msg[0] = 0x5d;
|
msg[0] = AURA_HID_ID;
|
||||||
msg[1] = 0xb3;
|
msg[1] = 0xb3;
|
||||||
msg[2] = 0x00; // Zone
|
msg[2] = 0x00; // Zone
|
||||||
msg[3] = (byte)mode; // Aura Mode
|
msg[3] = (byte)mode; // Aura Mode
|
||||||
@@ -254,9 +229,9 @@ namespace GHelper
|
|||||||
|
|
||||||
public static void Init()
|
public static void Init()
|
||||||
{
|
{
|
||||||
Task.Run(() =>
|
Task.Run(async () =>
|
||||||
{
|
{
|
||||||
var devices = GetHidDevices(deviceIds);
|
var devices = GetHidDevices(deviceIds, 0);
|
||||||
foreach (HidDevice device in devices)
|
foreach (HidDevice device in devices)
|
||||||
{
|
{
|
||||||
device.OpenDevice();
|
device.OpenDevice();
|
||||||
@@ -273,22 +248,34 @@ namespace GHelper
|
|||||||
|
|
||||||
public static void ApplyBrightness(int brightness)
|
public static void ApplyBrightness(int brightness)
|
||||||
{
|
{
|
||||||
Task.Run(() =>
|
if (AppConfig.ContainsModel("TUF"))
|
||||||
{
|
Program.acpi.TUFKeyboardBrightness(brightness);
|
||||||
byte[] msg = { 0x5d, 0xba, 0xc5, 0xc4, (byte)brightness };
|
|
||||||
|
|
||||||
var devices = GetHidDevices(deviceIds);
|
byte[] msg = { AURA_HID_ID, 0xba, 0xc5, 0xc4, (byte)brightness };
|
||||||
foreach (HidDevice device in devices)
|
|
||||||
|
var devices = GetHidDevices(deviceIds);
|
||||||
|
foreach (HidDevice device in devices)
|
||||||
|
{
|
||||||
|
device.OpenDevice();
|
||||||
|
device.WriteFeatureData(msg);
|
||||||
|
Logger.WriteLine("KB Backlight:" + BitConverter.ToString(msg));
|
||||||
|
device.CloseDevice();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Backup payload for old models
|
||||||
|
if (AppConfig.ContainsModel("503"))
|
||||||
|
{
|
||||||
|
byte[] msgBackup = { INPUT_HID_ID, 0xba, 0xc5, 0xc4, (byte)brightness };
|
||||||
|
|
||||||
|
var devicesBackup = GetHidDevices(deviceIds, 0);
|
||||||
|
foreach (HidDevice device in devicesBackup)
|
||||||
{
|
{
|
||||||
device.OpenDevice();
|
device.OpenDevice();
|
||||||
device.WriteFeatureData(msg);
|
device.WriteFeatureData(msgBackup);
|
||||||
Logger.WriteLine("USB-KB " + device.Capabilities.FeatureReportByteLength + ":" + BitConverter.ToString(msg));
|
|
||||||
device.CloseDevice();
|
device.CloseDevice();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (AppConfig.ContainsModel("TUF"))
|
|
||||||
Program.acpi.TUFKeyboardBrightness(brightness);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -332,7 +319,7 @@ namespace GHelper
|
|||||||
Logger.WriteLine("XGM " + device.Attributes.ProductHexId + "|" + device.Capabilities.FeatureReportByteLength + ":" + BitConverter.ToString(msg));
|
Logger.WriteLine("XGM " + device.Attributes.ProductHexId + "|" + device.Capabilities.FeatureReportByteLength + ":" + BitConverter.ToString(msg));
|
||||||
device.WriteFeatureData(payload);
|
device.WriteFeatureData(payload);
|
||||||
device.CloseDevice();
|
device.CloseDevice();
|
||||||
return 1;
|
//return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -405,23 +392,6 @@ namespace GHelper
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SetBacklightOffDelay(int value = 60)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
RegistryKey myKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\ASUS\ASUS System Control Interface\AsusOptimization\ASUS Keyboard Hotkeys", true);
|
|
||||||
if (myKey != null)
|
|
||||||
{
|
|
||||||
myKey.SetValue("TurnOffKeybdLight", value, RegistryValueKind.DWord);
|
|
||||||
myKey.Close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Logger.WriteLine(ex.Message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
30
app/Extra.Designer.cs
generated
30
app/Extra.Designer.cs
generated
@@ -86,6 +86,8 @@ namespace GHelper
|
|||||||
checkUSBC = new CheckBox();
|
checkUSBC = new CheckBox();
|
||||||
checkNoOverdrive = new CheckBox();
|
checkNoOverdrive = new CheckBox();
|
||||||
checkTopmost = new CheckBox();
|
checkTopmost = new CheckBox();
|
||||||
|
numericBacklightPluggedTime = new NumericUpDown();
|
||||||
|
labelBacklightTimeoutPlugged = new Label();
|
||||||
groupBindings.SuspendLayout();
|
groupBindings.SuspendLayout();
|
||||||
tableKeys.SuspendLayout();
|
tableKeys.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)pictureHelp).BeginInit();
|
((System.ComponentModel.ISupportInitialize)pictureHelp).BeginInit();
|
||||||
@@ -96,6 +98,7 @@ namespace GHelper
|
|||||||
panelXMG.SuspendLayout();
|
panelXMG.SuspendLayout();
|
||||||
tableBacklight.SuspendLayout();
|
tableBacklight.SuspendLayout();
|
||||||
groupOther.SuspendLayout();
|
groupOther.SuspendLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)numericBacklightPluggedTime).BeginInit();
|
||||||
SuspendLayout();
|
SuspendLayout();
|
||||||
//
|
//
|
||||||
// groupBindings
|
// groupBindings
|
||||||
@@ -302,13 +305,15 @@ namespace GHelper
|
|||||||
groupLight.Dock = DockStyle.Top;
|
groupLight.Dock = DockStyle.Top;
|
||||||
groupLight.Location = new Point(10, 334);
|
groupLight.Location = new Point(10, 334);
|
||||||
groupLight.Name = "groupLight";
|
groupLight.Name = "groupLight";
|
||||||
groupLight.Size = new Size(954, 516);
|
groupLight.Size = new Size(954, 563);
|
||||||
groupLight.TabIndex = 1;
|
groupLight.TabIndex = 1;
|
||||||
groupLight.TabStop = false;
|
groupLight.TabStop = false;
|
||||||
groupLight.Text = "Keyboard Backlight";
|
groupLight.Text = "Keyboard Backlight";
|
||||||
//
|
//
|
||||||
// panelBacklightExtra
|
// panelBacklightExtra
|
||||||
//
|
//
|
||||||
|
panelBacklightExtra.Controls.Add(numericBacklightPluggedTime);
|
||||||
|
panelBacklightExtra.Controls.Add(labelBacklightTimeoutPlugged);
|
||||||
panelBacklightExtra.Controls.Add(numericBacklightTime);
|
panelBacklightExtra.Controls.Add(numericBacklightTime);
|
||||||
panelBacklightExtra.Controls.Add(labelBacklightTimeout);
|
panelBacklightExtra.Controls.Add(labelBacklightTimeout);
|
||||||
panelBacklightExtra.Controls.Add(labelBrightness);
|
panelBacklightExtra.Controls.Add(labelBrightness);
|
||||||
@@ -318,7 +323,7 @@ namespace GHelper
|
|||||||
panelBacklightExtra.Dock = DockStyle.Top;
|
panelBacklightExtra.Dock = DockStyle.Top;
|
||||||
panelBacklightExtra.Location = new Point(3, 319);
|
panelBacklightExtra.Location = new Point(3, 319);
|
||||||
panelBacklightExtra.Name = "panelBacklightExtra";
|
panelBacklightExtra.Name = "panelBacklightExtra";
|
||||||
panelBacklightExtra.Size = new Size(948, 194);
|
panelBacklightExtra.Size = new Size(948, 241);
|
||||||
panelBacklightExtra.TabIndex = 43;
|
panelBacklightExtra.TabIndex = 43;
|
||||||
//
|
//
|
||||||
// numericBacklightTime
|
// numericBacklightTime
|
||||||
@@ -668,7 +673,7 @@ namespace GHelper
|
|||||||
groupOther.Controls.Add(checkNoOverdrive);
|
groupOther.Controls.Add(checkNoOverdrive);
|
||||||
groupOther.Controls.Add(checkTopmost);
|
groupOther.Controls.Add(checkTopmost);
|
||||||
groupOther.Dock = DockStyle.Top;
|
groupOther.Dock = DockStyle.Top;
|
||||||
groupOther.Location = new Point(10, 850);
|
groupOther.Location = new Point(10, 897);
|
||||||
groupOther.Name = "groupOther";
|
groupOther.Name = "groupOther";
|
||||||
groupOther.Size = new Size(954, 276);
|
groupOther.Size = new Size(954, 276);
|
||||||
groupOther.TabIndex = 2;
|
groupOther.TabIndex = 2;
|
||||||
@@ -726,6 +731,22 @@ namespace GHelper
|
|||||||
checkTopmost.Text = Strings.WindowTop;
|
checkTopmost.Text = Strings.WindowTop;
|
||||||
checkTopmost.UseVisualStyleBackColor = true;
|
checkTopmost.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
|
// numericBacklightPluggedTime
|
||||||
|
//
|
||||||
|
numericBacklightPluggedTime.Location = new Point(655, 181);
|
||||||
|
numericBacklightPluggedTime.Maximum = new decimal(new int[] { 3600, 0, 0, 0 });
|
||||||
|
numericBacklightPluggedTime.Name = "numericBacklightPluggedTime";
|
||||||
|
numericBacklightPluggedTime.Size = new Size(240, 39);
|
||||||
|
numericBacklightPluggedTime.TabIndex = 49;
|
||||||
|
//
|
||||||
|
// labelBacklightTimeoutPlugged
|
||||||
|
//
|
||||||
|
labelBacklightTimeoutPlugged.Location = new Point(13, 183);
|
||||||
|
labelBacklightTimeoutPlugged.Name = "labelBacklightTimeoutPlugged";
|
||||||
|
labelBacklightTimeoutPlugged.Size = new Size(636, 45);
|
||||||
|
labelBacklightTimeoutPlugged.TabIndex = 48;
|
||||||
|
labelBacklightTimeoutPlugged.Text = "Seconds to turn off backlight when plugged";
|
||||||
|
//
|
||||||
// Extra
|
// Extra
|
||||||
//
|
//
|
||||||
AutoScaleDimensions = new SizeF(13F, 32F);
|
AutoScaleDimensions = new SizeF(13F, 32F);
|
||||||
@@ -761,6 +782,7 @@ namespace GHelper
|
|||||||
tableBacklight.ResumeLayout(false);
|
tableBacklight.ResumeLayout(false);
|
||||||
groupOther.ResumeLayout(false);
|
groupOther.ResumeLayout(false);
|
||||||
groupOther.PerformLayout();
|
groupOther.PerformLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)numericBacklightPluggedTime).EndInit();
|
||||||
ResumeLayout(false);
|
ResumeLayout(false);
|
||||||
PerformLayout();
|
PerformLayout();
|
||||||
}
|
}
|
||||||
@@ -822,5 +844,7 @@ namespace GHelper
|
|||||||
private RComboBox comboM2;
|
private RComboBox comboM2;
|
||||||
private TextBox textM2;
|
private TextBox textM2;
|
||||||
private TextBox textM1;
|
private TextBox textM1;
|
||||||
|
private NumericUpDown numericBacklightPluggedTime;
|
||||||
|
private Label labelBacklightTimeoutPlugged;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
23
app/Extra.cs
23
app/Extra.cs
@@ -84,7 +84,9 @@ namespace GHelper
|
|||||||
|
|
||||||
labelSpeed.Text = Properties.Strings.AnimationSpeed;
|
labelSpeed.Text = Properties.Strings.AnimationSpeed;
|
||||||
labelBrightness.Text = Properties.Strings.Brightness;
|
labelBrightness.Text = Properties.Strings.Brightness;
|
||||||
|
|
||||||
labelBacklightTimeout.Text = Properties.Strings.BacklightTimeout;
|
labelBacklightTimeout.Text = Properties.Strings.BacklightTimeout;
|
||||||
|
labelBacklightTimeoutPlugged.Text = Properties.Strings.BacklightTimeoutPlugged;
|
||||||
|
|
||||||
checkKeyboardAuto.Text = Properties.Strings.KeyboardAuto;
|
checkKeyboardAuto.Text = Properties.Strings.KeyboardAuto;
|
||||||
checkNoOverdrive.Text = Properties.Strings.DisableOverdrive;
|
checkNoOverdrive.Text = Properties.Strings.DisableOverdrive;
|
||||||
@@ -209,18 +211,19 @@ namespace GHelper
|
|||||||
checkXMG.Checked = !(AppConfig.getConfig("xmg_light") == 0);
|
checkXMG.Checked = !(AppConfig.getConfig("xmg_light") == 0);
|
||||||
checkXMG.CheckedChanged += CheckXMG_CheckedChanged;
|
checkXMG.CheckedChanged += CheckXMG_CheckedChanged;
|
||||||
|
|
||||||
int kb_timeout = AppConfig.getConfig("keyboard_light_tiomeout");
|
numericBacklightTime.Value = AppConfig.getConfig("keyboard_timeout", 60);
|
||||||
numericBacklightTime.Value = (kb_timeout >= 0) ? kb_timeout : 60;
|
numericBacklightPluggedTime.Value = AppConfig.getConfig("keyboard_ac_timeout", 0);
|
||||||
|
|
||||||
numericBacklightTime.ValueChanged += NumericBacklightTime_ValueChanged;
|
numericBacklightTime.ValueChanged += NumericBacklightTime_ValueChanged;
|
||||||
|
numericBacklightPluggedTime.ValueChanged += NumericBacklightTime_ValueChanged;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void NumericBacklightTime_ValueChanged(object? sender, EventArgs e)
|
private void NumericBacklightTime_ValueChanged(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Program.RunAsAdmin("extra");
|
AppConfig.setConfig("keyboard_timeout", (int)numericBacklightTime.Value);
|
||||||
AppConfig.setConfig("keyboard_light_tiomeout", (int)numericBacklightTime.Value);
|
AppConfig.setConfig("keyboard_ac_timeout", (int)numericBacklightPluggedTime.Value);
|
||||||
AsusUSB.SetBacklightOffDelay((int)numericBacklightTime.Value);
|
Program.inputDispatcher.InitBacklightTimer();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CheckXMG_CheckedChanged(object? sender, EventArgs e)
|
private void CheckXMG_CheckedChanged(object? sender, EventArgs e)
|
||||||
@@ -319,7 +322,15 @@ namespace GHelper
|
|||||||
|
|
||||||
private void Keyboard_Shown(object? sender, EventArgs e)
|
private void Keyboard_Shown(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Top = Program.settingsForm.Top;
|
if (Height > Program.settingsForm.Height)
|
||||||
|
{
|
||||||
|
Top = Program.settingsForm.Top + Program.settingsForm.Height - Height;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Top = Program.settingsForm.Top;
|
||||||
|
}
|
||||||
|
|
||||||
Left = Program.settingsForm.Left - Width - 5;
|
Left = Program.settingsForm.Left - Width - 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
||||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||||
<AssemblyVersion>0.66</AssemblyVersion>
|
<AssemblyVersion>0.70</AssemblyVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||||
|
|||||||
@@ -182,7 +182,7 @@ public class NvidiaGpuControl : IGpuControl
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.WriteLine(ex.Message);
|
Debug.WriteLine(ex.Message);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -151,9 +151,11 @@ public static class HardwareControl
|
|||||||
GpuControl?.Dispose();
|
GpuControl?.Dispose();
|
||||||
|
|
||||||
IGpuControl _gpuControl = new NvidiaGpuControl();
|
IGpuControl _gpuControl = new NvidiaGpuControl();
|
||||||
|
|
||||||
if (_gpuControl.IsValid)
|
if (_gpuControl.IsValid)
|
||||||
{
|
{
|
||||||
GpuControl = _gpuControl;
|
GpuControl = _gpuControl;
|
||||||
|
Logger.WriteLine(GpuControl.FullName);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -163,11 +165,14 @@ public static class HardwareControl
|
|||||||
if (_gpuControl.IsValid)
|
if (_gpuControl.IsValid)
|
||||||
{
|
{
|
||||||
GpuControl = _gpuControl;
|
GpuControl = _gpuControl;
|
||||||
|
Logger.WriteLine(GpuControl.FullName);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
_gpuControl.Dispose();
|
_gpuControl.Dispose();
|
||||||
|
|
||||||
GpuControl = null;
|
GpuControl = null;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,19 +1,68 @@
|
|||||||
using Microsoft.Win32;
|
using HidLibrary;
|
||||||
|
using Microsoft.Win32;
|
||||||
using NAudio.CoreAudioApi;
|
using NAudio.CoreAudioApi;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Management;
|
using System.Management;
|
||||||
using Tools;
|
using Tools;
|
||||||
|
|
||||||
namespace GHelper
|
namespace GHelper
|
||||||
{
|
{
|
||||||
public class InputDispatcher
|
public class KeyboardListener
|
||||||
{
|
{
|
||||||
|
|
||||||
private static bool isOptimizationRunning = OptimizationService.IsRunning();
|
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
|
||||||
|
|
||||||
|
public KeyboardListener(Action<int> KeyHandler)
|
||||||
|
{
|
||||||
|
HidDevice? input = AsusUSB.GetDevice();
|
||||||
|
if (input == null) return;
|
||||||
|
|
||||||
|
Logger.WriteLine($"Input: {input.DevicePath}");
|
||||||
|
|
||||||
|
var task = Task.Run(() =>
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
while (!cancellationTokenSource.Token.IsCancellationRequested)
|
||||||
|
{
|
||||||
|
var data = input.Read().Data;
|
||||||
|
if (data.Length > 1 && data[0] == AsusUSB.INPUT_HID_ID && data[1] > 0)
|
||||||
|
{
|
||||||
|
Logger.WriteLine($"Key: {data[1]}");
|
||||||
|
KeyHandler(data[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Logger.WriteLine("Listener stopped");
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.WriteLine(ex.ToString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
cancellationTokenSource?.Cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class InputDispatcher
|
||||||
|
{
|
||||||
|
System.Timers.Timer timer = new System.Timers.Timer(1000);
|
||||||
|
public bool backlight = true;
|
||||||
|
|
||||||
private static nint windowHandle;
|
private static nint windowHandle;
|
||||||
|
|
||||||
public static Keys keyProfile = Keys.F5;
|
public static Keys keyProfile = Keys.F5;
|
||||||
|
|
||||||
|
KeyboardListener listener;
|
||||||
|
|
||||||
KeyHandler m1, m2, togggle;
|
KeyHandler m1, m2, togggle;
|
||||||
|
|
||||||
public InputDispatcher(nint handle)
|
public InputDispatcher(nint handle)
|
||||||
@@ -21,9 +70,12 @@ namespace GHelper
|
|||||||
|
|
||||||
windowHandle = handle;
|
windowHandle = handle;
|
||||||
|
|
||||||
Program.acpi.SubscribeToEvents(WatcherEventArrived);
|
byte[] result = Program.acpi.DeviceInit();
|
||||||
|
Debug.WriteLine($"Init: {BitConverter.ToString(result)}");
|
||||||
|
|
||||||
|
Program.acpi.SubscribeToEvents(WatcherEventArrived);
|
||||||
|
//Task.Run(Program.acpi.RunListener);
|
||||||
|
|
||||||
if (!isOptimizationRunning) AsusUSB.RunListener(HandleEvent);
|
|
||||||
|
|
||||||
// CTRL + SHIFT + F5 to cycle profiles
|
// CTRL + SHIFT + F5 to cycle profiles
|
||||||
if (AppConfig.getConfig("keybind_profile") != -1) keyProfile = (Keys)AppConfig.getConfig("keybind_profile");
|
if (AppConfig.getConfig("keybind_profile") != -1) keyProfile = (Keys)AppConfig.getConfig("keybind_profile");
|
||||||
@@ -33,8 +85,59 @@ namespace GHelper
|
|||||||
m2 = new KeyHandler(KeyHandler.NOMOD, Keys.VolumeUp, windowHandle);
|
m2 = new KeyHandler(KeyHandler.NOMOD, Keys.VolumeUp, windowHandle);
|
||||||
|
|
||||||
RegisterKeys();
|
RegisterKeys();
|
||||||
|
|
||||||
|
timer.Elapsed += Timer_Elapsed;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void Timer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
|
||||||
|
{
|
||||||
|
TimeSpan iddle = NativeMethods.GetIdleTime();
|
||||||
|
|
||||||
|
int kb_timeout;
|
||||||
|
|
||||||
|
if (SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online)
|
||||||
|
kb_timeout = AppConfig.getConfig("keyboard_ac_timeout", 0);
|
||||||
|
else
|
||||||
|
kb_timeout = AppConfig.getConfig("keyboard_timeout", 60);
|
||||||
|
|
||||||
|
if (kb_timeout == 0) return;
|
||||||
|
|
||||||
|
if (backlight && iddle.TotalSeconds > kb_timeout)
|
||||||
|
{
|
||||||
|
backlight = false;
|
||||||
|
AsusUSB.ApplyBrightness(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!backlight && iddle.TotalSeconds < kb_timeout)
|
||||||
|
{
|
||||||
|
backlight = true;
|
||||||
|
AsusUSB.ApplyBrightness(AppConfig.getConfig("keyboard_brightness"));
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug.WriteLine(iddle.TotalSeconds);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Init()
|
||||||
|
{
|
||||||
|
if (listener is not null) listener.Dispose();
|
||||||
|
|
||||||
|
Program.acpi.DeviceInit();
|
||||||
|
|
||||||
|
if (!OptimizationService.IsRunning())
|
||||||
|
listener = new KeyboardListener(HandleEvent);
|
||||||
|
|
||||||
|
InitBacklightTimer();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void InitBacklightTimer()
|
||||||
|
{
|
||||||
|
timer.Enabled = (AppConfig.getConfig("keyboard_timeout") > 0 && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online) ||
|
||||||
|
(AppConfig.getConfig("keyboard_ac_timeout") > 0 && SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void RegisterKeys()
|
public void RegisterKeys()
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -96,7 +199,7 @@ namespace GHelper
|
|||||||
action = "aura";
|
action = "aura";
|
||||||
if (name == "fnf5")
|
if (name == "fnf5")
|
||||||
action = "performance";
|
action = "performance";
|
||||||
if (name == "m3" && !isOptimizationRunning)
|
if (name == "m3" && !OptimizationService.IsRunning())
|
||||||
action = "micmute";
|
action = "micmute";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -180,6 +283,7 @@ namespace GHelper
|
|||||||
Program.settingsForm.BeginInvoke(Program.settingsForm.CyclePerformanceMode);
|
Program.settingsForm.BeginInvoke(Program.settingsForm.CyclePerformanceMode);
|
||||||
return;
|
return;
|
||||||
case 179: // FN+F4
|
case 179: // FN+F4
|
||||||
|
case 178: // FN+F4
|
||||||
KeyProcess("fnf4");
|
KeyProcess("fnf4");
|
||||||
return;
|
return;
|
||||||
case 189: // Tablet mode
|
case 189: // Tablet mode
|
||||||
@@ -187,16 +291,13 @@ namespace GHelper
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isOptimizationRunning) return;
|
if (OptimizationService.IsRunning()) return;
|
||||||
|
|
||||||
// Asus Optimization service Events
|
// Asus Optimization service Events
|
||||||
|
|
||||||
int backlight = AppConfig.getConfig("keyboard_brightness");
|
int backlight = AppConfig.getConfig("keyboard_brightness");
|
||||||
|
|
||||||
string[] backlightNames = new string[] { "Off", "Low", "Mid", "Max" };
|
string[] backlightNames = new string[] { "Off", "Low", "Mid", "Max" };
|
||||||
|
|
||||||
int brightness;
|
|
||||||
|
|
||||||
switch (EventID)
|
switch (EventID)
|
||||||
{
|
{
|
||||||
case 197: // FN+F2
|
case 197: // FN+F2
|
||||||
@@ -225,7 +326,7 @@ namespace GHelper
|
|||||||
break;
|
break;
|
||||||
case 107: // FN+F10
|
case 107: // FN+F10
|
||||||
bool touchpadState = GetTouchpadState();
|
bool touchpadState = GetTouchpadState();
|
||||||
if (!AsusUSB.TouchpadToggle()) Program.acpi.DeviceSet(AsusACPI.UniversalControl, 0x6B, "Touchpad");
|
AsusUSB.TouchpadToggle();
|
||||||
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, touchpadState ? "Off" : "On", ToastIcon.Touchpad);
|
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, touchpadState ? "Off" : "On", ToastIcon.Touchpad);
|
||||||
break;
|
break;
|
||||||
case 108: // FN+F11
|
case 108: // FN+F11
|
||||||
@@ -238,11 +339,11 @@ namespace GHelper
|
|||||||
|
|
||||||
static void LaunchProcess(string command = "")
|
static void LaunchProcess(string command = "")
|
||||||
{
|
{
|
||||||
string executable = command.Split(' ')[0];
|
|
||||||
string arguments = command.Substring(executable.Length).Trim();
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
string executable = command.Split(' ')[0];
|
||||||
|
string arguments = command.Substring(executable.Length).Trim();
|
||||||
Process proc = Process.Start(executable, arguments);
|
Process proc = Process.Start(executable, arguments);
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
using static System.Windows.Forms.VisualStyles.VisualStyleElement.TrackBar;
|
||||||
using static Tools.ScreenInterrogatory;
|
using static Tools.ScreenInterrogatory;
|
||||||
|
|
||||||
namespace Tools
|
namespace Tools
|
||||||
@@ -351,6 +352,25 @@ namespace Tools
|
|||||||
public class NativeMethods
|
public class NativeMethods
|
||||||
{
|
{
|
||||||
|
|
||||||
|
internal struct LASTINPUTINFO
|
||||||
|
{
|
||||||
|
public uint cbSize;
|
||||||
|
public uint dwTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
[DllImport("User32.dll")]
|
||||||
|
private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
|
||||||
|
|
||||||
|
public static TimeSpan GetIdleTime()
|
||||||
|
{
|
||||||
|
LASTINPUTINFO lastInPut = new LASTINPUTINFO();
|
||||||
|
lastInPut.cbSize = (uint)Marshal.SizeOf(lastInPut);
|
||||||
|
GetLastInputInfo(ref lastInPut);
|
||||||
|
return TimeSpan.FromMilliseconds((uint)Environment.TickCount - lastInPut.dwTime);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private const int WM_SYSCOMMAND = 0x0112;
|
private const int WM_SYSCOMMAND = 0x0112;
|
||||||
private const int SC_MONITORPOWER = 0xF170;
|
private const int SC_MONITORPOWER = 0xF170;
|
||||||
private const int MONITOR_OFF = 2;
|
private const int MONITOR_OFF = 2;
|
||||||
@@ -709,6 +729,7 @@ public class NativeMethods
|
|||||||
dm.dmDisplayFrequency = frequency;
|
dm.dmDisplayFrequency = frequency;
|
||||||
int iRet = NativeMethods.ChangeDisplaySettingsEx(laptopScreen, ref dm, IntPtr.Zero, DisplaySettingsFlags.CDS_UPDATEREGISTRY, IntPtr.Zero);
|
int iRet = NativeMethods.ChangeDisplaySettingsEx(laptopScreen, ref dm, IntPtr.Zero, DisplaySettingsFlags.CDS_UPDATEREGISTRY, IntPtr.Zero);
|
||||||
Logger.WriteLine("Screen = " + frequency.ToString() + "Hz : " + (iRet == 0 ? "OK" : iRet));
|
Logger.WriteLine("Screen = " + frequency.ToString() + "Hz : " + (iRet == 0 ? "OK" : iRet));
|
||||||
|
|
||||||
return iRet;
|
return iRet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using Microsoft.Win32;
|
||||||
|
|
||||||
namespace GHelper
|
namespace GHelper
|
||||||
{
|
{
|
||||||
@@ -39,6 +40,26 @@ namespace GHelper
|
|||||||
{
|
{
|
||||||
return (Process.GetProcessesByName("AsusOptimization").Count() > 0);
|
return (Process.GetProcessesByName("AsusOptimization").Count() > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void SetBacklightOffDelay(int value = 60)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
RegistryKey myKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\ASUS\ASUS System Control Interface\AsusOptimization\ASUS Keyboard Hotkeys", true);
|
||||||
|
if (myKey != null)
|
||||||
|
{
|
||||||
|
myKey.SetValue("TurnOffKeybdLight", value, RegistryValueKind.DWord);
|
||||||
|
myKey.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.WriteLine(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,11 +1,8 @@
|
|||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
using NAudio.CoreAudioApi;
|
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Management;
|
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Security.Principal;
|
using System.Security.Principal;
|
||||||
using Tools;
|
|
||||||
using static NativeMethods;
|
using static NativeMethods;
|
||||||
|
|
||||||
namespace GHelper
|
namespace GHelper
|
||||||
@@ -32,7 +29,7 @@ namespace GHelper
|
|||||||
|
|
||||||
public static InputDispatcher inputDispatcher;
|
public static InputDispatcher inputDispatcher;
|
||||||
|
|
||||||
private static PowerLineStatus isPlugged = PowerLineStatus.Unknown;
|
private static PowerLineStatus isPlugged = SystemInformation.PowerStatus.PowerLineStatus;
|
||||||
|
|
||||||
// The main entry point for the application
|
// The main entry point for the application
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
@@ -41,10 +38,15 @@ namespace GHelper
|
|||||||
string action = "";
|
string action = "";
|
||||||
if (args.Length > 0) action = args[0];
|
if (args.Length > 0) action = args[0];
|
||||||
|
|
||||||
Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentUICulture;
|
string language = AppConfig.getConfigString("language");
|
||||||
Debug.WriteLine(CultureInfo.CurrentUICulture);
|
|
||||||
|
|
||||||
//Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("uk");
|
if (language != null && language.Length > 0)
|
||||||
|
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(language);
|
||||||
|
else
|
||||||
|
Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentUICulture;
|
||||||
|
|
||||||
|
Debug.WriteLine(CultureInfo.CurrentUICulture);
|
||||||
|
//Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("fr");
|
||||||
|
|
||||||
CheckProcesses();
|
CheckProcesses();
|
||||||
|
|
||||||
@@ -65,7 +67,7 @@ namespace GHelper
|
|||||||
}
|
}
|
||||||
|
|
||||||
Logger.WriteLine("------------");
|
Logger.WriteLine("------------");
|
||||||
Logger.WriteLine("App launched: " + AppConfig.GetModel() + " :" + Assembly.GetExecutingAssembly().GetName().Version.ToString() + CultureInfo.CurrentUICulture + (IsUserAdministrator() ? "A" : ""));
|
Logger.WriteLine("App launched: " + AppConfig.GetModel() + " :" + Assembly.GetExecutingAssembly().GetName().Version.ToString() + CultureInfo.CurrentUICulture + (IsUserAdministrator() ? "." : ""));
|
||||||
|
|
||||||
Application.EnableVisualStyles();
|
Application.EnableVisualStyles();
|
||||||
|
|
||||||
@@ -81,7 +83,7 @@ namespace GHelper
|
|||||||
settingsForm.InitMatrix();
|
settingsForm.InitMatrix();
|
||||||
settingsForm.SetStartupCheck(Startup.IsScheduled());
|
settingsForm.SetStartupCheck(Startup.IsScheduled());
|
||||||
|
|
||||||
|
|
||||||
SetAutoModes();
|
SetAutoModes();
|
||||||
|
|
||||||
// Subscribing for system power change events
|
// Subscribing for system power change events
|
||||||
@@ -98,7 +100,7 @@ namespace GHelper
|
|||||||
SettingsToggle(action);
|
SettingsToggle(action);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Application.Run();
|
Application.Run();
|
||||||
|
|
||||||
@@ -142,6 +144,8 @@ namespace GHelper
|
|||||||
isPlugged = SystemInformation.PowerStatus.PowerLineStatus;
|
isPlugged = SystemInformation.PowerStatus.PowerLineStatus;
|
||||||
Logger.WriteLine("AutoSetting for " + isPlugged.ToString());
|
Logger.WriteLine("AutoSetting for " + isPlugged.ToString());
|
||||||
|
|
||||||
|
inputDispatcher.Init();
|
||||||
|
|
||||||
settingsForm.SetBatteryChargeLimit(AppConfig.getConfig("charge_limit"));
|
settingsForm.SetBatteryChargeLimit(AppConfig.getConfig("charge_limit"));
|
||||||
settingsForm.AutoPerformance();
|
settingsForm.AutoPerformance();
|
||||||
|
|
||||||
@@ -159,9 +163,10 @@ namespace GHelper
|
|||||||
|
|
||||||
private static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
|
private static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (SystemInformation.PowerStatus.PowerLineStatus == isPlugged) return;
|
if (SystemInformation.PowerStatus.PowerLineStatus == isPlugged) return;
|
||||||
|
|
||||||
Logger.WriteLine("Windows - Power Mode Changed");
|
Logger.WriteLine("Power Mode Changed");
|
||||||
SetAutoModes();
|
SetAutoModes();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
13
app/Properties/Strings.Designer.cs
generated
13
app/Properties/Strings.Designer.cs
generated
@@ -277,7 +277,7 @@ namespace GHelper.Properties {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Seconds to turn off backlight on battery.
|
/// Looks up a localized string similar to Backlight timeout on battery.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string BacklightTimeout {
|
internal static string BacklightTimeout {
|
||||||
get {
|
get {
|
||||||
@@ -285,6 +285,15 @@ namespace GHelper.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Backlight timeout when plugged (0 - always on).
|
||||||
|
/// </summary>
|
||||||
|
internal static string BacklightTimeoutPlugged {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("BacklightTimeoutPlugged", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Balanced.
|
/// Looks up a localized string similar to Balanced.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -484,7 +493,7 @@ namespace GHelper.Properties {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Fan: .
|
/// Looks up a localized string similar to Fan: .
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string FanSpeed {
|
internal static string FanSpeed {
|
||||||
get {
|
get {
|
||||||
|
|||||||
@@ -190,7 +190,7 @@
|
|||||||
<value>Encendida</value>
|
<value>Encendida</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BacklightTimeout" xml:space="preserve">
|
<data name="BacklightTimeout" xml:space="preserve">
|
||||||
<value>Apagar retroiluminación con batería (s.)</value>
|
<value>Apagar retroiluminación con batería (segundos)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Balanced" xml:space="preserve">
|
<data name="Balanced" xml:space="preserve">
|
||||||
<value>Equilibrado</value>
|
<value>Equilibrado</value>
|
||||||
@@ -357,6 +357,9 @@
|
|||||||
<data name="Multizone" xml:space="preserve">
|
<data name="Multizone" xml:space="preserve">
|
||||||
<value>Multizona</value>
|
<value>Multizona</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MuteMic" xml:space="preserve">
|
||||||
|
<value>Silenciar micrófono</value>
|
||||||
|
</data>
|
||||||
<data name="OpenGHelper" xml:space="preserve">
|
<data name="OpenGHelper" xml:space="preserve">
|
||||||
<value>Abrir ventana G-Helper</value>
|
<value>Abrir ventana G-Helper</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -450,9 +453,15 @@
|
|||||||
<data name="VersionLabel" xml:space="preserve">
|
<data name="VersionLabel" xml:space="preserve">
|
||||||
<value>Versión</value>
|
<value>Versión</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="VolumeDown" xml:space="preserve">
|
||||||
|
<value>Bajar volumen</value>
|
||||||
|
</data>
|
||||||
<data name="VolumeMute" xml:space="preserve">
|
<data name="VolumeMute" xml:space="preserve">
|
||||||
<value>Silenciar volumen</value>
|
<value>Silenciar volumen</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="VolumeUp" xml:space="preserve">
|
||||||
|
<value>Subir volumen</value>
|
||||||
|
</data>
|
||||||
<data name="WindowTop" xml:space="preserve">
|
<data name="WindowTop" xml:space="preserve">
|
||||||
<value>Mantener aplicación siempre visible</value>
|
<value>Mantener aplicación siempre visible</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -1,5 +1,64 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<root>
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
@@ -59,13 +118,13 @@
|
|||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<data name="ACPIError" xml:space="preserve">
|
<data name="ACPIError" xml:space="preserve">
|
||||||
<value>Connexion impossible avec ASUS ACPI. L’application ne peut fonctionner sans. Veuillez installer Asus System Control Interface.</value>
|
<value>Connexion impossible avec ASUS ACPI. L'application ne peut fonctionner sans. Veuillez installer Asus System Control Interface.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AlertDGPU" xml:space="preserve">
|
<data name="AlertDGPU" xml:space="preserve">
|
||||||
<value>Le GPU semble être surchargé, voulez vous le désactiver ?</value>
|
<value>Le GPU semble être surchargé, voulez vous le désactiver ?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AlertDGPUTitle" xml:space="preserve">
|
<data name="AlertDGPUTitle" xml:space="preserve">
|
||||||
<value>Mode Économique</value>
|
<value>Mode Éco</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AlertUltimateOff" xml:space="preserve">
|
<data name="AlertUltimateOff" xml:space="preserve">
|
||||||
<value>Désactiver le Mode Ultime requiert un redémarrage</value>
|
<value>Désactiver le Mode Ultime requiert un redémarrage</value>
|
||||||
@@ -77,28 +136,28 @@
|
|||||||
<value>Redémarrer maintenant ?</value>
|
<value>Redémarrer maintenant ?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AnimationSpeed" xml:space="preserve">
|
<data name="AnimationSpeed" xml:space="preserve">
|
||||||
<value>Vitesse d’animation</value>
|
<value>Vitesse de l'animation</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AnimeMatrix" xml:space="preserve">
|
<data name="AnimeMatrix" xml:space="preserve">
|
||||||
<value>Anime Matrix</value>
|
<value>Anime Matrix</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AppAlreadyRunning" xml:space="preserve">
|
<data name="AppAlreadyRunning" xml:space="preserve">
|
||||||
<value>L’application est déjà en cours d’éxecution</value>
|
<value>L'application est déjà en cours d'exécution</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AppAlreadyRunningText" xml:space="preserve">
|
<data name="AppAlreadyRunningText" xml:space="preserve">
|
||||||
<value>G-Helper est déjà en cours d'exécution. Vérifiez la barre d'état du système</value>
|
<value>G-Helper est déjà en cours d'exécution. Vérifiez la barre d'état système.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ApplyFanCurve" xml:space="preserve">
|
<data name="ApplyFanCurve" xml:space="preserve">
|
||||||
<value>Appliquer la courbe de ventilateur personnalisée</value>
|
<value>Appliquer la courbe</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ApplyPowerLimits" xml:space="preserve">
|
<data name="ApplyPowerLimits" xml:space="preserve">
|
||||||
<value>Appliquer les limites de performance</value>
|
<value>Appliquer les limites</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||||
<value>Ajuster automatiquement les modes de Performance Windows</value>
|
<value>Ajustement auto des modes de gestion alim. Windows</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraBreathe" xml:space="preserve">
|
<data name="AuraBreathe" xml:space="preserve">
|
||||||
<value>Respiration</value>
|
<value>Pulsation</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraColorCycle" xml:space="preserve">
|
<data name="AuraColorCycle" xml:space="preserve">
|
||||||
<value>Cycle de couleur</value>
|
<value>Cycle de couleur</value>
|
||||||
@@ -125,19 +184,25 @@
|
|||||||
<value>Automatique</value>
|
<value>Automatique</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutoRefreshTooltip" xml:space="preserve">
|
<data name="AutoRefreshTooltip" xml:space="preserve">
|
||||||
<value>Limiter le rafraîchissement de l’écran à 60Hz pour économiser de la batterie, et retour à la normal en chargement</value>
|
<value>Limite à 60 Hz pour éco. batterie, valeur normale sur secteur</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Awake" xml:space="preserve">
|
<data name="Awake" xml:space="preserve">
|
||||||
<value>Éveillé</value>
|
<value>Allumé</value>
|
||||||
|
</data>
|
||||||
|
<data name="BacklightTimeout" xml:space="preserve">
|
||||||
|
<value>Délai (secondes) avant extinction rétroéclairage</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Balanced" xml:space="preserve">
|
<data name="Balanced" xml:space="preserve">
|
||||||
<value>Balancé</value>
|
<value>Équilibré</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||||
<value>Limite de charge de la batterie</value>
|
<value>Limite de charge </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Boot" xml:space="preserve">
|
<data name="Boot" xml:space="preserve">
|
||||||
<value>Au lancement</value>
|
<value>Au démarrage</value>
|
||||||
|
</data>
|
||||||
|
<data name="Brightness" xml:space="preserve">
|
||||||
|
<value>Luminosité</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Color" xml:space="preserve">
|
<data name="Color" xml:space="preserve">
|
||||||
<value>Couleur</value>
|
<value>Couleur</value>
|
||||||
@@ -152,25 +217,25 @@
|
|||||||
<value>Par défaut</value>
|
<value>Par défaut</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DisableOverdrive" xml:space="preserve">
|
<data name="DisableOverdrive" xml:space="preserve">
|
||||||
<value>Désactiver l’Overdrive de l’Écran</value>
|
<value>Désactiver l'overdrive de l'écran</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Discharging" xml:space="preserve">
|
<data name="Discharging" xml:space="preserve">
|
||||||
<value>En déchargement</value>
|
<value>Taux décharge </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DownloadUpdate" xml:space="preserve">
|
<data name="DownloadUpdate" xml:space="preserve">
|
||||||
<value>Télécharger la mise à jour</value>
|
<value>Télécharger la mise à jour</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EcoGPUTooltip" xml:space="preserve">
|
<data name="EcoGPUTooltip" xml:space="preserve">
|
||||||
<value>Désactive le dGPU pour économiser la batterie</value>
|
<value>Désactive le dGPU pour préserver la batterie</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EcoMode" xml:space="preserve">
|
<data name="EcoMode" xml:space="preserve">
|
||||||
<value>Économique</value>
|
<value>Éco</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Extra" xml:space="preserve">
|
<data name="Extra" xml:space="preserve">
|
||||||
<value>Aditionnel</value>
|
<value>+ d'options</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExtraSettings" xml:space="preserve">
|
<data name="ExtraSettings" xml:space="preserve">
|
||||||
<value>Paramètres additionnels</value>
|
<value>Paramètres supplémentaires</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FactoryDefaults" xml:space="preserve">
|
<data name="FactoryDefaults" xml:space="preserve">
|
||||||
<value>Paramètres d'usine</value>
|
<value>Paramètres d'usine</value>
|
||||||
@@ -179,37 +244,55 @@
|
|||||||
<value>Courbes des ventilateurs</value>
|
<value>Courbes des ventilateurs</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FanProfileCPU" xml:space="preserve">
|
<data name="FanProfileCPU" xml:space="preserve">
|
||||||
<value>Profil de ventilateur CPU</value>
|
<value>Profil du ventilateur CPU</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FanProfileGPU" xml:space="preserve">
|
<data name="FanProfileGPU" xml:space="preserve">
|
||||||
<value>Profil de ventilateur GPU</value>
|
<value>Profil du ventilateur GPU</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FanProfileMid" xml:space="preserve">
|
<data name="FanProfileMid" xml:space="preserve">
|
||||||
<value>Profil de ventilateur central</value>
|
<value>Profil du ventilateur central</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FanProfiles" xml:space="preserve">
|
<data name="FanProfiles" xml:space="preserve">
|
||||||
<value>Profil des ventilateurs </value>
|
<value>Profil</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FansAndPower" xml:space="preserve">
|
<data name="FansAndPower" xml:space="preserve">
|
||||||
<value>Ventilateurs et Puissance</value>
|
<value>Ventilateurs + Puissance</value>
|
||||||
|
</data>
|
||||||
|
<data name="FanSpeed" xml:space="preserve">
|
||||||
|
<value>Vent: </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FansPower" xml:space="preserve">
|
<data name="FansPower" xml:space="preserve">
|
||||||
<value>Ventilateurs + Puissance</value>
|
<value>Ventilateurs + Puissance</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="GPUBoost" xml:space="preserve">
|
||||||
|
<value>Dynamic Boost</value>
|
||||||
|
</data>
|
||||||
<data name="GPUChanging" xml:space="preserve">
|
<data name="GPUChanging" xml:space="preserve">
|
||||||
<value>Changement</value>
|
<value>Changement</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="GPUCoreClockOffset" xml:space="preserve">
|
||||||
|
<value>Ajustement fréq. de base</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUMemoryClockOffset" xml:space="preserve">
|
||||||
|
<value>Ajustement fréq. mémoire</value>
|
||||||
|
</data>
|
||||||
<data name="GPUMode" xml:space="preserve">
|
<data name="GPUMode" xml:space="preserve">
|
||||||
<value>Mode de GPU</value>
|
<value>Mode GPU </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GPUModeEco" xml:space="preserve">
|
<data name="GPUModeEco" xml:space="preserve">
|
||||||
<value>Seulement iGPU</value>
|
<value>iGPU uniquement</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GPUModeStandard" xml:space="preserve">
|
<data name="GPUModeStandard" xml:space="preserve">
|
||||||
<value>iGPU + dGPU</value>
|
<value>iGPU + dGPU</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GPUModeUltimate" xml:space="preserve">
|
<data name="GPUModeUltimate" xml:space="preserve">
|
||||||
<value>Exclusivement dGPU</value>
|
<value>dGPU exclusif</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUSettings" xml:space="preserve">
|
||||||
|
<value>Paramètres du GPU</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUTempTarget" xml:space="preserve">
|
||||||
|
<value>Température cible</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="KeyBindings" xml:space="preserve">
|
<data name="KeyBindings" xml:space="preserve">
|
||||||
<value>Raccourcis clavier</value>
|
<value>Raccourcis clavier</value>
|
||||||
@@ -218,16 +301,28 @@
|
|||||||
<value>Clavier</value>
|
<value>Clavier</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="KeyboardAuto" xml:space="preserve">
|
<data name="KeyboardAuto" xml:space="preserve">
|
||||||
<value>Baisser la luminosité du rétroéclairage sur batterie et retour à la normal en charge</value>
|
<value>Réduire rétroéclairage sur batterie et mode normal sur secteur</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="KeyboardBacklight" xml:space="preserve">
|
<data name="LaptopBacklight" xml:space="preserve">
|
||||||
<value>Rétroéclairage du clavier</value>
|
<value>Rétroéclairage de l'ordinateur</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LaptopKeyboard" xml:space="preserve">
|
<data name="LaptopKeyboard" xml:space="preserve">
|
||||||
<value>Clavier de l’ordinateur</value>
|
<value>Clavier de l'ordinateur</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LaptopScreen" xml:space="preserve">
|
<data name="LaptopScreen" xml:space="preserve">
|
||||||
<value>Écran de l’ordinateur</value>
|
<value>Écran de l'ordinateur </value>
|
||||||
|
</data>
|
||||||
|
<data name="Lid" xml:space="preserve">
|
||||||
|
<value>Capot</value>
|
||||||
|
</data>
|
||||||
|
<data name="Lightbar" xml:space="preserve">
|
||||||
|
<value>Barre lumineuse</value>
|
||||||
|
</data>
|
||||||
|
<data name="Logo" xml:space="preserve">
|
||||||
|
<value>Logo</value>
|
||||||
|
</data>
|
||||||
|
<data name="MatrixAudio" xml:space="preserve">
|
||||||
|
<value>Visualiseur Audio</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MatrixBanner" xml:space="preserve">
|
<data name="MatrixBanner" xml:space="preserve">
|
||||||
<value>Bannière binaire</value>
|
<value>Bannière binaire</value>
|
||||||
@@ -251,25 +346,31 @@
|
|||||||
<value>Éteint</value>
|
<value>Éteint</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MatrixPicture" xml:space="preserve">
|
<data name="MatrixPicture" xml:space="preserve">
|
||||||
<value>Image</value>
|
<value>Images</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MaxRefreshTooltip" xml:space="preserve">
|
<data name="MaxRefreshTooltip" xml:space="preserve">
|
||||||
<value>Rafraichissement maximum pour baisser la latance</value>
|
<value>Rafraîchissement maximum, faible latence</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MinRefreshTooltip" xml:space="preserve">
|
<data name="MinRefreshTooltip" xml:space="preserve">
|
||||||
<value>Rafraichissement à 60Hz pour économiser de la batterie</value>
|
<value>Rafraichîssement 60 Hz pour économiser de la batterie</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Multizone" xml:space="preserve">
|
<data name="Multizone" xml:space="preserve">
|
||||||
<value>Multizone</value>
|
<value>Multi-zone</value>
|
||||||
|
</data>
|
||||||
|
<data name="MuteMic" xml:space="preserve">
|
||||||
|
<value>Désactiver le micro</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OpenGHelper" xml:space="preserve">
|
<data name="OpenGHelper" xml:space="preserve">
|
||||||
<value>Ouvrir la fenêtre G-Helper</value>
|
<value>Ouvrir G-Helper</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Optimized" xml:space="preserve">
|
<data name="Optimized" xml:space="preserve">
|
||||||
<value>Optimizé</value>
|
<value>Optimisé</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OptimizedGPUTooltip" xml:space="preserve">
|
<data name="OptimizedGPUTooltip" xml:space="preserve">
|
||||||
<value>Passer en Économique sur batterie et sur Standard en chargement</value>
|
<value>Éco sur batterie, bascule vers Standard sur secteur</value>
|
||||||
|
</data>
|
||||||
|
<data name="OptimizedUSBC" xml:space="preserve">
|
||||||
|
<value>Garder le GPU désactivé lorsque branché via USB-C en mode Optimisé</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Other" xml:space="preserve">
|
<data name="Other" xml:space="preserve">
|
||||||
<value>Autre</value>
|
<value>Autre</value>
|
||||||
@@ -284,34 +385,37 @@
|
|||||||
<value>Image / Gif</value>
|
<value>Image / Gif</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PlayPause" xml:space="preserve">
|
<data name="PlayPause" xml:space="preserve">
|
||||||
<value>Reproduire / Pause</value>
|
<value>Lecture / Pause</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PowerLimits" xml:space="preserve">
|
<data name="PowerLimits" xml:space="preserve">
|
||||||
<value>Limites de puissance (PPT)</value>
|
<value>Limites de puissance (PPT)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PPTExperimental" xml:space="preserve">
|
<data name="PPTExperimental" xml:space="preserve">
|
||||||
<value>Limites de puissance (PPT) est une fonctionnalité expérimentale. Utilisez la avec attention et à vos risques.</value>
|
<value>Limites de puissance (PPT) est une fonctionnalité expérimentale. Faire attention, à utiliser à vos risques !</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PrintScreen" xml:space="preserve">
|
<data name="PrintScreen" xml:space="preserve">
|
||||||
<value>Capture d’Écran</value>
|
<value>Capture d'écran</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Quit" xml:space="preserve">
|
<data name="Quit" xml:space="preserve">
|
||||||
<value>Quitter</value>
|
<value>Quitter</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="RestartGPU" xml:space="preserve">
|
||||||
|
<value>Un processus utilisant le dGPU empêche le passage en mode Éco. Redémarrer le dGPU ? * Procédez à vos risques.</value>
|
||||||
|
</data>
|
||||||
<data name="RPM" xml:space="preserve">
|
<data name="RPM" xml:space="preserve">
|
||||||
<value>RPM</value>
|
<value> RPM</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RunOnStartup" xml:space="preserve">
|
<data name="RunOnStartup" xml:space="preserve">
|
||||||
<value>Executer au lancement</value>
|
<value>Exécuter au démarrage</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Shutdown" xml:space="preserve">
|
<data name="Shutdown" xml:space="preserve">
|
||||||
<value>Éteindre</value>
|
<value>Arrêter</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Silent" xml:space="preserve">
|
<data name="Silent" xml:space="preserve">
|
||||||
<value>Silencieux</value>
|
<value>Silencieux</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Sleep" xml:space="preserve">
|
<data name="Sleep" xml:space="preserve">
|
||||||
<value>En veille</value>
|
<value>Veille</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="StandardGPUTooltip" xml:space="preserve">
|
<data name="StandardGPUTooltip" xml:space="preserve">
|
||||||
<value>Active le dGPU pour une utilisation standard</value>
|
<value>Active le dGPU pour une utilisation standard</value>
|
||||||
@@ -323,7 +427,13 @@
|
|||||||
<value>Erreur au lancement</value>
|
<value>Erreur au lancement</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ToggleAura" xml:space="preserve">
|
<data name="ToggleAura" xml:space="preserve">
|
||||||
<value>Basculer Aura</value>
|
<value>Activer Aura</value>
|
||||||
|
</data>
|
||||||
|
<data name="ToggleMiniled" xml:space="preserve">
|
||||||
|
<value>Activer Miniled (si supporté)</value>
|
||||||
|
</data>
|
||||||
|
<data name="ToggleScreen" xml:space="preserve">
|
||||||
|
<value>Allumer l'écran</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>Turbo</value>
|
<value>Turbo</value>
|
||||||
@@ -335,66 +445,24 @@
|
|||||||
<value>Éteindre sur batterie</value>
|
<value>Éteindre sur batterie</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UltimateGPUTooltip" xml:space="preserve">
|
<data name="UltimateGPUTooltip" xml:space="preserve">
|
||||||
<value>Redirige l’écran de l’ordinateur sur le dGPU pour maximiser le nombre de FPS</value>
|
<value>Redirige l'écran du portable vers le dGPU, maximisation taux FPS </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UltimateMode" xml:space="preserve">
|
<data name="UltimateMode" xml:space="preserve">
|
||||||
<value>Ultimate</value>
|
<value>Ultime</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VersionLabel" xml:space="preserve">
|
<data name="VersionLabel" xml:space="preserve">
|
||||||
<value>Version</value>
|
<value>Version </value>
|
||||||
|
</data>
|
||||||
|
<data name="VolumeDown" xml:space="preserve">
|
||||||
|
<value>Vol-</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VolumeMute" xml:space="preserve">
|
<data name="VolumeMute" xml:space="preserve">
|
||||||
<value>Mettre en sourdine</value>
|
<value>Mettre en sourdine</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="VolumeUp" xml:space="preserve">
|
||||||
|
<value>Vol+</value>
|
||||||
|
</data>
|
||||||
<data name="WindowTop" xml:space="preserve">
|
<data name="WindowTop" xml:space="preserve">
|
||||||
<value>Garder l’application au premier plan</value>
|
<value>Maintenir la fenêtre au premier plan</value>
|
||||||
</data>
|
|
||||||
<data name="Brightness" xml:space="preserve">
|
|
||||||
<value>Luminosité</value>
|
|
||||||
</data>
|
|
||||||
<data name="FanSpeed" xml:space="preserve">
|
|
||||||
<value>Ventilateurs :</value>
|
|
||||||
</data>
|
|
||||||
<data name="GPUBoost" xml:space="preserve">
|
|
||||||
<value>Boost Dynamique</value>
|
|
||||||
</data>
|
|
||||||
<data name="GPUCoreClockOffset" xml:space="preserve">
|
|
||||||
<value>Augmentation de la fréquence de base</value>
|
|
||||||
</data>
|
|
||||||
<data name="GPUMemoryClockOffset" xml:space="preserve">
|
|
||||||
<value>Augmentation de la fréquence de la mémoire</value>
|
|
||||||
</data>
|
|
||||||
<data name="GPUSettings" xml:space="preserve">
|
|
||||||
<value>Paramêtres de GPU</value>
|
|
||||||
</data>
|
|
||||||
<data name="GPUTempTarget" xml:space="preserve">
|
|
||||||
<value>Température ciblée</value>
|
|
||||||
</data>
|
|
||||||
<data name="LaptopBacklight" xml:space="preserve">
|
|
||||||
<value>Rétroéclairage de l’ordinateur</value>
|
|
||||||
</data>
|
|
||||||
<data name="Lid" xml:space="preserve">
|
|
||||||
<value>Capot</value>
|
|
||||||
</data>
|
|
||||||
<data name="Lightbar" xml:space="preserve">
|
|
||||||
<value>Barre de lumière</value>
|
|
||||||
</data>
|
|
||||||
<data name="Logo" xml:space="preserve">
|
|
||||||
<value>Logo</value>
|
|
||||||
</data>
|
|
||||||
<data name="OptimizedUSBC" xml:space="preserve">
|
|
||||||
<value>Garder le GPU désactivé en chargement via USB-C dans le mode Optimisé</value>
|
|
||||||
</data>
|
|
||||||
<data name="RestartGPU" xml:space="preserve">
|
|
||||||
<value>Un processus utilise le dGPU est empêche le passage en mode Économique. Redémarrer le dGPU dans le gestionnaire de périphérique ? * Veuillez procéder à vos risques</value>
|
|
||||||
</data>
|
|
||||||
<data name="ToggleMiniled" xml:space="preserve">
|
|
||||||
<value>Basculer sur Miniled (si supporté)</value>
|
|
||||||
</data>
|
|
||||||
<data name="ToggleScreen" xml:space="preserve">
|
|
||||||
<value>Basculer d’écran</value>
|
|
||||||
</data>
|
|
||||||
<data name="BacklightTimeout" xml:space="preserve">
|
|
||||||
<value>Nombre de secondes avant d’éteindre le rétroéclairage sur batterie</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -190,7 +190,10 @@
|
|||||||
<value>Awake</value>
|
<value>Awake</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BacklightTimeout" xml:space="preserve">
|
<data name="BacklightTimeout" xml:space="preserve">
|
||||||
<value>Seconds to turn off backlight on battery</value>
|
<value>Backlight timeout on battery</value>
|
||||||
|
</data>
|
||||||
|
<data name="BacklightTimeoutPlugged" xml:space="preserve">
|
||||||
|
<value>Backlight timeout when plugged (0 - always on)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Balanced" xml:space="preserve">
|
<data name="Balanced" xml:space="preserve">
|
||||||
<value>Balanced</value>
|
<value>Balanced</value>
|
||||||
@@ -259,7 +262,7 @@
|
|||||||
<value>Fans and Power</value>
|
<value>Fans and Power</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FanSpeed" xml:space="preserve">
|
<data name="FanSpeed" xml:space="preserve">
|
||||||
<value> Fan: </value>
|
<value>Fan: </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FansPower" xml:space="preserve">
|
<data name="FansPower" xml:space="preserve">
|
||||||
<value>Fans + Power</value>
|
<value>Fans + Power</value>
|
||||||
|
|||||||
@@ -189,6 +189,12 @@
|
|||||||
<data name="Awake" xml:space="preserve">
|
<data name="Awake" xml:space="preserve">
|
||||||
<value>Робота</value>
|
<value>Робота</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BacklightTimeout" xml:space="preserve">
|
||||||
|
<value>Тайм-аут підсвітки на батареї</value>
|
||||||
|
</data>
|
||||||
|
<data name="BacklightTimeoutPlugged" xml:space="preserve">
|
||||||
|
<value>Тайм-аут підсвітки на зарядці (0 - завжди ввімкнено)</value>
|
||||||
|
</data>
|
||||||
<data name="Balanced" xml:space="preserve">
|
<data name="Balanced" xml:space="preserve">
|
||||||
<value>Баланс</value>
|
<value>Баланс</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -324,6 +330,9 @@
|
|||||||
<data name="Multizone" xml:space="preserve">
|
<data name="Multizone" xml:space="preserve">
|
||||||
<value>Мультизони</value>
|
<value>Мультизони</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MuteMic" xml:space="preserve">
|
||||||
|
<value>Вимкнути мікрофон</value>
|
||||||
|
</data>
|
||||||
<data name="OpenGHelper" xml:space="preserve">
|
<data name="OpenGHelper" xml:space="preserve">
|
||||||
<value>Відкрити вікно G-Helper</value>
|
<value>Відкрити вікно G-Helper</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -333,6 +342,9 @@
|
|||||||
<data name="OptimizedGPUTooltip" xml:space="preserve">
|
<data name="OptimizedGPUTooltip" xml:space="preserve">
|
||||||
<value>Вмикає Еко на батареї та Стандартний на зарядці</value>
|
<value>Вмикає Еко на батареї та Стандартний на зарядці</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="OptimizedUSBC" xml:space="preserve">
|
||||||
|
<value>Вимикати GPU на зарядці від USB-C в режимі Авто</value>
|
||||||
|
</data>
|
||||||
<data name="Other" xml:space="preserve">
|
<data name="Other" xml:space="preserve">
|
||||||
<value>Інше</value>
|
<value>Інше</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -387,6 +399,12 @@
|
|||||||
<data name="ToggleAura" xml:space="preserve">
|
<data name="ToggleAura" xml:space="preserve">
|
||||||
<value>Аура</value>
|
<value>Аура</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ToggleMiniled" xml:space="preserve">
|
||||||
|
<value>Міні-лед (якщо підтримується)</value>
|
||||||
|
</data>
|
||||||
|
<data name="ToggleScreen" xml:space="preserve">
|
||||||
|
<value>Вимкнути екран</value>
|
||||||
|
</data>
|
||||||
<data name="Turbo" xml:space="preserve">
|
<data name="Turbo" xml:space="preserve">
|
||||||
<value>Турбо</value>
|
<value>Турбо</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -405,9 +423,15 @@
|
|||||||
<data name="VersionLabel" xml:space="preserve">
|
<data name="VersionLabel" xml:space="preserve">
|
||||||
<value>Версія</value>
|
<value>Версія</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="VolumeDown" xml:space="preserve">
|
||||||
|
<value>Зменшення гучності</value>
|
||||||
|
</data>
|
||||||
<data name="VolumeMute" xml:space="preserve">
|
<data name="VolumeMute" xml:space="preserve">
|
||||||
<value>Вимкнення звуку</value>
|
<value>Вимкнення звуку</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="VolumeUp" xml:space="preserve">
|
||||||
|
<value>Збільшення гучності</value>
|
||||||
|
</data>
|
||||||
<data name="WindowTop" xml:space="preserve">
|
<data name="WindowTop" xml:space="preserve">
|
||||||
<value>Тримати вікно завжди зверху</value>
|
<value>Тримати вікно завжди зверху</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
468
app/Properties/Strings.vi.resx
Normal file
468
app/Properties/Strings.vi.resx
Normal file
@@ -0,0 +1,468 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="ACPIError" xml:space="preserve">
|
||||||
|
<value>Không thể kết nối đến ASUS ACPI. Chương trình cần nó để có thể hoạt động. Hãy thử cài lại Asus System Control Interface</value>
|
||||||
|
</data>
|
||||||
|
<data name="AlertDGPU" xml:space="preserve">
|
||||||
|
<value>Có vẻ như GPU rời đang được sử dụng nhiều, tắt nó?</value>
|
||||||
|
</data>
|
||||||
|
<data name="AlertDGPUTitle" xml:space="preserve">
|
||||||
|
<value>Chế độ Tiết kiệm</value>
|
||||||
|
</data>
|
||||||
|
<data name="AlertUltimateOff" xml:space="preserve">
|
||||||
|
<value>Chuyển sang Chế độ Ultimate cần phải khởi động lại</value>
|
||||||
|
</data>
|
||||||
|
<data name="AlertUltimateOn" xml:space="preserve">
|
||||||
|
<value>Chế độ Ultimate yêu cầu phải khởi động lại</value>
|
||||||
|
</data>
|
||||||
|
<data name="AlertUltimateTitle" xml:space="preserve">
|
||||||
|
<value>Khởi động lại ngay?</value>
|
||||||
|
</data>
|
||||||
|
<data name="AnimationSpeed" xml:space="preserve">
|
||||||
|
<value>Tốc độ</value>
|
||||||
|
</data>
|
||||||
|
<data name="AnimeMatrix" xml:space="preserve">
|
||||||
|
<value>AniMe Matrix</value>
|
||||||
|
</data>
|
||||||
|
<data name="AppAlreadyRunning" xml:space="preserve">
|
||||||
|
<value>Chương trình đã chạy</value>
|
||||||
|
</data>
|
||||||
|
<data name="AppAlreadyRunningText" xml:space="preserve">
|
||||||
|
<value>G-Helper đã chạy. Hãy kiểm tra khay hệ thống</value>
|
||||||
|
</data>
|
||||||
|
<data name="ApplyFanCurve" xml:space="preserve">
|
||||||
|
<value>Áp dụng Chế độ quạt tuỳ chỉnh</value>
|
||||||
|
</data>
|
||||||
|
<data name="ApplyPowerLimits" xml:space="preserve">
|
||||||
|
<value>Áp dụng Giới hạn nguồn</value>
|
||||||
|
</data>
|
||||||
|
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||||
|
<value>Tự động điều chỉnh Chế độ nguồn của Windows</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraBreathe" xml:space="preserve">
|
||||||
|
<value>Hơi thở</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraColorCycle" xml:space="preserve">
|
||||||
|
<value>Chuyển màu</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraFast" xml:space="preserve">
|
||||||
|
<value>Nhanh</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraNormal" xml:space="preserve">
|
||||||
|
<value>Bình thường</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraRainbow" xml:space="preserve">
|
||||||
|
<value>Cầu vồng</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraSlow" xml:space="preserve">
|
||||||
|
<value>Chậm</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraStatic" xml:space="preserve">
|
||||||
|
<value>Tĩnh</value>
|
||||||
|
</data>
|
||||||
|
<data name="AuraStrobe" xml:space="preserve">
|
||||||
|
<value>Nhấp nháy</value>
|
||||||
|
</data>
|
||||||
|
<data name="AutoMode" xml:space="preserve">
|
||||||
|
<value>Tự động</value>
|
||||||
|
</data>
|
||||||
|
<data name="AutoRefreshTooltip" xml:space="preserve">
|
||||||
|
<value>Chuyển về 60Hz để tiết kiệm pin, và chuyển lại tần số quét cao khi cắm sạc</value>
|
||||||
|
</data>
|
||||||
|
<data name="Awake" xml:space="preserve">
|
||||||
|
<value>Đang bật</value>
|
||||||
|
</data>
|
||||||
|
<data name="BacklightTimeout" xml:space="preserve">
|
||||||
|
<value>Số giây để tắt đèn nền bàn phím(khi dùng pin)</value>
|
||||||
|
</data>
|
||||||
|
<data name="Balanced" xml:space="preserve">
|
||||||
|
<value>Cân bằng</value>
|
||||||
|
</data>
|
||||||
|
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||||
|
<value>Giới hạn sạc</value>
|
||||||
|
</data>
|
||||||
|
<data name="Boot" xml:space="preserve">
|
||||||
|
<value>Khởi động</value>
|
||||||
|
</data>
|
||||||
|
<data name="Brightness" xml:space="preserve">
|
||||||
|
<value>Độ sáng</value>
|
||||||
|
</data>
|
||||||
|
<data name="Color" xml:space="preserve">
|
||||||
|
<value>Màu</value>
|
||||||
|
</data>
|
||||||
|
<data name="CPUBoost" xml:space="preserve">
|
||||||
|
<value>Tăng tốc CPU</value>
|
||||||
|
</data>
|
||||||
|
<data name="Custom" xml:space="preserve">
|
||||||
|
<value>Tuỳ chỉnh</value>
|
||||||
|
</data>
|
||||||
|
<data name="Default" xml:space="preserve">
|
||||||
|
<value>Mặc định</value>
|
||||||
|
</data>
|
||||||
|
<data name="DisableOverdrive" xml:space="preserve">
|
||||||
|
<value>Tắt Overdrive</value>
|
||||||
|
</data>
|
||||||
|
<data name="Discharging" xml:space="preserve">
|
||||||
|
<value>Đang không sạc</value>
|
||||||
|
</data>
|
||||||
|
<data name="DownloadUpdate" xml:space="preserve">
|
||||||
|
<value>Tải xuống Bản cập nhật</value>
|
||||||
|
</data>
|
||||||
|
<data name="EcoGPUTooltip" xml:space="preserve">
|
||||||
|
<value>Tắt GPU rời để tiết kiệm pin</value>
|
||||||
|
</data>
|
||||||
|
<data name="EcoMode" xml:space="preserve">
|
||||||
|
<value>Tiết kiệm</value>
|
||||||
|
</data>
|
||||||
|
<data name="Extra" xml:space="preserve">
|
||||||
|
<value>Thêm</value>
|
||||||
|
</data>
|
||||||
|
<data name="ExtraSettings" xml:space="preserve">
|
||||||
|
<value>Cài đặt bổ sung</value>
|
||||||
|
</data>
|
||||||
|
<data name="FactoryDefaults" xml:space="preserve">
|
||||||
|
<value>Đặt về Mặc định</value>
|
||||||
|
</data>
|
||||||
|
<data name="FanCurves" xml:space="preserve">
|
||||||
|
<value>Chế độ Quạt</value>
|
||||||
|
</data>
|
||||||
|
<data name="FanProfileCPU" xml:space="preserve">
|
||||||
|
<value>Cấu hình Quạt CPU</value>
|
||||||
|
</data>
|
||||||
|
<data name="FanProfileGPU" xml:space="preserve">
|
||||||
|
<value>Cấu hình Quạt GPU</value>
|
||||||
|
</data>
|
||||||
|
<data name="FanProfileMid" xml:space="preserve">
|
||||||
|
<value>Cấu hình Quạt giữa</value>
|
||||||
|
</data>
|
||||||
|
<data name="FanProfiles" xml:space="preserve">
|
||||||
|
<value>Cấu hình Quạt</value>
|
||||||
|
</data>
|
||||||
|
<data name="FansAndPower" xml:space="preserve">
|
||||||
|
<value>Quạt và Nguồn điện</value>
|
||||||
|
</data>
|
||||||
|
<data name="FanSpeed" xml:space="preserve">
|
||||||
|
<value> Quạt: </value>
|
||||||
|
</data>
|
||||||
|
<data name="FansPower" xml:space="preserve">
|
||||||
|
<value>Quạt + Nguồn</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUBoost" xml:space="preserve">
|
||||||
|
<value>Dynamic Boost</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUChanging" xml:space="preserve">
|
||||||
|
<value>Đang đổi GPU</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUCoreClockOffset" xml:space="preserve">
|
||||||
|
<value>Bù trừ Tốc độ Nhân GPU</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUMemoryClockOffset" xml:space="preserve">
|
||||||
|
<value>Bù trừ Tốc độ RAM GPU</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUMode" xml:space="preserve">
|
||||||
|
<value>Chế độ GPU</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUModeEco" xml:space="preserve">
|
||||||
|
<value>Chỉ GPU tích hợp</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUModeStandard" xml:space="preserve">
|
||||||
|
<value>GPU tích hợp + GPU rời</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUModeUltimate" xml:space="preserve">
|
||||||
|
<value>Độc quyền của GPU rời</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUSettings" xml:space="preserve">
|
||||||
|
<value>Cài đặt GPU</value>
|
||||||
|
</data>
|
||||||
|
<data name="GPUTempTarget" xml:space="preserve">
|
||||||
|
<value>Nhiệt độ đích</value>
|
||||||
|
</data>
|
||||||
|
<data name="KeyBindings" xml:space="preserve">
|
||||||
|
<value>Tổ hợp phím</value>
|
||||||
|
</data>
|
||||||
|
<data name="Keyboard" xml:space="preserve">
|
||||||
|
<value>Bàn phím</value>
|
||||||
|
</data>
|
||||||
|
<data name="KeyboardAuto" xml:space="preserve">
|
||||||
|
<value>Giảm độ sáng bàn phím khi không cắm sạc</value>
|
||||||
|
</data>
|
||||||
|
<data name="LaptopBacklight" xml:space="preserve">
|
||||||
|
<value>Độ sáng đèn nền</value>
|
||||||
|
</data>
|
||||||
|
<data name="LaptopKeyboard" xml:space="preserve">
|
||||||
|
<value>Bàn phím Laptop</value>
|
||||||
|
</data>
|
||||||
|
<data name="LaptopScreen" xml:space="preserve">
|
||||||
|
<value>Màn hình Laptop</value>
|
||||||
|
</data>
|
||||||
|
<data name="Lid" xml:space="preserve">
|
||||||
|
<value>Màn gập</value>
|
||||||
|
</data>
|
||||||
|
<data name="Lightbar" xml:space="preserve">
|
||||||
|
<value>Thanh sáng</value>
|
||||||
|
</data>
|
||||||
|
<data name="Logo" xml:space="preserve">
|
||||||
|
<value>Logo</value>
|
||||||
|
</data>
|
||||||
|
<data name="MatrixAudio" xml:space="preserve">
|
||||||
|
<value>Sóng nhạc</value>
|
||||||
|
</data>
|
||||||
|
<data name="MatrixBanner" xml:space="preserve">
|
||||||
|
<value>Nhị phân</value>
|
||||||
|
</data>
|
||||||
|
<data name="MatrixBright" xml:space="preserve">
|
||||||
|
<value>Sáng</value>
|
||||||
|
</data>
|
||||||
|
<data name="MatrixClock" xml:space="preserve">
|
||||||
|
<value>Đồng hồ</value>
|
||||||
|
</data>
|
||||||
|
<data name="MatrixDim" xml:space="preserve">
|
||||||
|
<value>Sáng mờ</value>
|
||||||
|
</data>
|
||||||
|
<data name="MatrixLogo" xml:space="preserve">
|
||||||
|
<value>Logo ROG</value>
|
||||||
|
</data>
|
||||||
|
<data name="MatrixMedium" xml:space="preserve">
|
||||||
|
<value>Vừa phải</value>
|
||||||
|
</data>
|
||||||
|
<data name="MatrixOff" xml:space="preserve">
|
||||||
|
<value>Tắt</value>
|
||||||
|
</data>
|
||||||
|
<data name="MatrixPicture" xml:space="preserve">
|
||||||
|
<value>Hình ảnh</value>
|
||||||
|
</data>
|
||||||
|
<data name="MaxRefreshTooltip" xml:space="preserve">
|
||||||
|
<value>Tốc độ làm mới tối đa để có độ trễ thấp</value>
|
||||||
|
</data>
|
||||||
|
<data name="MinRefreshTooltip" xml:space="preserve">
|
||||||
|
<value>Tốc độ làm mới 60Hz để tiết kiệm pin</value>
|
||||||
|
</data>
|
||||||
|
<data name="Multizone" xml:space="preserve">
|
||||||
|
<value>Đèn nền Đa vùng(Multi-Zone)</value>
|
||||||
|
</data>
|
||||||
|
<data name="MuteMic" xml:space="preserve">
|
||||||
|
<value>Tắt Mic</value>
|
||||||
|
</data>
|
||||||
|
<data name="OpenGHelper" xml:space="preserve">
|
||||||
|
<value>Mở cửa sổ G-Helper</value>
|
||||||
|
</data>
|
||||||
|
<data name="Optimized" xml:space="preserve">
|
||||||
|
<value>Tối ưu</value>
|
||||||
|
</data>
|
||||||
|
<data name="OptimizedGPUTooltip" xml:space="preserve">
|
||||||
|
<value>Chuyển về Chế độ Tiết kiệm khi dùng pin và Chế độ Tiêu chuẩn khi cắm sạc</value>
|
||||||
|
</data>
|
||||||
|
<data name="OptimizedUSBC" xml:space="preserve">
|
||||||
|
<value>Tắt GPU khi dùng sạc Type-C ở Chế độ Tối ưu</value>
|
||||||
|
</data>
|
||||||
|
<data name="Other" xml:space="preserve">
|
||||||
|
<value>Khác</value>
|
||||||
|
</data>
|
||||||
|
<data name="Overdrive" xml:space="preserve">
|
||||||
|
<value>Overdrive</value>
|
||||||
|
</data>
|
||||||
|
<data name="PerformanceMode" xml:space="preserve">
|
||||||
|
<value>Chế độ Hiệu suất</value>
|
||||||
|
</data>
|
||||||
|
<data name="PictureGif" xml:space="preserve">
|
||||||
|
<value>Ảnh tĩnh / Ảnh Động</value>
|
||||||
|
</data>
|
||||||
|
<data name="PlayPause" xml:space="preserve">
|
||||||
|
<value>Phát / Dừng</value>
|
||||||
|
</data>
|
||||||
|
<data name="PowerLimits" xml:space="preserve">
|
||||||
|
<value>Giới hạn Nguồn (PPT)</value>
|
||||||
|
</data>
|
||||||
|
<data name="PPTExperimental" xml:space="preserve">
|
||||||
|
<value>Giới hạn Nguồn (PPT) là tính năng thử nghiệm. Sử dụng nó cẩn thận và tự chịu mọi rủi ro!</value>
|
||||||
|
</data>
|
||||||
|
<data name="PrintScreen" xml:space="preserve">
|
||||||
|
<value>Chụp màn hình</value>
|
||||||
|
</data>
|
||||||
|
<data name="Quit" xml:space="preserve">
|
||||||
|
<value>Thoát</value>
|
||||||
|
</data>
|
||||||
|
<data name="RestartGPU" xml:space="preserve">
|
||||||
|
<value>Không thể chuyển về Chế độ Tiết kiệm do có gì đó đang dùng GPU. Khởi động lại GPU rời trong Quản lý Thiết bị? * Bạn sẽ chịu mọi rủi ro.</value>
|
||||||
|
</data>
|
||||||
|
<data name="RPM" xml:space="preserve">
|
||||||
|
<value>RPM</value>
|
||||||
|
</data>
|
||||||
|
<data name="RunOnStartup" xml:space="preserve">
|
||||||
|
<value>Chạy khi khởi động</value>
|
||||||
|
</data>
|
||||||
|
<data name="Shutdown" xml:space="preserve">
|
||||||
|
<value>Tắt nguồn</value>
|
||||||
|
</data>
|
||||||
|
<data name="Silent" xml:space="preserve">
|
||||||
|
<value>Im lặng</value>
|
||||||
|
</data>
|
||||||
|
<data name="Sleep" xml:space="preserve">
|
||||||
|
<value>Ngủ</value>
|
||||||
|
</data>
|
||||||
|
<data name="StandardGPUTooltip" xml:space="preserve">
|
||||||
|
<value>Bật GPU rời cho khi cho mức độ dùng tiêu chuẩn</value>
|
||||||
|
</data>
|
||||||
|
<data name="StandardMode" xml:space="preserve">
|
||||||
|
<value>Tiêu chuẩn</value>
|
||||||
|
</data>
|
||||||
|
<data name="StartupError" xml:space="preserve">
|
||||||
|
<value>Khởi động lỗi</value>
|
||||||
|
</data>
|
||||||
|
<data name="ToggleAura" xml:space="preserve">
|
||||||
|
<value>Bật tắt Aura</value>
|
||||||
|
</data>
|
||||||
|
<data name="ToggleMiniled" xml:space="preserve">
|
||||||
|
<value>Bật tắt Miniled(Nếu có hỗ trợ)</value>
|
||||||
|
</data>
|
||||||
|
<data name="ToggleScreen" xml:space="preserve">
|
||||||
|
<value>Bật tắt màn hình</value>
|
||||||
|
</data>
|
||||||
|
<data name="Turbo" xml:space="preserve">
|
||||||
|
<value>Turbo</value>
|
||||||
|
</data>
|
||||||
|
<data name="TurnedOff" xml:space="preserve">
|
||||||
|
<value>Đã tắt</value>
|
||||||
|
</data>
|
||||||
|
<data name="TurnOffOnBattery" xml:space="preserve">
|
||||||
|
<value>Tắt khi không cắm sạc</value>
|
||||||
|
</data>
|
||||||
|
<data name="UltimateGPUTooltip" xml:space="preserve">
|
||||||
|
<value>Định tuyến màn hình laptop đến Card rời, tối đa hóa FPS</value>
|
||||||
|
</data>
|
||||||
|
<data name="UltimateMode" xml:space="preserve">
|
||||||
|
<value>Ultimate</value>
|
||||||
|
</data>
|
||||||
|
<data name="VersionLabel" xml:space="preserve">
|
||||||
|
<value>Phiên bản</value>
|
||||||
|
</data>
|
||||||
|
<data name="VolumeDown" xml:space="preserve">
|
||||||
|
<value>Giảm âm lượng</value>
|
||||||
|
</data>
|
||||||
|
<data name="VolumeMute" xml:space="preserve">
|
||||||
|
<value>Tắt âm lượng</value>
|
||||||
|
</data>
|
||||||
|
<data name="VolumeUp" xml:space="preserve">
|
||||||
|
<value>Tăng âm lượng</value>
|
||||||
|
</data>
|
||||||
|
<data name="WindowTop" xml:space="preserve">
|
||||||
|
<value>Giữ cửa sổ ở trên cùng</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
2
app/Settings.Designer.cs
generated
2
app/Settings.Designer.cs
generated
@@ -255,7 +255,7 @@ namespace GHelper
|
|||||||
//
|
//
|
||||||
sliderBattery.Location = new Point(16, 70);
|
sliderBattery.Location = new Point(16, 70);
|
||||||
sliderBattery.Max = 100;
|
sliderBattery.Max = 100;
|
||||||
sliderBattery.Min = 50;
|
sliderBattery.Min = 40;
|
||||||
sliderBattery.Name = "sliderBattery";
|
sliderBattery.Name = "sliderBattery";
|
||||||
sliderBattery.Size = new Size(772, 40);
|
sliderBattery.Size = new Size(772, 40);
|
||||||
sliderBattery.TabIndex = 39;
|
sliderBattery.TabIndex = 39;
|
||||||
|
|||||||
192
app/Settings.cs
192
app/Settings.cs
@@ -93,8 +93,6 @@ namespace GHelper
|
|||||||
comboMatrix.DropDownClosed += ComboMatrix_SelectedValueChanged;
|
comboMatrix.DropDownClosed += ComboMatrix_SelectedValueChanged;
|
||||||
comboMatrixRunning.DropDownClosed += ComboMatrixRunning_SelectedValueChanged;
|
comboMatrixRunning.DropDownClosed += ComboMatrixRunning_SelectedValueChanged;
|
||||||
|
|
||||||
checkMatrix.CheckedChanged += CheckMatrix_CheckedChanged; ;
|
|
||||||
|
|
||||||
buttonMatrix.Click += ButtonMatrix_Click;
|
buttonMatrix.Click += ButtonMatrix_Click;
|
||||||
|
|
||||||
checkStartup.CheckedChanged += CheckStartup_CheckedChanged;
|
checkStartup.CheckedChanged += CheckStartup_CheckedChanged;
|
||||||
@@ -155,6 +153,62 @@ namespace GHelper
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void WndProc(ref Message m)
|
||||||
|
{
|
||||||
|
|
||||||
|
switch (m.Msg)
|
||||||
|
{
|
||||||
|
case NativeMethods.WM_POWERBROADCAST:
|
||||||
|
if (m.WParam == (IntPtr)NativeMethods.PBT_POWERSETTINGCHANGE)
|
||||||
|
{
|
||||||
|
var settings = (NativeMethods.POWERBROADCAST_SETTING)m.GetLParam(typeof(NativeMethods.POWERBROADCAST_SETTING));
|
||||||
|
switch (settings.Data)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
Logger.WriteLine("Monitor Power Off");
|
||||||
|
AsusUSB.ApplyBrightness(0);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
Logger.WriteLine("Monitor Power On");
|
||||||
|
Program.SetAutoModes();
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
Logger.WriteLine("Monitor Dimmed");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m.Result = (IntPtr)1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case KeyHandler.WM_HOTKEY_MSG_ID:
|
||||||
|
|
||||||
|
Keys key = (Keys)(((int)m.LParam >> 16) & 0xFFFF);
|
||||||
|
|
||||||
|
switch (key)
|
||||||
|
{
|
||||||
|
case Keys.VolumeDown:
|
||||||
|
InputDispatcher.KeyProcess("m1");
|
||||||
|
break;
|
||||||
|
case Keys.VolumeUp:
|
||||||
|
InputDispatcher.KeyProcess("m2");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (key == InputDispatcher.keyProfile) CyclePerformanceMode();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
base.WndProc(ref m);
|
||||||
|
} catch (Exception ex)
|
||||||
|
{
|
||||||
|
Debug.WriteLine(ex.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void RunToast(string text, ToastIcon? icon = null)
|
public void RunToast(string text, ToastIcon? icon = null)
|
||||||
{
|
{
|
||||||
toast.RunToast(text, icon);
|
toast.RunToast(text, icon);
|
||||||
@@ -167,36 +221,6 @@ namespace GHelper
|
|||||||
|
|
||||||
Padding padding = new Padding(15, 5, 5, 5);
|
Padding padding = new Padding(15, 5, 5, 5);
|
||||||
|
|
||||||
/*
|
|
||||||
TableLayoutPanel[] tables = { tablePerf, tableGPU };
|
|
||||||
string[] titles = { Properties.Strings.PerformanceMode, Properties.Strings.GPUMode};
|
|
||||||
|
|
||||||
int index = 0;
|
|
||||||
foreach (TableLayoutPanel table in tables)
|
|
||||||
{
|
|
||||||
|
|
||||||
var title = new ToolStripMenuItem(titles[index]);
|
|
||||||
title.Margin = padding;
|
|
||||||
title.Enabled = false;
|
|
||||||
contextMenuStrip.Items.Add(title);
|
|
||||||
|
|
||||||
foreach (Control control in table.Controls)
|
|
||||||
{
|
|
||||||
var button = control as RButton;
|
|
||||||
if (button != null && !button.Secondary && button.Enabled)
|
|
||||||
{
|
|
||||||
var menu = new ToolStripMenuItem(button.Text);
|
|
||||||
menu.Margin = padding;
|
|
||||||
menu.Checked = button.Activated;
|
|
||||||
menu.Click += delegate { button.PerformClick(); };
|
|
||||||
contextMenuStrip.Items.Add(menu);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
contextMenuStrip.Items.Add("-");
|
|
||||||
index++;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
|
|
||||||
var title = new ToolStripMenuItem(Properties.Strings.PerformanceMode);
|
var title = new ToolStripMenuItem(Properties.Strings.PerformanceMode);
|
||||||
title.Margin = padding;
|
title.Margin = padding;
|
||||||
title.Enabled = false;
|
title.Enabled = false;
|
||||||
@@ -282,8 +306,13 @@ namespace GHelper
|
|||||||
|
|
||||||
if (Program.acpi.DeviceGet(AsusACPI.GPUXG) == 1)
|
if (Program.acpi.DeviceGet(AsusACPI.GPUXG) == 1)
|
||||||
{
|
{
|
||||||
Program.acpi.DeviceSet(AsusACPI.GPUXG, 0, "GPU XGM");
|
KillGPUApps();
|
||||||
await Task.Delay(TimeSpan.FromSeconds(15));
|
DialogResult dialogResult = MessageBox.Show("Did you close all applications running on XG Mobile?", "Disabling XG Mobile", MessageBoxButtons.YesNo);
|
||||||
|
if (dialogResult == DialogResult.Yes)
|
||||||
|
{
|
||||||
|
Program.acpi.DeviceSet(AsusACPI.GPUXG, 0, "GPU XGM");
|
||||||
|
await Task.Delay(TimeSpan.FromSeconds(15));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -490,58 +519,6 @@ namespace GHelper
|
|||||||
AutoScreen();
|
AutoScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void WndProc(ref Message m)
|
|
||||||
{
|
|
||||||
|
|
||||||
switch (m.Msg)
|
|
||||||
{
|
|
||||||
case NativeMethods.WM_POWERBROADCAST:
|
|
||||||
if (m.WParam == (IntPtr)NativeMethods.PBT_POWERSETTINGCHANGE)
|
|
||||||
{
|
|
||||||
var settings = (NativeMethods.POWERBROADCAST_SETTING)m.GetLParam(typeof(NativeMethods.POWERBROADCAST_SETTING));
|
|
||||||
switch (settings.Data)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
Logger.WriteLine("Monitor Power Off");
|
|
||||||
SetBatteryChargeLimit(AppConfig.getConfig("charge_limit"));
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
Logger.WriteLine("Monitor Power On");
|
|
||||||
Program.SetAutoModes();
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
Logger.WriteLine("Monitor Dimmed");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
m.Result = (IntPtr)1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KeyHandler.WM_HOTKEY_MSG_ID:
|
|
||||||
|
|
||||||
Keys key = (Keys)(((int)m.LParam >> 16) & 0xFFFF);
|
|
||||||
|
|
||||||
switch (key)
|
|
||||||
{
|
|
||||||
case Keys.VolumeDown:
|
|
||||||
InputDispatcher.KeyProcess("m1");
|
|
||||||
break;
|
|
||||||
case Keys.VolumeUp:
|
|
||||||
InputDispatcher.KeyProcess("m2");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
if (key == InputDispatcher.keyProfile) CyclePerformanceMode();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
base.WndProc(ref m);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void CheckStartup_CheckedChanged(object? sender, EventArgs e)
|
private void CheckStartup_CheckedChanged(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
@@ -716,7 +693,7 @@ namespace GHelper
|
|||||||
|
|
||||||
matrix = new AniMatrix();
|
matrix = new AniMatrix();
|
||||||
|
|
||||||
if (!AniMatrix.IsValid)
|
if (!matrix.IsValid)
|
||||||
{
|
{
|
||||||
panelMatrix.Visible = false;
|
panelMatrix.Visible = false;
|
||||||
return;
|
return;
|
||||||
@@ -729,7 +706,7 @@ namespace GHelper
|
|||||||
comboMatrixRunning.SelectedIndex = (running != -1) ? Math.Min(running, comboMatrixRunning.Items.Count - 1) : 0;
|
comboMatrixRunning.SelectedIndex = (running != -1) ? Math.Min(running, comboMatrixRunning.Items.Count - 1) : 0;
|
||||||
|
|
||||||
checkMatrix.Checked = (AppConfig.getConfig("matrix_auto") == 1);
|
checkMatrix.Checked = (AppConfig.getConfig("matrix_auto") == 1);
|
||||||
|
checkMatrix.CheckedChanged += CheckMatrix_CheckedChanged;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -953,10 +930,11 @@ namespace GHelper
|
|||||||
labelBattery.Text = battery;
|
labelBattery.Text = battery;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
string trayTip = "CPU" + cpuTemp + HardwareControl.cpuFan;
|
||||||
|
if (gpuTemp.Length > 0) trayTip += "\nGPU" + gpuTemp + HardwareControl.gpuFan;
|
||||||
|
if (battery.Length > 0) trayTip += "\n" + battery;
|
||||||
|
|
||||||
Program.trayIcon.Text = "CPU" + cpuTemp + HardwareControl.cpuFan + "\n"
|
Program.trayIcon.Text = trayTip;
|
||||||
+ "GPU" + gpuTemp + HardwareControl.gpuFan +
|
|
||||||
((battery.Length > 0) ? ("\n" + battery) : "");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1261,13 +1239,12 @@ namespace GHelper
|
|||||||
{
|
{
|
||||||
AsusUSB.Init();
|
AsusUSB.Init();
|
||||||
|
|
||||||
if (AppConfig.getConfig("keyboard_auto") != 1) return;
|
int backlight = AppConfig.getConfig("keyboard_brightness");
|
||||||
|
|
||||||
if (SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online)
|
if (AppConfig.isConfig("keyboard_auto") && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online)
|
||||||
AsusUSB.ApplyBrightness(3);
|
|
||||||
else
|
|
||||||
AsusUSB.ApplyBrightness(0);
|
AsusUSB.ApplyBrightness(0);
|
||||||
|
else if (backlight >= 0)
|
||||||
|
AsusUSB.ApplyBrightness(backlight);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1306,7 +1283,7 @@ namespace GHelper
|
|||||||
bool optimizedUSBC = AppConfig.getConfig("optimized_usbc") != 1;
|
bool optimizedUSBC = AppConfig.getConfig("optimized_usbc") != 1;
|
||||||
|
|
||||||
return SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online &&
|
return SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online &&
|
||||||
(optimizedUSBC || Program.acpi.DeviceGet(AsusACPI.ChargerMode) != AsusACPI.ChargerUSB);
|
(optimizedUSBC || Program.acpi.DeviceGet(AsusACPI.ChargerMode) < AsusACPI.ChargerUSB);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1434,6 +1411,12 @@ namespace GHelper
|
|||||||
|
|
||||||
UltimateUI(mux == 1);
|
UltimateUI(mux == 1);
|
||||||
|
|
||||||
|
if (eco < 0)
|
||||||
|
{
|
||||||
|
tableGPU.Visible = false;
|
||||||
|
if (Program.acpi.DeviceGet(AsusACPI.GPU_Fan) < 0 ) panelGPU.Visible = false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AppConfig.setConfig("gpu_mode", GpuMode);
|
AppConfig.setConfig("gpu_mode", GpuMode);
|
||||||
@@ -1491,6 +1474,14 @@ namespace GHelper
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected static void KillGPUApps()
|
||||||
|
{
|
||||||
|
string[] tokill = { "EADesktop", "RadeonSoftware", "epicgameslauncher" };
|
||||||
|
foreach (string kill in tokill)
|
||||||
|
foreach (var process in Process.GetProcessesByName(kill)) process.Kill();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public void SetGPUEco(int eco, bool hardWay = false)
|
public void SetGPUEco(int eco, bool hardWay = false)
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -1507,12 +1498,7 @@ namespace GHelper
|
|||||||
|
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
if (eco == 1)
|
if (eco == 1) KillGPUApps();
|
||||||
{
|
|
||||||
string[] tokill = { "EADesktop", "RadeonSoftware" };
|
|
||||||
foreach (string kill in tokill)
|
|
||||||
foreach (var process in Process.GetProcessesByName(kill)) process.Kill();
|
|
||||||
}
|
|
||||||
|
|
||||||
//if (eco == 1) status = 0; else
|
//if (eco == 1) status = 0; else
|
||||||
status = Program.acpi.SetGPUEco(eco);
|
status = Program.acpi.SetGPUEco(eco);
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
|
|
||||||
Language: English | [中文](https://github.com/seerge/g-helper/blob/main/docs/README.zh-CN.md)
|
Language: English | [中文](https://github.com/seerge/g-helper/blob/main/docs/README.zh-CN.md)
|
||||||
|
|
||||||
## Lightweight Armoury Crate alternative for Asus laptops
|
## Control tool for Asus laptops
|
||||||
|
|
||||||
Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models. A small utility that allows you to do almost everything you could do with Armoury Crate but without extra bloat and unnecessary services.
|
Lightweight Armoury Crate alternative for Asus lapopts. A small utility that allows you to do almost everything you could do with Armoury Crate but without extra bloat and unnecessary services. Works on all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar, ProArt and many more! Feel free to try :)
|
||||||
|
|
||||||
|
|
||||||
## :gift: Main advantages
|
## :gift: Main advantages
|
||||||
@@ -24,7 +24,7 @@ If you like this app, please [star :star: it on Github](https://github.com/seerg
|
|||||||
|
|
||||||
_If you post about the app - please include a link. Thanks._
|
_If you post about the app - please include a link. Thanks._
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### :zap: Main features
|
### :zap: Main features
|
||||||
|
|
||||||
@@ -48,6 +48,8 @@ _If you post about the app - please include a link. Thanks._
|
|||||||
|
|
||||||
To keep auto switching and hotkeys working the app needs to stay running in the tray. It doesn't consume any resources.
|
To keep auto switching and hotkeys working the app needs to stay running in the tray. It doesn't consume any resources.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
### :rocket: Performance Modes
|
### :rocket: Performance Modes
|
||||||
|
|
||||||
Modes are **same** as in Armoury Crate as they are stored in bios including default fan curves
|
Modes are **same** as in Armoury Crate as they are stored in bios including default fan curves
|
||||||
@@ -58,8 +60,6 @@ Modes are **same** as in Armoury Crate as they are stored in bios including defa
|
|||||||
|
|
||||||
_PPTs are shown for G14 2022, for other models PPTs will be different as they are set in bios._
|
_PPTs are shown for G14 2022, for other models PPTs will be different as they are set in bios._
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### :video_game: GPU Modes
|
### :video_game: GPU Modes
|
||||||
|
|
||||||
1. Eco mode : only low power integrated GPU enabled, iGPU drives built in display
|
1. Eco mode : only low power integrated GPU enabled, iGPU drives built in display
|
||||||
@@ -67,6 +67,8 @@ _PPTs are shown for G14 2022, for other models PPTs will be different as they ar
|
|||||||
3. Ultimate mode: iGPU and dGPU enabled, but dGPU drives built in display (supported only on G14 2022 model)
|
3. Ultimate mode: iGPU and dGPU enabled, but dGPU drives built in display (supported only on G14 2022 model)
|
||||||
4. Optimized: disables dGPU on battery (Eco) and enables when plugged (Standard)
|
4. Optimized: disables dGPU on battery (Eco) and enables when plugged (Standard)
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
## :question: FAQ
|
## :question: FAQ
|
||||||
|
|
||||||
#### How do I stop the Armory Crate install popup appearing every time I press the M4 / Rog key?
|
#### How do I stop the Armory Crate install popup appearing every time I press the M4 / Rog key?
|
||||||
|
|||||||
Reference in New Issue
Block a user