Compare commits

...

16 Commits

Author SHA1 Message Date
Serge
ba0bac11b5 Exception wrapping 2024-05-02 12:35:36 +02:00
Serge
8241700fe7 Merge branch 'main' of https://github.com/seerge/g-helper 2024-05-02 11:05:50 +02:00
Serge
2ff1a59ff9 ASUS Rog Keris Wired #2517 2024-05-02 11:05:48 +02:00
Serge
18d6f694a0 New Crowdin updates (#2525)
* New translations strings.resx (Korean)

* New translations strings.resx (Korean)
2024-05-02 00:44:00 +02:00
Serge
9fe283b620 Multizone toggle improvements https://github.com/seerge/g-helper/issues/1957 2024-05-01 21:27:31 +02:00
Serge
b7e4ec50a6 Version bump 2024-05-01 21:09:05 +02:00
Serge
927fc382a5 Miniled toggle tweaks 2024-05-01 21:08:39 +02:00
Serge
ed728de661 UI fix https://github.com/seerge/g-helper/issues/2515 2024-05-01 21:05:08 +02:00
Serge
a1a317d952 Added S540 to the Oled list #2519 2024-04-30 12:31:41 +02:00
Serge
123fbc414f Overdrive UI Tweaks https://github.com/seerge/g-helper/issues/2497 2024-04-28 10:39:21 +02:00
Serge
d26d9c46ad Merge branch 'main' of https://github.com/seerge/g-helper 2024-04-26 20:41:00 +02:00
Serge
a58230fdd2 Version bump 2024-04-26 20:40:58 +02:00
Serge
00393ef67d New Crowdin updates (#2506)
* New translations strings.resx (Turkish)

* New translations strings.resx (Danish)
2024-04-26 20:40:22 +02:00
Serge
a687d074ee Configurable min GPU clock 2024-04-26 20:30:12 +02:00
Serge
201ef48cd4 Lowered possible GPU Clock limit https://github.com/seerge/g-helper/discussions/2500 2024-04-26 19:44:44 +02:00
Serge
7b16adf0f5 Ally TDP (#2503)
* Init

* TDP fixes

* TDP tweaks

* AutoTDP toggle

* AutoTDP tweaks

* AutoTDP tweaks

* TDP tweaks

* Cleanup

* Power based AutoTDP

* TDP tweaks
2024-04-26 19:42:11 +02:00
19 changed files with 342 additions and 143 deletions

View File

@@ -1,10 +1,13 @@
using GHelper.Gpu.AMD; using GHelper.Gpu.AMD;
using GHelper.Helpers; using GHelper.Helpers;
using GHelper.Input; using GHelper.Input;
using GHelper.Mode;
using GHelper.USB; using GHelper.USB;
using HidSharp; using HidSharp;
using System.Text; using System.Text;
namespace GHelper.Ally namespace GHelper.Ally
{ {
@@ -32,17 +35,28 @@ namespace GHelper.Ally
public class AllyControl public class AllyControl
{ {
System.Timers.Timer timer = default!; static System.Timers.Timer timer = default!;
static AmdGpuControl amdControl = new AmdGpuControl(); static AmdGpuControl amdControl = new AmdGpuControl();
SettingsForm settings; SettingsForm settings;
static ControllerMode _mode = ControllerMode.Auto; static ControllerMode _mode = ControllerMode.Auto;
static ControllerMode _applyMode = ControllerMode.Mouse; static ControllerMode _applyMode = ControllerMode.Mouse;
static int _autoCount = 0; static int _autoCount = 0;
static int _upCount = 0;
static int _downCount = 0;
static int tdpMin = 6;
static int tdpStable = tdpMin;
static int tdpCurrent = -1;
static bool autoTDP = false;
static int fpsLimit = -1; static int fpsLimit = -1;
public const string BindA = "01-01"; public const string BindA = "01-01";
public const string BindB = "01-02"; public const string BindB = "01-02";
public const string BindX = "01-03"; public const string BindX = "01-03";
@@ -280,32 +294,116 @@ namespace GHelper.Ally
public AllyControl(SettingsForm settingsForm) public AllyControl(SettingsForm settingsForm)
{ {
if (!AppConfig.IsAlly()) return; if (!AppConfig.IsAlly()) return;
settings = settingsForm; settings = settingsForm;
timer = new System.Timers.Timer(300); if (timer is null)
timer.Elapsed += Timer_Elapsed; {
timer = new System.Timers.Timer(300);
timer.Elapsed += Timer_Elapsed;
Logger.WriteLine("Ally timer");
}
}
private int GetMaxTDP()
{
int tdp = AppConfig.GetMode("limit_total");
if (tdp > 0) return tdp;
switch (Modes.GetCurrentBase())
{
case 1:
return 25;
case 2:
return 10;
default:
return 15;
}
}
private int GetTDP()
{
if (tdpCurrent < 0) tdpCurrent = GetMaxTDP();
return tdpCurrent;
}
private void SetTDP(int tdp, string log)
{
if (tdp < tdpStable) tdp = tdpStable;
int max = GetMaxTDP();
if (tdp > max) tdp = max;
if (tdp == tdpCurrent) return;
if (!autoTDP) return;
Program.acpi.DeviceSet(AsusACPI.PPT_APUA0, tdp, log);
Program.acpi.DeviceSet(AsusACPI.PPT_APUA3, tdp, null);
Program.acpi.DeviceSet(AsusACPI.PPT_APUC1, tdp, null);
tdpCurrent = tdp;
} }
private void Timer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e) private void Timer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
{ {
if (!autoTDP && _mode != ControllerMode.Auto) return;
float fps = amdControl.GetFPS(); float fps = amdControl.GetFPS();
ControllerMode newMode = (fps > 0) ? ControllerMode.Gamepad : ControllerMode.Mouse; if (autoTDP && fpsLimit > 0 && fpsLimit <= 120)
if (_applyMode != newMode) _autoCount++;
else _autoCount = 0;
if (_mode != ControllerMode.Auto) return;
if (_autoCount > 2)
{ {
_autoCount = 0; int power = (int)amdControl.GetGpuPower();
ApplyMode(newMode); //Debug.WriteLine($"{power}: {fps}");
Logger.WriteLine(fps.ToString());
if (fps <= fpsLimit * 0.8) _upCount++;
else _upCount = 0;
if (fps >= fpsLimit * 0.90) _downCount++;
else _downCount = 0;
var tdp = GetTDP();
if (_upCount >= 1)
{
_downCount = 0;
_upCount = 0;
SetTDP(tdp + 1, $"AutoTDP+ [{power}]{fps}");
}
if (_downCount >= 8 && power < tdp)
{
_upCount = 0;
_downCount--;
SetTDP(tdp - 1, $"AutoTDP- [{power}]{fps}");
}
} }
if (_mode == ControllerMode.Auto)
{
ControllerMode newMode = (fps > 0) ? ControllerMode.Gamepad : ControllerMode.Mouse;
if (_applyMode != newMode) _autoCount++;
else _autoCount = 0;
if (_autoCount == 3)
{
_autoCount = 0;
ApplyMode(newMode);
Logger.WriteLine($"Controller Mode {fps}: {newMode}");
}
}
}
public void ToggleAutoTDP()
{
autoTDP = !autoTDP;
tdpCurrent = -1;
if (!autoTDP)
{
Program.modeControl.SetPerformanceMode();
}
settings.VisualiseAutoTDP(autoTDP);
} }
public void Init() public void Init()
@@ -319,7 +417,6 @@ namespace GHelper.Ally
fpsLimit = amdControl.GetFPSLimit(); fpsLimit = amdControl.GetFPSLimit();
settings.VisualiseFPSLimit(fpsLimit); settings.VisualiseFPSLimit(fpsLimit);
} }
public void ToggleFPSLimit() public void ToggleFPSLimit()
@@ -479,7 +576,7 @@ namespace GHelper.Ally
DecodeBinding(KeyR2).CopyTo(bindings, 38); DecodeBinding(KeyR2).CopyTo(bindings, 38);
//AsusHid.WriteInput(CommandReady, null); //AsusHid.WriteInput(CommandReady, null);
AsusHid.WriteInput(bindings, $"B{zone}"); AsusHid.WriteInput(bindings, null);
} }
@@ -495,19 +592,19 @@ namespace GHelper.Ally
(byte)AppConfig.Get("ls_max", 100), (byte)AppConfig.Get("ls_max", 100),
(byte)AppConfig.Get("rs_min", 0), (byte)AppConfig.Get("rs_min", 0),
(byte)AppConfig.Get("rs_max", 100) (byte)AppConfig.Get("rs_max", 100)
}, "StickDeadzone"); }, null);
AsusHid.WriteInput(new byte[] { AsusHid.INPUT_ID, 0xd1, 5, 4, AsusHid.WriteInput(new byte[] { AsusHid.INPUT_ID, 0xd1, 5, 4,
(byte)AppConfig.Get("lt_min", 0), (byte)AppConfig.Get("lt_min", 0),
(byte)AppConfig.Get("lt_max", 100), (byte)AppConfig.Get("lt_max", 100),
(byte)AppConfig.Get("rt_min", 0), (byte)AppConfig.Get("rt_min", 0),
(byte)AppConfig.Get("rt_max", 100) (byte)AppConfig.Get("rt_max", 100)
}, "TriggerDeadzone"); }, null);
AsusHid.WriteInput(new byte[] { AsusHid.INPUT_ID, 0xd1, 6, 2, AsusHid.WriteInput(new byte[] { AsusHid.INPUT_ID, 0xd1, 6, 2,
(byte)AppConfig.Get("vibra", 100), (byte)AppConfig.Get("vibra", 100),
(byte)AppConfig.Get("vibra", 100) (byte)AppConfig.Get("vibra", 100)
}, "Vibration"); }, null);
} }
@@ -572,18 +669,11 @@ namespace GHelper.Ally
_mode = mode; _mode = mode;
AppConfig.Set("controller_mode", (int)mode); AppConfig.Set("controller_mode", (int)mode);
amdControl.StopFPS();
ApplyMode(mode, init); ApplyMode(mode, init);
if (mode == ControllerMode.Auto) amdControl.StartFPS();
{ timer.Start();
amdControl.StartFPS();
timer.Start();
}
else
{
timer.Stop();
amdControl.StopFPS();
}
settings.VisualiseController(mode); settings.VisualiseController(mode);
} }

View File

@@ -411,12 +411,12 @@ public static class AppConfig
public static bool IsOLED() public static bool IsOLED()
{ {
return ContainsModel("OLED") || IsSlash() || ContainsModel("M7600") || ContainsModel("UX64") || ContainsModel("UX34") || ContainsModel("UX53") || ContainsModel("K360") || ContainsModel("X150") || ContainsModel("M350") || ContainsModel("K650") || ContainsModel("UM53") || ContainsModel("K660") || ContainsModel("UX84") || ContainsModel("M650") || ContainsModel("K340") || ContainsModel("K350") || ContainsModel("M140") || ContainsModel("UM340"); return ContainsModel("OLED") || IsSlash() || ContainsModel("M7600") || ContainsModel("UX64") || ContainsModel("UX34") || ContainsModel("UX53") || ContainsModel("K360") || ContainsModel("X150") || ContainsModel("M350") || ContainsModel("K650") || ContainsModel("UM53") || ContainsModel("K660") || ContainsModel("UX84") || ContainsModel("M650") || ContainsModel("K340") || ContainsModel("K350") || ContainsModel("M140") || ContainsModel("UM340") || ContainsModel("S540");
} }
public static bool IsNoOverdrive() public static bool IsNoOverdrive()
{ {
return Is("no_overdrive") || IsOLED(); return Is("no_overdrive");
} }
public static bool IsNoSleepEvent() public static bool IsNoSleepEvent()

View File

@@ -167,6 +167,9 @@ public class AsusACPI
public const int PCoreMax = 16; public const int PCoreMax = 16;
public const int ECoreMax = 16; public const int ECoreMax = 16;
private bool? _allAMD = null;
private bool? _overdrive = null;
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)] [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
private static extern IntPtr CreateFile( private static extern IntPtr CreateFile(
@@ -636,8 +639,14 @@ public class AsusACPI
public bool IsAllAmdPPT() public bool IsAllAmdPPT()
{ {
//return false; if (_allAMD is null) _allAMD = DeviceGet(PPT_CPUB0) >= 0 && DeviceGet(PPT_GPUC0) < 0;
return DeviceGet(PPT_CPUB0) >= 0 && DeviceGet(PPT_GPUC0) < 0; return (bool)_allAMD;
}
public bool IsOverdriveSupported()
{
if (_overdrive is null) _overdrive = DeviceGet(ScreenOverdrive) >= 0;
return (bool)_overdrive;
} }
public bool IsNVidiaGPU() public bool IsNVidiaGPU()

View File

@@ -51,10 +51,10 @@ namespace GHelper.Display
ScreenNative.SetRefreshRate(laptopScreen, frequency); ScreenNative.SetRefreshRate(laptopScreen, frequency);
} }
if (overdrive >= 0) if (Program.acpi.IsOverdriveSupported() && overdrive >= 0)
{ {
if (AppConfig.IsNoOverdrive()) overdrive = 0; if (AppConfig.IsNoOverdrive()) overdrive = 0;
if (!AppConfig.IsOLED() && overdrive != Program.acpi.DeviceGet(AsusACPI.ScreenOverdrive)) if (overdrive != Program.acpi.DeviceGet(AsusACPI.ScreenOverdrive))
{ {
Program.acpi.DeviceSet(AsusACPI.ScreenOverdrive, overdrive, "ScreenOverdrive"); Program.acpi.DeviceSet(AsusACPI.ScreenOverdrive, overdrive, "ScreenOverdrive");
} }
@@ -65,7 +65,10 @@ namespace GHelper.Display
if (Program.acpi.DeviceGet(AsusACPI.ScreenMiniled1) >= 0) if (Program.acpi.DeviceGet(AsusACPI.ScreenMiniled1) >= 0)
Program.acpi.DeviceSet(AsusACPI.ScreenMiniled1, miniled, "Miniled1"); Program.acpi.DeviceSet(AsusACPI.ScreenMiniled1, miniled, "Miniled1");
else else
{
Program.acpi.DeviceSet(AsusACPI.ScreenMiniled2, miniled, "Miniled2"); Program.acpi.DeviceSet(AsusACPI.ScreenMiniled2, miniled, "Miniled2");
Thread.Sleep(100);
}
} }
InitScreen(); InitScreen();
@@ -84,7 +87,7 @@ namespace GHelper.Display
} }
} }
public int ToogleMiniled() public string ToogleMiniled()
{ {
int miniled1 = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled1); int miniled1 = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled1);
int miniled2 = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled2); int miniled2 = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled2);
@@ -92,24 +95,45 @@ namespace GHelper.Display
Logger.WriteLine($"MiniledToggle: {miniled1} {miniled2}"); Logger.WriteLine($"MiniledToggle: {miniled1} {miniled2}");
int miniled; int miniled;
string name;
if (miniled1 >= 0) if (miniled1 >= 0)
{ {
miniled = (miniled1 == 1) ? 0 : 1; switch (miniled1)
{
case 1:
miniled = 0;
name = Properties.Strings.OneZone;
break;
default:
miniled = 1;
name = Properties.Strings.Multizone;
break;
}
} }
else else
{ {
switch (miniled2) switch (miniled2)
{ {
case 1: miniled = 2; break; case 1:
case 2: miniled = 0; break; miniled = 2;
default: miniled = 1; break; name = Properties.Strings.OneZone;
break;
case 2:
miniled = 0;
name = Properties.Strings.Multizone;
break;
default:
miniled = 1;
name = Properties.Strings.MultizoneStrong;
break;
} }
} }
AppConfig.Set("miniled", miniled); AppConfig.Set("miniled", miniled);
SetScreen(miniled: miniled); SetScreen(miniled: miniled);
return miniled;
return name;
} }
public void InitScreen() public void InitScreen()
@@ -119,7 +143,7 @@ namespace GHelper.Display
int maxFrequency = ScreenNative.GetMaxRefreshRate(laptopScreen); int maxFrequency = ScreenNative.GetMaxRefreshRate(laptopScreen);
bool screenAuto = AppConfig.Is("screen_auto"); bool screenAuto = AppConfig.Is("screen_auto");
bool overdriveSetting = !AppConfig.IsNoOverdrive(); bool overdriveSetting = Program.acpi.IsOverdriveSupported() && !AppConfig.IsNoOverdrive();
int overdrive = AppConfig.IsNoOverdrive() ? 0 : Program.acpi.DeviceGet(AsusACPI.ScreenOverdrive); int overdrive = AppConfig.IsNoOverdrive() ? 0 : Program.acpi.DeviceGet(AsusACPI.ScreenOverdrive);

View File

@@ -166,7 +166,8 @@ namespace GHelper.Display
{ {
try try
{ {
var devices = GetAllDevices().ToArray(); var devicesList = GetAllDevices();
var devices = devicesList.ToArray();
string internalName = AppConfig.GetString("internal_display"); string internalName = AppConfig.GetString("internal_display");
foreach (var device in devices) foreach (var device in devices)

View File

@@ -223,10 +223,7 @@ namespace GHelper
checkUSBC.Visible = false; checkUSBC.Visible = false;
} }
if (AppConfig.IsOLED()) checkNoOverdrive.Visible = Program.acpi.IsOverdriveSupported();
{
checkNoOverdrive.Visible = false;
}
// Change text and hide irrelevant options on the ROG Ally, // Change text and hide irrelevant options on the ROG Ally,
// which is a bit of a special case piece of hardware. // which is a bit of a special case piece of hardware.
@@ -256,7 +253,6 @@ namespace GHelper
checkGpuApps.Visible = false; checkGpuApps.Visible = false;
checkUSBC.Visible = false; checkUSBC.Visible = false;
checkAutoToggleClamshellMode.Visible = false; checkAutoToggleClamshellMode.Visible = false;
checkNoOverdrive.Visible = false;
int apuMem = Program.acpi.GetAPUMem(); int apuMem = Program.acpi.GetAPUMem();
if (apuMem >= 0) if (apuMem >= 0)

View File

@@ -674,7 +674,7 @@ namespace GHelper
private void trackGPUClockLimit_Scroll(object? sender, EventArgs e) private void trackGPUClockLimit_Scroll(object? sender, EventArgs e)
{ {
int maxClock = (int)Math.Round((float)trackGPUClockLimit.Value / 50) * 50; int maxClock = (int)Math.Round((float)trackGPUClockLimit.Value / 5) * 5;
trackGPUClockLimit.Value = maxClock; trackGPUClockLimit.Value = maxClock;
AppConfig.SetMode("gpu_clock_limit", maxClock); AppConfig.SetMode("gpu_clock_limit", maxClock);

View File

@@ -15,7 +15,7 @@
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
<ProduceReferenceAssembly>False</ProduceReferenceAssembly> <ProduceReferenceAssembly>False</ProduceReferenceAssembly>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks> <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<AssemblyVersion>0.168</AssemblyVersion> <AssemblyVersion>0.170</AssemblyVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -119,6 +119,18 @@ public class AmdGpuControl : IGpuControl
} }
public int? GetGpuPower()
{
if (_adlContextHandle == nint.Zero || _iGPU == null) return null;
if (ADL2_New_QueryPMLogData_Get(_adlContextHandle, ((ADLAdapterInfo)_iGPU).AdapterIndex, out ADLPMLogDataOutput adlpmLogDataOutput) != Adl2.ADL_SUCCESS) return null;
ADLSingleSensorData gpuUsage = adlpmLogDataOutput.Sensors[(int)ADLSensorType.PMLOG_ASIC_POWER];
if (gpuUsage.Supported == 0) return null;
return gpuUsage.Value;
}
public bool SetVariBright(int enabled) public bool SetVariBright(int enabled)
{ {

View File

@@ -18,7 +18,7 @@ public class NvidiaGpuControl : IGpuControl
public static int MinCoreOffset = AppConfig.Get("min_gpu_core", -250); public static int MinCoreOffset = AppConfig.Get("min_gpu_core", -250);
public static int MinMemoryOffset = AppConfig.Get("min_gpu_memory", -500); public static int MinMemoryOffset = AppConfig.Get("min_gpu_memory", -500);
public const int MinClockLimit = 400; public static int MinClockLimit = AppConfig.Get("min_gpu_clock", 400);
public const int MaxClockLimit = 3000; public const int MaxClockLimit = 3000;
private static PhysicalGPU? _internalGpu; private static PhysicalGPU? _internalGpu;

View File

@@ -15,22 +15,29 @@ namespace GHelper.Helpers
public bool IsExternalDisplayConnected() public bool IsExternalDisplayConnected()
{ {
var devices = ScreenInterrogatory.GetAllDevices().ToArray(); try
string internalName = AppConfig.GetString("internal_display");
foreach (var device in devices)
{ {
if (device.outputTechnology != ScreenInterrogatory.DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL && var devicesList = ScreenInterrogatory.GetAllDevices();
device.outputTechnology != ScreenInterrogatory.DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED var devices = devicesList.ToArray();
&& device.monitorFriendlyDeviceName != internalName)
string internalName = AppConfig.GetString("internal_display");
foreach (var device in devices)
{ {
Logger.WriteLine("Found external screen: " + device.monitorFriendlyDeviceName + ":" + device.outputTechnology.ToString()); if (device.outputTechnology != ScreenInterrogatory.DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL &&
device.outputTechnology != ScreenInterrogatory.DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED
&& device.monitorFriendlyDeviceName != internalName)
{
Logger.WriteLine("Found external screen: " + device.monitorFriendlyDeviceName + ":" + device.outputTechnology.ToString());
//Already found one, we do not have to check whether there are more
return true;
}
//Already found one, we do not have to check whether there are more
return true;
} }
} catch (Exception ex)
{
Logger.WriteLine(ex.ToString());
} }
return false; return false;

View File

@@ -490,8 +490,8 @@ namespace GHelper.Input
break; break;
case "miniled": case "miniled":
if (ScreenCCD.GetHDRStatus()) return; if (ScreenCCD.GetHDRStatus()) return;
int miniled = screenControl.ToogleMiniled(); string miniledName = screenControl.ToogleMiniled();
Program.toast.RunToast(miniled == 1 ? "Multi-Zone" : "Single-Zone", miniled == 1 ? ToastIcon.BrightnessUp : ToastIcon.BrightnessDown); Program.toast.RunToast(miniledName, miniledName == Properties.Strings.OneZone ? ToastIcon.BrightnessDown : ToastIcon.BrightnessUp);
break; break;
case "aura": case "aura":
Program.settingsForm.BeginInvoke(Program.settingsForm.CycleAuraMode); Program.settingsForm.BeginInvoke(Program.settingsForm.CycleAuraMode);

View File

@@ -159,6 +159,18 @@
} }
} }
public class ROGKerisWirelessWiredC : ROGKerisWireless
{
public ROGKerisWirelessWiredC() : base(0x195C, false)
{
}
public override string GetDisplayName()
{
return "ROG Keris (Wired)";
}
}
public class ROGKerisWirelessWired : ROGKerisWireless public class ROGKerisWirelessWired : ROGKerisWireless
{ {
public ROGKerisWirelessWired() : base(0x195E, false) public ROGKerisWirelessWired() : base(0x195E, false)

View File

@@ -191,6 +191,7 @@ namespace GHelper.Peripherals
DetectMouse(new GladiusII()); DetectMouse(new GladiusII());
DetectMouse(new ROGKerisWireless()); DetectMouse(new ROGKerisWireless());
DetectMouse(new ROGKerisWirelessWired()); DetectMouse(new ROGKerisWirelessWired());
DetectMouse(new ROGKerisWirelessWiredC());
DetectMouse(new ROGKerisWirelessEvaEdition()); DetectMouse(new ROGKerisWirelessEvaEdition());
DetectMouse(new ROGKerisWirelessEvaEditionWired()); DetectMouse(new ROGKerisWirelessEvaEditionWired());
DetectMouse(new TUFM4Wirelss()); DetectMouse(new TUFM4Wirelss());

View File

@@ -154,7 +154,7 @@
<value>Anime Matrix</value> <value>Anime Matrix</value>
</data> </data>
<data name="AppAlreadyRunning" xml:space="preserve"> <data name="AppAlreadyRunning" xml:space="preserve">
<value>Appen kører allerede</value> <value>App'en kører allerede</value>
</data> </data>
<data name="AppAlreadyRunningText" xml:space="preserve"> <data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper kører allerede. Tjek systembakken for et ikon.</value> <value>G-Helper kører allerede. Tjek systembakken for et ikon.</value>
@@ -175,7 +175,7 @@
<value>Hukommelse tildelt til GPU</value> <value>Hukommelse tildelt til GPU</value>
</data> </data>
<data name="AsusServicesRunning" xml:space="preserve"> <data name="AsusServicesRunning" xml:space="preserve">
<value>Kørende Asus-tjenester</value> <value>Kørende ASUS-tjenester</value>
</data> </data>
<data name="AuraBatteryState" xml:space="preserve"> <data name="AuraBatteryState" xml:space="preserve">
<value>Batteritilstand</value> <value>Batteritilstand</value>
@@ -301,7 +301,7 @@
<value>Boot</value> <value>Boot</value>
</data> </data>
<data name="BootSound" xml:space="preserve"> <data name="BootSound" xml:space="preserve">
<value>Boot-lyd</value> <value>Opstarts-lyd</value>
</data> </data>
<data name="Brightness" xml:space="preserve"> <data name="Brightness" xml:space="preserve">
<value>Lysstyrke</value> <value>Lysstyrke</value>
@@ -313,7 +313,7 @@
<value>Lysstyrke op</value> <value>Lysstyrke op</value>
</data> </data>
<data name="BWTrayIcon" xml:space="preserve"> <data name="BWTrayIcon" xml:space="preserve">
<value>Sort og hvid bakkeikon</value> <value>Sort/hvid bakkeikon</value>
</data> </data>
<data name="Calibrate" xml:space="preserve"> <data name="Calibrate" xml:space="preserve">
<value>Kalibrer</value> <value>Kalibrer</value>
@@ -349,7 +349,7 @@
<value>Deaktiver ved lukning af låg</value> <value>Deaktiver ved lukning af låg</value>
</data> </data>
<data name="DisableOverdrive" xml:space="preserve"> <data name="DisableOverdrive" xml:space="preserve">
<value>Deaktiver overdrive på skærmen</value> <value>Deaktiver Overdrive på skærmen</value>
</data> </data>
<data name="Discharging" xml:space="preserve"> <data name="Discharging" xml:space="preserve">
<value>Aflader</value> <value>Aflader</value>
@@ -393,7 +393,7 @@ Vil du stadig fortsætte?</value>
<value>Ekstra indstillinger</value> <value>Ekstra indstillinger</value>
</data> </data>
<data name="FactoryDefaults" xml:space="preserve"> <data name="FactoryDefaults" xml:space="preserve">
<value>Standard fabriksindstillinger</value> <value>Gendan standarder</value>
</data> </data>
<data name="FanCurves" xml:space="preserve"> <data name="FanCurves" xml:space="preserve">
<value>Blæserkurver</value> <value>Blæserkurver</value>
@@ -411,13 +411,13 @@ Vil du stadig fortsætte?</value>
<value>Blæserprofiler</value> <value>Blæserprofiler</value>
</data> </data>
<data name="FansAndPower" xml:space="preserve"> <data name="FansAndPower" xml:space="preserve">
<value>Blæsere og kraft</value> <value>Blæsere og strøm</value>
</data> </data>
<data name="FanSpeed" xml:space="preserve"> <data name="FanSpeed" xml:space="preserve">
<value>Blæser</value> <value>Blæser</value>
</data> </data>
<data name="FansPower" xml:space="preserve"> <data name="FansPower" xml:space="preserve">
<value>Blæser + Kraft</value> <value>Blæser + Strøm</value>
</data> </data>
<data name="FlickerFreeDimming" xml:space="preserve"> <data name="FlickerFreeDimming" xml:space="preserve">
<value>Flimmerfri dæmpning</value> <value>Flimmerfri dæmpning</value>
@@ -426,10 +426,10 @@ Vil du stadig fortsætte?</value>
<value>Aktiver Fn + F genvejstaster uden Fn</value> <value>Aktiver Fn + F genvejstaster uden Fn</value>
</data> </data>
<data name="FnLockOff" xml:space="preserve"> <data name="FnLockOff" xml:space="preserve">
<value>FN-lås fra</value> <value>Fn-lås fra</value>
</data> </data>
<data name="FnLockOn" xml:space="preserve"> <data name="FnLockOn" xml:space="preserve">
<value>FN-lås til</value> <value>Fn-lås til</value>
</data> </data>
<data name="GPUBoost" xml:space="preserve"> <data name="GPUBoost" xml:space="preserve">
<value>Dynamisk boost</value> <value>Dynamisk boost</value>
@@ -438,13 +438,13 @@ Vil du stadig fortsætte?</value>
<value>Skifter</value> <value>Skifter</value>
</data> </data>
<data name="GPUCoreClockOffset" xml:space="preserve"> <data name="GPUCoreClockOffset" xml:space="preserve">
<value>Core Clock forskydning</value> <value>Core Clock offset</value>
</data> </data>
<data name="GPUMemoryClockOffset" xml:space="preserve"> <data name="GPUMemoryClockOffset" xml:space="preserve">
<value>Memory Clock forskydning</value> <value>Memory Clock offset</value>
</data> </data>
<data name="GPUMode" xml:space="preserve"> <data name="GPUMode" xml:space="preserve">
<value>GPU- tilstand</value> <value>GPU-tilstand</value>
</data> </data>
<data name="GPUModeEco" xml:space="preserve"> <data name="GPUModeEco" xml:space="preserve">
<value>Kun iGPU</value> <value>Kun iGPU</value>
@@ -456,7 +456,7 @@ Vil du stadig fortsætte?</value>
<value>dGPU eksklusivt</value> <value>dGPU eksklusivt</value>
</data> </data>
<data name="GPUPower" xml:space="preserve"> <data name="GPUPower" xml:space="preserve">
<value>GPU- strøm</value> <value>GPU-strøm</value>
</data> </data>
<data name="GPUSettings" xml:space="preserve"> <data name="GPUSettings" xml:space="preserve">
<value>GPU-indstillinger</value> <value>GPU-indstillinger</value>
@@ -486,13 +486,13 @@ Vil du stadig fortsætte?</value>
<value>Stop alle apps der bruger GPU når du skifter til Øko</value> <value>Stop alle apps der bruger GPU når du skifter til Øko</value>
</data> </data>
<data name="LaptopBacklight" xml:space="preserve"> <data name="LaptopBacklight" xml:space="preserve">
<value>Bærbar baggrundsbelysning</value> <value>Laptop baggrundsbelysning</value>
</data> </data>
<data name="LaptopKeyboard" xml:space="preserve"> <data name="LaptopKeyboard" xml:space="preserve">
<value>Bærbar tastatur</value> <value>Laptop-tastatur</value>
</data> </data>
<data name="LaptopScreen" xml:space="preserve"> <data name="LaptopScreen" xml:space="preserve">
<value>Bærbar skærm</value> <value>Laptop-skærm</value>
</data> </data>
<data name="LEDStatusIndicators" xml:space="preserve"> <data name="LEDStatusIndicators" xml:space="preserve">
<value>LED statusindikatorer</value> <value>LED statusindikatorer</value>
@@ -561,7 +561,7 @@ Vil du stadig fortsætte?</value>
<value>minutter</value> <value>minutter</value>
</data> </data>
<data name="MouseAngleSnapping" xml:space="preserve"> <data name="MouseAngleSnapping" xml:space="preserve">
<value>Vinkel snapping</value> <value>Vinkel-snapping</value>
</data> </data>
<data name="MouseAutoPowerOff" xml:space="preserve"> <data name="MouseAutoPowerOff" xml:space="preserve">
<value>Automatisk slukning efter</value> <value>Automatisk slukning efter</value>
@@ -627,7 +627,7 @@ Vil du stadig fortsætte?</value>
<value>Skift til Øko på batteri og til Standard, når tilsluttet strøm</value> <value>Skift til Øko på batteri og til Standard, når tilsluttet strøm</value>
</data> </data>
<data name="OptimizedUSBC" xml:space="preserve"> <data name="OptimizedUSBC" xml:space="preserve">
<value>Hold GPU deaktiveret på USB-C-oplader i optimeret tilstand</value> <value>Hold GPU deaktiveret på USB-C oplader i optimeret tilstand</value>
</data> </data>
<data name="Other" xml:space="preserve"> <data name="Other" xml:space="preserve">
<value>Andet</value> <value>Andet</value>
@@ -651,10 +651,10 @@ Vil du stadig fortsætte?</value>
<value>Polling Rate</value> <value>Polling Rate</value>
</data> </data>
<data name="PowerLimits" xml:space="preserve"> <data name="PowerLimits" xml:space="preserve">
<value>Kraftgrænser</value> <value>Strømgrænser</value>
</data> </data>
<data name="PPTExperimental" xml:space="preserve"> <data name="PPTExperimental" xml:space="preserve">
<value>Kraftgrænser er en eksperimentel funktion. Brug omhyggeligt og på egen risiko!</value> <value>Strømgrænser er en eksperimentel funktion. Brug omhyggeligt og på egen risiko!</value>
</data> </data>
<data name="PrintScreen" xml:space="preserve"> <data name="PrintScreen" xml:space="preserve">
<value>PrintScreen</value> <value>PrintScreen</value>
@@ -729,10 +729,10 @@ Vil du stadig fortsætte?</value>
<value>Slå Aura til/fra</value> <value>Slå Aura til/fra</value>
</data> </data>
<data name="ToggleClamshellMode" xml:space="preserve"> <data name="ToggleClamshellMode" xml:space="preserve">
<value>Automatisk slå Clamshell tilstand til/fra</value> <value>Slå automatisk Clamshell-tilstand til/fra</value>
</data> </data>
<data name="ToggleFnLock" xml:space="preserve"> <data name="ToggleFnLock" xml:space="preserve">
<value>Slå Fn-Lock til/fra</value> <value>Slå Fn-lås til/fra</value>
</data> </data>
<data name="ToggleMiniled" xml:space="preserve"> <data name="ToggleMiniled" xml:space="preserve">
<value>Slå MiniLED til/fra (hvis understøttet)</value> <value>Slå MiniLED til/fra (hvis understøttet)</value>
@@ -750,7 +750,7 @@ Vil du stadig fortsætte?</value>
<value>Deaktiver på batteri</value> <value>Deaktiver på batteri</value>
</data> </data>
<data name="UltimateGPUTooltip" xml:space="preserve"> <data name="UltimateGPUTooltip" xml:space="preserve">
<value>Kobler bærbar skærm direkte til dGPU, hvilket maksimerer FPS</value> <value>Kobler laptop-skærmen direkte til dGPU, hvilket maksimerer FPS</value>
</data> </data>
<data name="UltimateMode" xml:space="preserve"> <data name="UltimateMode" xml:space="preserve">
<value>Ultimativ</value> <value>Ultimativ</value>
@@ -759,7 +759,7 @@ Vil du stadig fortsætte?</value>
<value>Undervolting er en eksperimentel og risikabel funktion. Hvis de anvendte værdier er for lave for din hardware, kan det blive ustabilt, lukke ned eller forårsage datakorruption. Hvis du ønsker at prøve - start fra små værdier først, klik på Anvend og test hvad der virker for dig.</value> <value>Undervolting er en eksperimentel og risikabel funktion. Hvis de anvendte værdier er for lave for din hardware, kan det blive ustabilt, lukke ned eller forårsage datakorruption. Hvis du ønsker at prøve - start fra små værdier først, klik på Anvend og test hvad der virker for dig.</value>
</data> </data>
<data name="Unmuted" xml:space="preserve"> <data name="Unmuted" xml:space="preserve">
<value>Ikke muted</value> <value>Ikke lydløs</value>
</data> </data>
<data name="Updates" xml:space="preserve"> <data name="Updates" xml:space="preserve">
<value>Opdateringer</value> <value>Opdateringer</value>

View File

@@ -118,16 +118,16 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="Acceleration" xml:space="preserve"> <data name="Acceleration" xml:space="preserve">
<value>Acceleration</value> <value>가속</value>
</data> </data>
<data name="ACPIError" xml:space="preserve"> <data name="ACPIError" xml:space="preserve">
<value>ASUS ACPI에 연결할 수 없어 응용 프로그램이 작동하지 않습니다. Asus System Control Interface를 먼저 설치하십시오.</value> <value>ASUS ACPI에 연결할 수 없어 응용 프로그램이 작동하지 않습니다. Asus System Control Interface를 먼저 설치하십시오.</value>
</data> </data>
<data name="AlertAPUMemoryRestart" xml:space="preserve"> <data name="AlertAPUMemoryRestart" xml:space="preserve">
<value>Restart your device to apply changes</value> <value>변경사항을 적용하려면 기기를 다시 시작하십시오.</value>
</data> </data>
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve"> <data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
<value>Restart now?</value> <value>지금 다시 시작하시겠습니까?</value>
</data> </data>
<data name="AlertDGPU" xml:space="preserve"> <data name="AlertDGPU" xml:space="preserve">
<value>GPU 사용량이 높습니다. 비활성화 하시겠습니까?</value> <value>GPU 사용량이 높습니다. 비활성화 하시겠습니까?</value>
@@ -142,10 +142,10 @@
<value>Ultimate 모드를 켜기 위해서는 다시 시작해야 합니다.</value> <value>Ultimate 모드를 켜기 위해서는 다시 시작해야 합니다.</value>
</data> </data>
<data name="AlertUltimateTitle" xml:space="preserve"> <data name="AlertUltimateTitle" xml:space="preserve">
<value>다시 시작하시겠습니까?</value> <value>지금 다시 시작하시겠습니까?</value>
</data> </data>
<data name="AllyController" xml:space="preserve"> <data name="AllyController" xml:space="preserve">
<value>Ally Controller</value> <value>Ally 컨트롤러</value>
</data> </data>
<data name="AnimationSpeed" xml:space="preserve"> <data name="AnimationSpeed" xml:space="preserve">
<value>애니메이션 속도</value> <value>애니메이션 속도</value>
@@ -250,25 +250,25 @@
<value>절전 모드 해제</value> <value>절전 모드 해제</value>
</data> </data>
<data name="BacklightLow" xml:space="preserve"> <data name="BacklightLow" xml:space="preserve">
<value>Low</value> <value>낮음</value>
</data> </data>
<data name="BacklightMax" xml:space="preserve"> <data name="BacklightMax" xml:space="preserve">
<value>Max</value> <value>최대</value>
</data> </data>
<data name="BacklightMid" xml:space="preserve"> <data name="BacklightMid" xml:space="preserve">
<value>Mid</value> <value>중간</value>
</data> </data>
<data name="BacklightOff" xml:space="preserve"> <data name="BacklightOff" xml:space="preserve">
<value>Off</value> <value>꺼짐</value>
</data> </data>
<data name="BacklightTimeout" xml:space="preserve"> <data name="BacklightTimeout" xml:space="preserve">
<value>전원 / 배터리 사용 중 자동 꺼짐 시간 (0 - 항상 켜짐)</value> <value>전원 / 배터리 사용 중 자동 꺼짐 시간 (0 - 항상 켜짐)</value>
</data> </data>
<data name="BacklightTimeoutBattery" xml:space="preserve"> <data name="BacklightTimeoutBattery" xml:space="preserve">
<value>Backlight Timeout when on battery</value> <value>배터리 사용 중 백라이트 자동 꺼짐</value>
</data> </data>
<data name="BacklightTimeoutPlugged" xml:space="preserve"> <data name="BacklightTimeoutPlugged" xml:space="preserve">
<value>Backlight Timeout when plugged</value> <value>전원 사용 중 백라이트 자동 꺼짐</value>
</data> </data>
<data name="Balanced" xml:space="preserve"> <data name="Balanced" xml:space="preserve">
<value>균형</value> <value>균형</value>
@@ -283,7 +283,7 @@
<value>배터리 수명</value> <value>배터리 수명</value>
</data> </data>
<data name="BatteryLimitFull" xml:space="preserve"> <data name="BatteryLimitFull" xml:space="preserve">
<value>One time charge to 100%</value> <value>이번만 100%까지 충전</value>
</data> </data>
<data name="Binding" xml:space="preserve"> <data name="Binding" xml:space="preserve">
<value>Binding</value> <value>Binding</value>
@@ -301,7 +301,7 @@
<value>부팅</value> <value>부팅</value>
</data> </data>
<data name="BootSound" xml:space="preserve"> <data name="BootSound" xml:space="preserve">
<value>Boot Sound</value> <value>부팅 사운드</value>
</data> </data>
<data name="Brightness" xml:space="preserve"> <data name="Brightness" xml:space="preserve">
<value>밝기</value> <value>밝기</value>
@@ -313,10 +313,10 @@
<value>밝기 증가</value> <value>밝기 증가</value>
</data> </data>
<data name="BWTrayIcon" xml:space="preserve"> <data name="BWTrayIcon" xml:space="preserve">
<value>Black and white tray icon</value> <value>흑백 트레이 아이콘</value>
</data> </data>
<data name="Calibrate" xml:space="preserve"> <data name="Calibrate" xml:space="preserve">
<value>Calibrate</value> <value>보정</value>
</data> </data>
<data name="Charging" xml:space="preserve"> <data name="Charging" xml:space="preserve">
<value>충전 중</value> <value>충전 중</value>
@@ -325,10 +325,10 @@
<value>색상</value> <value>색상</value>
</data> </data>
<data name="Contrast" xml:space="preserve"> <data name="Contrast" xml:space="preserve">
<value>Contrast</value> <value>대비</value>
</data> </data>
<data name="Controller" xml:space="preserve"> <data name="Controller" xml:space="preserve">
<value>Controller</value> <value>컨트롤러</value>
</data> </data>
<data name="CPUBoost" xml:space="preserve"> <data name="CPUBoost" xml:space="preserve">
<value>CPU 부스트</value> <value>CPU 부스트</value>
@@ -337,16 +337,16 @@
<value>사용자 설정</value> <value>사용자 설정</value>
</data> </data>
<data name="Deceleration" xml:space="preserve"> <data name="Deceleration" xml:space="preserve">
<value>Deceleration</value> <value>감속</value>
</data> </data>
<data name="Default" xml:space="preserve"> <data name="Default" xml:space="preserve">
<value>기본</value> <value>기본</value>
</data> </data>
<data name="DisableController" xml:space="preserve"> <data name="DisableController" xml:space="preserve">
<value>Disable Controller</value> <value>컨트롤러 비활성화</value>
</data> </data>
<data name="DisableOnLidClose" xml:space="preserve"> <data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value> <value>덮개를 닫을 시 비활성화</value>
</data> </data>
<data name="DisableOverdrive" xml:space="preserve"> <data name="DisableOverdrive" xml:space="preserve">
<value>화면 OD 끄기</value> <value>화면 OD 끄기</value>
@@ -355,7 +355,7 @@
<value>방전 중</value> <value>방전 중</value>
</data> </data>
<data name="DownloadColorProfiles" xml:space="preserve"> <data name="DownloadColorProfiles" xml:space="preserve">
<value>Download Color Profiles</value> <value>색 프로필 다운로드</value>
</data> </data>
<data name="DownloadUpdate" xml:space="preserve"> <data name="DownloadUpdate" xml:space="preserve">
<value>다운로드</value> <value>다운로드</value>
@@ -384,7 +384,7 @@
<value>Energy Settings</value> <value>Energy Settings</value>
</data> </data>
<data name="Export" xml:space="preserve"> <data name="Export" xml:space="preserve">
<value>Export Profile</value> <value>프로필 내보내기</value>
</data> </data>
<data name="Extra" xml:space="preserve"> <data name="Extra" xml:space="preserve">
<value>추가 설정</value> <value>추가 설정</value>
@@ -426,16 +426,16 @@
<value>Fn 키를 누르지 않고 Fn+F 핫키 작동</value> <value>Fn 키를 누르지 않고 Fn+F 핫키 작동</value>
</data> </data>
<data name="FnLockOff" xml:space="preserve"> <data name="FnLockOff" xml:space="preserve">
<value>FN-Lock Off</value> <value>FN-Lock 꺼짐</value>
</data> </data>
<data name="FnLockOn" xml:space="preserve"> <data name="FnLockOn" xml:space="preserve">
<value>FN-Lock On</value> <value>FN-Lock 켜짐</value>
</data> </data>
<data name="GPUBoost" xml:space="preserve"> <data name="GPUBoost" xml:space="preserve">
<value>다이나믹 부스트</value> <value>다이나믹 부스트</value>
</data> </data>
<data name="GPUChanging" xml:space="preserve"> <data name="GPUChanging" xml:space="preserve">
<value>충전 중</value> <value>바꾸는 중</value>
</data> </data>
<data name="GPUCoreClockOffset" xml:space="preserve"> <data name="GPUCoreClockOffset" xml:space="preserve">
<value>코어 클럭 오프셋</value> <value>코어 클럭 오프셋</value>
@@ -471,10 +471,10 @@
<value>높게</value> <value>높게</value>
</data> </data>
<data name="ImageRotation" xml:space="preserve"> <data name="ImageRotation" xml:space="preserve">
<value>Image Rotation</value> <value>이미지 방향</value>
</data> </data>
<data name="Import" xml:space="preserve"> <data name="Import" xml:space="preserve">
<value>Import Profile</value> <value>프로필 가져오기</value>
</data> </data>
<data name="KeyBindings" xml:space="preserve"> <data name="KeyBindings" xml:space="preserve">
<value>키 설정</value> <value>키 설정</value>
@@ -495,7 +495,7 @@
<value>화면</value> <value>화면</value>
</data> </data>
<data name="LEDStatusIndicators" xml:space="preserve"> <data name="LEDStatusIndicators" xml:space="preserve">
<value>LED Status Indicators</value> <value>LED 상태 표시등</value>
</data> </data>
<data name="Lid" xml:space="preserve"> <data name="Lid" xml:space="preserve">
<value>덮개</value> <value>덮개</value>
@@ -507,7 +507,7 @@
<value>조명</value> <value>조명</value>
</data> </data>
<data name="LockScreen" xml:space="preserve"> <data name="LockScreen" xml:space="preserve">
<value>Lock Screen</value> <value>잠금화면</value>
</data> </data>
<data name="Logo" xml:space="preserve"> <data name="Logo" xml:space="preserve">
<value>로고</value> <value>로고</value>
@@ -516,10 +516,10 @@
<value>낮게</value> <value>낮게</value>
</data> </data>
<data name="LSDeadzones" xml:space="preserve"> <data name="LSDeadzones" xml:space="preserve">
<value>Left Stick Deadzones</value> <value>왼쪽 스틱 데드존</value>
</data> </data>
<data name="LTDeadzones" xml:space="preserve"> <data name="LTDeadzones" xml:space="preserve">
<value>Left Trigger Deadzones</value> <value>왼쪽 트리거 데드존</value>
</data> </data>
<data name="MatrixAudio" xml:space="preserve"> <data name="MatrixAudio" xml:space="preserve">
<value>오디오 비주얼라이저</value> <value>오디오 비주얼라이저</value>
@@ -591,7 +591,7 @@
<value>Multi Zone Strong</value> <value>Multi Zone Strong</value>
</data> </data>
<data name="Muted" xml:space="preserve"> <data name="Muted" xml:space="preserve">
<value>Muted</value> <value>음소거</value>
</data> </data>
<data name="MuteMic" xml:space="preserve"> <data name="MuteMic" xml:space="preserve">
<value>마이크 음소거</value> <value>마이크 음소거</value>
@@ -609,10 +609,10 @@
<value>연결되지 않음</value> <value>연결되지 않음</value>
</data> </data>
<data name="Off" xml:space="preserve"> <data name="Off" xml:space="preserve">
<value>Off</value> <value>꺼짐</value>
</data> </data>
<data name="On" xml:space="preserve"> <data name="On" xml:space="preserve">
<value>On</value> <value>켜짐</value>
</data> </data>
<data name="OneZone" xml:space="preserve"> <data name="OneZone" xml:space="preserve">
<value>One Zone</value> <value>One Zone</value>
@@ -666,7 +666,7 @@
<value>종료</value> <value>종료</value>
</data> </data>
<data name="Reset" xml:space="preserve"> <data name="Reset" xml:space="preserve">
<value>Reset</value> <value>초기화</value>
</data> </data>
<data name="RestartGPU" xml:space="preserve"> <data name="RestartGPU" xml:space="preserve">
<value>dGPU가 사용중이기 때문에 Eco 모드로 전환할 수 없습니다. 장치 관리자에서 dGPU를 재시작하시겠습니까?</value> <value>dGPU가 사용중이기 때문에 Eco 모드로 전환할 수 없습니다. 장치 관리자에서 dGPU를 재시작하시겠습니까?</value>
@@ -675,10 +675,10 @@
<value>RPM</value> <value>RPM</value>
</data> </data>
<data name="RSDeadzones" xml:space="preserve"> <data name="RSDeadzones" xml:space="preserve">
<value>Right Stick Deadzones</value> <value>오른쪽 스틱 데드존</value>
</data> </data>
<data name="RTDeadzones" xml:space="preserve"> <data name="RTDeadzones" xml:space="preserve">
<value>Right Trigger Deadzones</value> <value>오른쪽 트리거 데드존</value>
</data> </data>
<data name="RunOnStartup" xml:space="preserve"> <data name="RunOnStartup" xml:space="preserve">
<value>시스템 시작 시 실행</value> <value>시스템 시작 시 실행</value>
@@ -759,7 +759,7 @@
<value>언더볼팅은 실험적이며 위험한 기능입니다. 적용 값이 너무 낮은 경우 시스템이 불안정해지고, 강제 종료되거나 데이터 손상을 유발할 수 있습니다. 낮은 값부터 적용하여 잘 작동하는지 확인해 보십시오.</value> <value>언더볼팅은 실험적이며 위험한 기능입니다. 적용 값이 너무 낮은 경우 시스템이 불안정해지고, 강제 종료되거나 데이터 손상을 유발할 수 있습니다. 낮은 값부터 적용하여 잘 작동하는지 확인해 보십시오.</value>
</data> </data>
<data name="Unmuted" xml:space="preserve"> <data name="Unmuted" xml:space="preserve">
<value>Unmuted</value> <value>음소거 해제</value>
</data> </data>
<data name="Updates" xml:space="preserve"> <data name="Updates" xml:space="preserve">
<value>업데이트</value> <value>업데이트</value>
@@ -768,16 +768,16 @@
<value>버전</value> <value>버전</value>
</data> </data>
<data name="VibrationStrength" xml:space="preserve"> <data name="VibrationStrength" xml:space="preserve">
<value>Vibration Strength</value> <value>진동 세기</value>
</data> </data>
<data name="VisualMode" xml:space="preserve"> <data name="VisualMode" xml:space="preserve">
<value>Visual Mode</value> <value>비주얼 모드</value>
</data> </data>
<data name="VisualModesHDR" xml:space="preserve"> <data name="VisualModesHDR" xml:space="preserve">
<value>Visual Modes are not available when HDR is active</value> <value>HDR이 켜져 있을 때에는 비주얼 모드를 사용할 수 없습니다.</value>
</data> </data>
<data name="VisualModesScreen" xml:space="preserve"> <data name="VisualModesScreen" xml:space="preserve">
<value>Visual Modes are not available when laptop screen is off</value> <value>노트북의 화면이 꺼져 있을 때에는 비주얼 모드를 사용할 수 없습니다.</value>
</data> </data>
<data name="VolumeDown" xml:space="preserve"> <data name="VolumeDown" xml:space="preserve">
<value>볼륨 작게</value> <value>볼륨 작게</value>
@@ -792,6 +792,6 @@
<value>창을 항상 맨 위로 유지</value> <value>창을 항상 맨 위로 유지</value>
</data> </data>
<data name="Zoom" xml:space="preserve"> <data name="Zoom" xml:space="preserve">
<value>Zoom</value> <value>확대/축소</value>
</data> </data>
</root> </root>

View File

@@ -729,7 +729,7 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Aura'yı Kullan</value> <value>Aura'yı Kullan</value>
</data> </data>
<data name="ToggleClamshellMode" xml:space="preserve"> <data name="ToggleClamshellMode" xml:space="preserve">
<value>Kapaklı modu otmatik değiştir</value> <value>Otomatik Clamshell Modunu Aç</value>
</data> </data>
<data name="ToggleFnLock" xml:space="preserve"> <data name="ToggleFnLock" xml:space="preserve">
<value>Fn-Lock'u Aç</value> <value>Fn-Lock'u Aç</value>

View File

@@ -135,6 +135,7 @@ namespace GHelper
labelGamma = new Label(); labelGamma = new Label();
pictureGamma = new PictureBox(); pictureGamma = new PictureBox();
labelGammaTitle = new Label(); labelGammaTitle = new Label();
buttonAutoTDP = new RButton();
panelMatrix.SuspendLayout(); panelMatrix.SuspendLayout();
panelMatrixAuto.SuspendLayout(); panelMatrixAuto.SuspendLayout();
tableLayoutMatrix.SuspendLayout(); tableLayoutMatrix.SuspendLayout();
@@ -766,6 +767,7 @@ namespace GHelper
tableAMD.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33F)); tableAMD.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33F));
tableAMD.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33F)); tableAMD.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33F));
tableAMD.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33F)); tableAMD.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33F));
tableAMD.Controls.Add(buttonAutoTDP, 0, 0);
tableAMD.Controls.Add(buttonOverlay, 0, 0); tableAMD.Controls.Add(buttonOverlay, 0, 0);
tableAMD.Controls.Add(buttonFPS, 0, 0); tableAMD.Controls.Add(buttonFPS, 0, 0);
tableAMD.Dock = DockStyle.Top; tableAMD.Dock = DockStyle.Top;
@@ -1893,6 +1895,28 @@ namespace GHelper
labelGammaTitle.TabIndex = 37; labelGammaTitle.TabIndex = 37;
labelGammaTitle.Text = "Flicker-free Dimming"; labelGammaTitle.Text = "Flicker-free Dimming";
// //
// buttonAutoTDP
//
buttonAutoTDP.Activated = false;
buttonAutoTDP.BackColor = SystemColors.ControlLightLight;
buttonAutoTDP.BorderColor = Color.Transparent;
buttonAutoTDP.BorderRadius = 5;
buttonAutoTDP.Dock = DockStyle.Fill;
buttonAutoTDP.FlatAppearance.BorderSize = 0;
buttonAutoTDP.FlatStyle = FlatStyle.Flat;
buttonAutoTDP.ForeColor = SystemColors.ControlText;
buttonAutoTDP.Image = Properties.Resources.icons8_gauge_32;
buttonAutoTDP.ImageAlign = ContentAlignment.MiddleRight;
buttonAutoTDP.Location = new Point(528, 4);
buttonAutoTDP.Margin = new Padding(4);
buttonAutoTDP.Name = "buttonAutoTDP";
buttonAutoTDP.Secondary = false;
buttonAutoTDP.Size = new Size(255, 72);
buttonAutoTDP.TabIndex = 13;
buttonAutoTDP.Text = "AutoTDP";
buttonAutoTDP.TextImageRelation = TextImageRelation.ImageBeforeText;
buttonAutoTDP.UseVisualStyleBackColor = false;
//
// SettingsForm // SettingsForm
// //
AutoScaleDimensions = new SizeF(192F, 192F); AutoScaleDimensions = new SizeF(192F, 192F);
@@ -2095,5 +2119,6 @@ namespace GHelper
private RButton buttonInstallColor; private RButton buttonInstallColor;
private Label labelVisual; private Label labelVisual;
private RButton buttonFHD; private RButton buttonFHD;
private RButton buttonAutoTDP;
} }
} }

View File

@@ -222,7 +222,9 @@ namespace GHelper
buttonUpdates.Click += ButtonUpdates_Click; buttonUpdates.Click += ButtonUpdates_Click;
sliderBattery.ValueChanged += SliderBattery_ValueChanged; sliderBattery.MouseUp += SliderBattery_MouseUp;
sliderBattery.KeyUp += SliderBattery_KeyUp;
Program.trayIcon.MouseMove += TrayIcon_MouseMove; Program.trayIcon.MouseMove += TrayIcon_MouseMove;
sensorTimer = new System.Timers.Timer(AppConfig.Get("sensor_timer", 1000)); sensorTimer = new System.Timers.Timer(AppConfig.Get("sensor_timer", 1000));
@@ -249,6 +251,9 @@ namespace GHelper
buttonFPS.Click += ButtonFPS_Click; buttonFPS.Click += ButtonFPS_Click;
buttonOverlay.Click += ButtonOverlay_Click; buttonOverlay.Click += ButtonOverlay_Click;
buttonAutoTDP.Click += ButtonAutoTDP_Click;
buttonAutoTDP.BorderColor = colorTurbo;
Text = "G-Helper " + (ProcessHelper.IsUserAdministrator() ? "—" : "-") + " " + AppConfig.GetModelShort(); Text = "G-Helper " + (ProcessHelper.IsUserAdministrator() ? "—" : "-") + " " + AppConfig.GetModelShort();
TopMost = AppConfig.Is("topmost"); TopMost = AppConfig.Is("topmost");
@@ -272,6 +277,21 @@ namespace GHelper
screenControl.ToogleFHD(); screenControl.ToogleFHD();
} }
private void SliderBattery_KeyUp(object? sender, KeyEventArgs e)
{
BatteryControl.SetBatteryChargeLimit(sliderBattery.Value);
}
private void SliderBattery_MouseUp(object? sender, MouseEventArgs e)
{
BatteryControl.SetBatteryChargeLimit(sliderBattery.Value);
}
private void ButtonAutoTDP_Click(object? sender, EventArgs e)
{
allyControl.ToggleAutoTDP();
}
private void LabelCharge_Click(object? sender, EventArgs e) private void LabelCharge_Click(object? sender, EventArgs e)
{ {
BatteryControl.BatteryReport(); BatteryControl.BatteryReport();
@@ -496,6 +516,12 @@ namespace GHelper
buttonFPS.Text = "FPS Limit " + ((limit > 0 && limit <= 120) ? limit : "OFF"); buttonFPS.Text = "FPS Limit " + ((limit > 0 && limit <= 120) ? limit : "OFF");
} }
public void VisualiseAutoTDP(bool status)
{
Logger.WriteLine($"Auto TDP: {status}");
buttonAutoTDP.Activated = status;
}
private void SettingsForm_LostFocus(object? sender, EventArgs e) private void SettingsForm_LostFocus(object? sender, EventArgs e)
{ {
lastLostFocus = DateTimeOffset.Now.ToUnixTimeMilliseconds(); lastLostFocus = DateTimeOffset.Now.ToUnixTimeMilliseconds();
@@ -736,11 +762,6 @@ namespace GHelper
gpuControl.ToggleXGM(); gpuControl.ToggleXGM();
} }
private void SliderBattery_ValueChanged(object? sender, EventArgs e)
{
BatteryControl.SetBatteryChargeLimit(sliderBattery.Value);
}
public void SetVersionLabel(string label, bool update = false) public void SetVersionLabel(string label, bool update = false)
{ {
@@ -1210,6 +1231,7 @@ namespace GHelper
else if (miniled2 >= 0) else if (miniled2 >= 0)
{ {
buttonMiniled.Enabled = !hdr; buttonMiniled.Enabled = !hdr;
if (hdr) miniled2 = 1; // Show HDR as Multizone Strong
switch (miniled2) switch (miniled2)
{ {
@@ -1227,9 +1249,9 @@ namespace GHelper
break; break;
// Multizone Off // Multizone Off
case 2: case 2:
buttonMiniled.Text = hdr ? Properties.Strings.Multizone : Properties.Strings.OneZone; buttonMiniled.Text = Properties.Strings.OneZone;
buttonMiniled.BorderColor = colorStandard; buttonMiniled.BorderColor = colorStandard;
buttonMiniled.Activated = hdr; buttonMiniled.Activated = false;
break; break;
} }
} }