Compare commits

..

98 Commits

Author SHA1 Message Date
Serge
f3723e9d6f Merge branch 'main' of https://github.com/seerge/g-helper 2024-06-04 22:31:56 +02:00
Serge
d47990c056 Limits 2024-06-04 22:31:54 +02:00
Luca
c2a68d3022 Battery Percentage Pattern for Slash Lighting (#2685)
* quicksave / testing

* implemented battery charge pattern

* changed defaults

* immediately refresh pattern

* cleaned up comments
2024-06-04 22:29:14 +02:00
Serge
26e26b9701 Cleanup 2024-06-04 12:13:22 +02:00
Serge
a315f27a4f Version bump 2024-06-03 15:59:58 +02:00
Serge
26642a0020 Update README.md 2024-06-03 11:37:13 +02:00
Serge
6f1236b16c UI Tweaks 2024-06-03 11:29:44 +02:00
Serge
f07c481b3b XGM Init after connection 2024-06-03 01:53:42 +02:00
Serge
c30fcd6ba7 APU Skin temp limit slider https://github.com/seerge/g-helper/issues/2673 2024-06-02 22:39:17 +02:00
Serge
53bb4b8760 Charge limits for GA403 2024-06-02 12:28:03 +02:00
Serge
34ec26dba0 Charge limits for GA503R 2024-06-01 22:33:16 +02:00
Serge
b6c7da53c1 Extended list of Dynamic Lighting model list 2024-06-01 16:36:57 +02:00
Serge
344a0269ef Dynamic Lighting detection 2024-06-01 16:15:00 +02:00
Serge
5157357c8b Dynamic lighting detection 2024-06-01 16:14:24 +02:00
Serge
ad622f3924 Merge branch 'main' of https://github.com/seerge/g-helper 2024-06-01 12:47:14 +02:00
Serge
2799936909 Added Ally 2024 RC72 model name 2024-06-01 12:47:12 +02:00
Serge
134ca5d680 Update README.md 2024-06-01 11:39:06 +02:00
Serge
d076765d5c Unsupported charge limits for GU605 2024-06-01 11:27:23 +02:00
Serge
9514caef94 Removed unsupported charge limits 2024-06-01 11:19:34 +02:00
Serge
64b5547126 Version bump 2024-06-01 11:17:24 +02:00
Serge
d133abba1c Merge branch 'main' of https://github.com/seerge/g-helper 2024-06-01 11:16:12 +02:00
Serge
bf4eae6081 Removed unsupported charge limits https://github.com/seerge/g-helper/discussions/2408 2024-06-01 11:16:10 +02:00
Serge
8ff9b07a60 Cleanup 2024-05-31 15:37:54 +02:00
Serge
1011469628 Update FUNDING.yml 2024-05-31 15:23:23 +02:00
Serge
22434ff86a Update FUNDING.yml 2024-05-31 15:21:27 +02:00
Serge
7f0c3143f4 Update README.md 2024-05-31 15:18:55 +02:00
Hoang Pham Anh Duy
4216c2d73d Close mouse settings on main window close (#2654) 2024-05-31 14:25:14 +02:00
IceStormNG
34161eee7c Support for ROG Keris P509 (#2655)
* Support for Strix Carry (P508)

* Fixes polling rate, angle snapping and debounce for Gladius II Origin.

* The Gen2 version of the TuF M3 uses 0-100 for brightness.

* Adds support for ROG Strix Impact III (P518)

* Import/Export feature for mice.

* Suppor for Strix Impact (P303)

* Support for Strix Impact II Electro Punk

* Strix Carry has 50 DPI minimum and increments of 50.

* Respect top-most setting of GHelper

* Fixes to the buttons to be wider to fit longer translations.

* Basic support for the Galdius III EVA02

* Gladius wireless and wired PIDs were switched

* Add support for the chinese variant of the M4 Wireless, the P310

* Apparently there is another Gladius III that is not wireless at all. Renaming the wireless to make it a little less confusing.

* Adds Support for Galdius III (wired) P514

* Support for P504 Glaidus II PKN

* Support for the ROG Keris wired mouse P509
2024-05-30 10:50:18 +02:00
Serge
6129f79b68 Update Strings.resx 2024-05-30 10:29:29 +02:00
Serge
01fc5a3265 Update README.md 2024-05-29 14:24:07 +02:00
IceStormNG
fd5c7cd8e4 Support for P504 Glaidus II PNK LTD (#2651)
* Support for Strix Carry (P508)

* Fixes polling rate, angle snapping and debounce for Gladius II Origin.

* The Gen2 version of the TuF M3 uses 0-100 for brightness.

* Adds support for ROG Strix Impact III (P518)

* Import/Export feature for mice.

* Suppor for Strix Impact (P303)

* Support for Strix Impact II Electro Punk

* Strix Carry has 50 DPI minimum and increments of 50.

* Respect top-most setting of GHelper

* Fixes to the buttons to be wider to fit longer translations.

* Basic support for the Galdius III EVA02

* Gladius wireless and wired PIDs were switched

* Add support for the chinese variant of the M4 Wireless, the P310

* Apparently there is another Gladius III that is not wireless at all. Renaming the wireless to make it a little less confusing.

* Adds Support for Galdius III (wired) P514

* Support for P504 Glaidus II PKN
2024-05-29 11:19:47 +02:00
Serge
ced4eac341 Gladius II Origin PNK 2024-05-29 00:46:28 +02:00
Serge
51c7738f15 Factory Defaults tweak 2024-05-28 19:36:11 +02:00
Hoang Pham Anh Duy
b62fe46759 Polling rate fix for Keris Wireless Aimpoint (#2644)
On newest firmware (April 2024), on packet 13, instead start from 0 for polling rate values, they bump it to 96.
2024-05-28 19:34:38 +02:00
Serge
51c099163e Toast corner aliasing https://github.com/seerge/g-helper/issues/2642 2024-05-28 10:25:36 +02:00
Serge
61c114625a Version bump 2024-05-26 12:59:03 +02:00
Serge
f794110c2a Slash Enable tweaks 2024-05-26 12:49:48 +02:00
Serge
740a10fed8 Slash Enable flag 2024-05-26 12:41:26 +02:00
Serge
696f6f046f Merge branch 'main' of https://github.com/seerge/g-helper 2024-05-25 18:17:34 +02:00
Serge
79c0db6c4c Aura modes for Strix devices 2024-05-25 18:17:32 +02:00
Serge
008a00e121 Update README.md 2024-05-25 11:46:33 +02:00
Serge
52952e74db Slash Wake up 2024-05-24 17:12:42 +02:00
Serge
87ee3e4681 Slash Wake Up commands 2024-05-24 17:11:59 +02:00
Serge
05434f5a00 Update README.md 2024-05-23 12:44:50 +02:00
Serge
7e4de0d064 Update README.md 2024-05-23 10:26:39 +02:00
Serge
51b7e8e9bd New translations strings.resx (Chinese Traditional) (#2624) 2024-05-23 09:15:39 +02:00
Serge
bacea8ede1 Version bump 2024-05-22 21:34:49 +02:00
Serge
e69b6ea5b0 Merge branch 'main' of https://github.com/seerge/g-helper 2024-05-22 16:54:39 +02:00
Serge
cf142f847d Update section tweaks 2024-05-22 16:54:37 +02:00
Serge
fabc7e194b Update README.md 2024-05-21 10:47:44 +02:00
Serge
98d255d8fd New translations strings.resx (Ukrainian) (#2618) 2024-05-21 10:43:51 +02:00
IceStormNG
1d1cef12c3 Support for P514 (Gladius III) (#2614)
* Support for Strix Carry (P508)

* Fixes polling rate, angle snapping and debounce for Gladius II Origin.

* The Gen2 version of the TuF M3 uses 0-100 for brightness.

* Adds support for ROG Strix Impact III (P518)

* Import/Export feature for mice.

* Suppor for Strix Impact (P303)

* Support for Strix Impact II Electro Punk

* Strix Carry has 50 DPI minimum and increments of 50.

* Respect top-most setting of GHelper

* Fixes to the buttons to be wider to fit longer translations.

* Basic support for the Galdius III EVA02

* Gladius wireless and wired PIDs were switched

* Add support for the chinese variant of the M4 Wireless, the P310

* Apparently there is another Gladius III that is not wireless at all. Renaming the wireless to make it a little less confusing.

* Adds Support for Galdius III (wired) P514
2024-05-20 10:35:19 +02:00
Serge
9c3d19c7a4 New Crowdin updates (#2600)
* New translations strings.resx (Chinese Traditional)

* New translations strings.resx (Chinese Traditional)
2024-05-17 11:06:04 +02:00
Serge
06b4df29cb Exception handling https://github.com/seerge/g-helper/issues/2596 2024-05-15 23:19:20 +02:00
Serge
2628695bbc Visual Modes cleanup 2024-05-15 23:14:33 +02:00
Serge
8c5fc0f643 Config tweaks 2024-05-15 19:08:11 +02:00
Serge
cf3c61e467 Config setting for 4Zone RGB 2024-05-15 18:57:51 +02:00
Serge
9a3b689d29 Merge branch 'main' of https://github.com/seerge/g-helper 2024-05-15 18:23:37 +02:00
Serge
ae94f66699 Added G614JI to the list of 4-zone RGB models https://github.com/seerge/g-helper/issues/1641#issuecomment-2112928673 2024-05-15 18:23:34 +02:00
Serge
71b5e24f63 New Crowdin updates (#2582)
* New translations strings.resx (Spanish)

* New translations strings.resx (Turkish)
2024-05-14 11:11:07 +02:00
Serge
3139252740 Merge branch 'main' of https://github.com/seerge/g-helper 2024-05-13 17:05:42 +02:00
Serge
50a020dd58 Version bump 2024-05-13 17:05:40 +02:00
Serge
c804d6a6b1 New Crowdin updates (#2579)
* New translations strings.resx (Chinese Traditional)

* New translations strings.resx (Chinese Traditional)
2024-05-12 10:49:49 +02:00
Serge
f2b3f2fe64 New Crowdin updates (#2578)
* New translations strings.resx (Turkish)

* New translations strings.resx (Chinese Traditional)

* New translations strings.resx (German)

* New translations strings.resx (Danish)

* New translations strings.resx (Romanian)

* New translations strings.resx (French)

* New translations strings.resx (Spanish)

* New translations strings.resx (Hungarian)

* New translations strings.resx (Italian)

* New translations strings.resx (Korean)

* New translations strings.resx (Lithuanian)

* New translations strings.resx (Polish)

* New translations strings.resx (Portuguese)

* New translations strings.resx (Ukrainian)

* New translations strings.resx (Chinese Simplified)

* New translations strings.resx (Vietnamese)

* New translations strings.resx (Portuguese, Brazilian)

* New translations strings.resx (Indonesian)
2024-05-11 23:18:23 +02:00
Serge
c7d3b4ea3a Merge branch 'main' of https://github.com/seerge/g-helper 2024-05-11 18:42:34 +02:00
Serge
a0c15e6732 Touchscreen toggle binding https://github.com/seerge/g-helper/issues/2575 2024-05-11 18:42:31 +02:00
Serge
6ab48b1540 New Crowdin updates (#2576)
* New translations strings.resx (Indonesian)

* New translations strings.resx (Indonesian)
2024-05-11 14:14:33 +02:00
Serge
5b383b2884 Merge branch 'main' of https://github.com/seerge/g-helper 2024-05-10 21:21:41 +02:00
Serge
df56e2af23 Show current installed driver version in Updates tooltips https://github.com/seerge/g-helper/issues/2572 2024-05-10 21:21:38 +02:00
Serge
a618866804 Update README.zh-CN.md 2024-05-10 20:47:33 +02:00
Serge
877feeab02 Update README.md 2024-05-09 11:19:31 +02:00
Serge
b697ed5a66 AutoTDP tuning 2024-05-07 21:56:03 +02:00
Serge
e642c550f9 Merge branch 'main' of https://github.com/seerge/g-helper 2024-05-07 13:31:26 +02:00
Serge
660aae0f3e Added ASUSLiveUpdateAgent to the services list https://github.com/seerge/g-helper/issues/2558 2024-05-07 13:31:24 +02:00
Serge
ed41766108 New translations strings.resx (Korean) (#2554) 2024-05-06 19:07:48 +02:00
Serge
a43479dbba Save boot sounds status https://github.com/seerge/g-helper/issues/2555 2024-05-06 19:04:46 +02:00
Serge
43c71b833d Exception handling https://github.com/seerge/g-helper/issues/2556 2024-05-06 19:01:32 +02:00
Serge
2948a29b71 Extended process list 2024-05-04 22:21:23 +02:00
Serge
8f2a13b1ad Extended process list 2024-05-04 15:38:08 +02:00
Serge
b75471a052 Merge branch 'main' of https://github.com/seerge/g-helper 2024-05-04 15:34:38 +02:00
Serge
c8bd2a9c1c Option to stop AC service 2024-05-04 15:34:36 +02:00
Serge
9eb853d8b2 Update README.md 2024-05-03 20:39:18 +02:00
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
58 changed files with 1166 additions and 393 deletions

13
.github/FUNDING.yml vendored
View File

@@ -1,13 +0,0 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA

View File

@@ -353,10 +353,10 @@ namespace GHelper.Ally
int power = (int)amdControl.GetGpuPower();
//Debug.WriteLine($"{power}: {fps}");
if (fps <= fpsLimit * 0.8) _upCount++;
if (fps <= Math.Min(fpsLimit * 0.9, fpsLimit - 4)) _upCount++;
else _upCount = 0;
if (fps >= fpsLimit * 0.90) _downCount++;
if (fps >= Math.Min(fpsLimit * 0.95, fpsLimit - 2)) _downCount++;
else _downCount = 0;
var tdp = GetTDP();
@@ -424,9 +424,15 @@ namespace GHelper.Ally
switch (fpsLimit)
{
case 30:
fpsLimit = 40;
break;
case 40:
fpsLimit = 45;
break;
case 45:
fpsLimit = 50;
break;
case 50:
fpsLimit = 60;
break;
case 60:

View File

@@ -14,6 +14,7 @@ namespace GHelper.AnimeMatrix
SettingsForm settings;
System.Timers.Timer matrixTimer = default!;
System.Timers.Timer slashTimer = default!;
public AnimeMatrixDevice? deviceMatrix;
public SlashDevice? deviceSlash;
@@ -45,6 +46,7 @@ namespace GHelper.AnimeMatrix
matrixTimer = new System.Timers.Timer(100);
matrixTimer.Elapsed += MatrixTimer_Elapsed;
}
catch (Exception ex)
{
@@ -86,8 +88,9 @@ namespace GHelper.AnimeMatrix
if (brightness == 0 || (auto && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online) || (lid && lidClose))
{
deviceSlash.Init();
deviceSlash.SetOptions(false, 0, 0);
deviceSlash.SetEnabled(false);
//deviceSlash.Init();
//deviceSlash.SetOptions(false, 0, 0);
deviceSlash.SetSleepActive(false);
}
else
@@ -98,8 +101,9 @@ namespace GHelper.AnimeMatrix
_wakeUp = false;
}
deviceSlash.SetEnabled(true);
deviceSlash.Init();
switch ((SlashMode)running)
{
case SlashMode.Static:
@@ -112,12 +116,18 @@ namespace GHelper.AnimeMatrix
deviceSlash.SetStatic(brightness);
}
break;
case SlashMode.BatteryLevel:
// call tick to immediately update the pattern
SlashTimer_start();
SlashTimer_tick();
break;
default:
deviceSlash.SetMode((SlashMode)running);
deviceSlash.SetOptions(true, brightness, inteval);
deviceSlash.Save();
break;
}
// kill the timer if we are not displaying battery pattern
deviceSlash.SetSleepActive(true);
}
@@ -235,7 +245,6 @@ namespace GHelper.AnimeMatrix
matrixTimer.Stop();
}
private void MatrixTimer_Elapsed(object? sender, ElapsedEventArgs e)
{
@@ -253,13 +262,58 @@ namespace GHelper.AnimeMatrix
}
public void SetMatrixClock()
{
deviceMatrix.SetBuiltInAnimation(false);
StartMatrixTimer(1000);
Logger.WriteLine("Matrix Clock");
}
private void SlashTimer_start(int interval = 60000)
{
// 100% to 0% in 1hr = 1% every 36 seconds
// 1 bracket every 14.2857 * 36s = 514s ~ 8m 30s
// only ~5 actually distinguishable levels, so refresh every <= 514/5 ~ 100s
// default is 60s
// create the timer if first call
// this way, the timer only spawns if user tries to use battery pattern
if(slashTimer == default(System.Timers.Timer))
{
slashTimer = new System.Timers.Timer(interval);
slashTimer.Elapsed += SlashTimer_elapsed;
slashTimer.AutoReset = true;
}
// only write if interval changed
if(slashTimer.Interval != interval)
{
slashTimer.Interval = interval;
}
slashTimer.Start();
}
private void SlashTimer_elapsed(object? sender, ElapsedEventArgs e)
{
SlashTimer_tick();
}
private void SlashTimer_tick()
{
if (deviceSlash is null) return;
//kill timer if called but not in battery pattern mode
if((SlashMode)AppConfig.Get("matrix_running", 0) != SlashMode.BatteryLevel)
{
slashTimer.Stop();
slashTimer.Dispose();
return;
}
deviceSlash.SetBatteryPattern(AppConfig.Get("matrix_brightness", 0));
}
public void Dispose()
{
@@ -395,7 +449,6 @@ namespace GHelper.AnimeMatrix
deviceMatrix.Present();
}
public void OpenMatrixPicture()
{
string fileName = null;

View File

@@ -1,5 +1,7 @@
using GHelper.AnimeMatrix.Communication;
using System.Management;
using System.Text;
using System.Timers;
namespace GHelper.AnimeMatrix
{
@@ -20,7 +22,8 @@ namespace GHelper.AnimeMatrix
GameOver,
Start,
Buzzer,
Static
Static,
BatteryLevel,
}
internal class SlashPacket : Packet
@@ -54,7 +57,9 @@ namespace GHelper.AnimeMatrix
{ SlashMode.GameOver, "Game Over"},
{ SlashMode.Start, "Start"},
{ SlashMode.Buzzer, "Buzzer"},
{ SlashMode.Static, "Static"},
{ SlashMode.BatteryLevel, "Battery Level"}
};
private static Dictionary<SlashMode, byte> modeCodes = new Dictionary<SlashMode, byte>
@@ -87,6 +92,8 @@ namespace GHelper.AnimeMatrix
public void WakeUp()
{
Set(Packet<SlashPacket>(Encoding.ASCII.GetBytes("ASUS Tech.Inc.")), "SlashWakeUp");
Set(Packet<SlashPacket>(0xC2), "SlashWakeUp");
Set(Packet<SlashPacket>(0xD1, 0x01, 0x00, 0x01), "SlashWakeUp");
}
public void Init()
@@ -95,6 +102,11 @@ namespace GHelper.AnimeMatrix
Set(Packet<SlashPacket>(0xD2, 0x02, 0x01, 0x08, 0xAB), "SlashInit");
}
public void SetEnabled(bool status = true)
{
Set(Packet<SlashPacket>(0xD8, 0x02, 0x00, 0x01, status ? (byte)0x00 : (byte)0x80), $"SlashEnable {status}");
}
public void Save()
{
Set(Packet<SlashPacket>(0xD4, 0x00, 0x00, 0x01, 0xAB), "SlashSave");
@@ -120,7 +132,50 @@ namespace GHelper.AnimeMatrix
public void SetStatic(int brightness = 0)
{
SetCustom(Enumerable.Repeat((byte)(brightness * 85.333), 7).ToArray());
}
public static double GetBatteryChargePercentage()
{
double batteryCharge = 0;
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Battery");
foreach (ManagementObject battery in searcher.Get())
{
batteryCharge = Convert.ToDouble(battery["EstimatedChargeRemaining"]);
break; // Assuming only one battery
}
}
catch (ManagementException e)
{
Console.WriteLine("An error occurred while querying for WMI data: " + e.Message);
}
return batteryCharge;
}
private byte[] GetBatteryPattern(int brightness, double percentage)
{
// because 7 segments, within each led segment represents a percentage bracket of (100/7 = 14.2857%)
// set brightness to reflect battery's percentage within that range
int bracket = (int)Math.Floor(percentage / 14.2857);
if(bracket >= 7) return Enumerable.Repeat((byte)(brightness * 85.333), 7).ToArray();
byte[] batteryPattern = Enumerable.Repeat((byte)(0x00), 7).ToArray();
for (int i = 6; i > 6-bracket; i--)
{
batteryPattern[i] = (byte)(brightness * 85.333);
}
//set the "selected" bracket to the percentage of that bracket filled from 0 to 255 as a hex
batteryPattern[6-bracket] = (byte)(((percentage % 14.2857) * brightness * 85.333) / 14.2857);
return batteryPattern;
}
public void SetBatteryPattern(int brightness)
{
SetCustom(GetBatteryPattern(brightness, 100*(GetBatteryChargePercentage()/AppConfig.Get("charge_limit",100))));
}
public void SetCustom(byte[] data)

View File

@@ -109,7 +109,8 @@ public static class AppConfig
break;
}
}
} catch (Exception ex)
}
catch (Exception ex)
{
Logger.WriteLine(ex.Message);
}
@@ -337,7 +338,7 @@ public static class AppConfig
public static bool IsAlly()
{
return ContainsModel("RC71");
return ContainsModel("RC71") || ContainsModel("RC72");
}
public static bool NoMKeys()
@@ -411,12 +412,12 @@ public static class AppConfig
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()
{
return Is("no_overdrive") || IsOLED();
return Is("no_overdrive");
}
public static bool IsNoSleepEvent()
@@ -431,7 +432,12 @@ public static class AppConfig
public static bool IsStrixLimitedRGB()
{
return (ContainsModel("G614JV_") || ContainsModel("G614JZ") || ContainsModel("G512LI") || ContainsModel("G513R") || ContainsModel("G713PV") || ContainsModel("G513IE") || ContainsModel("G713RC") || ContainsModel("G513QM") || ContainsModel("G531G")) && !Is("per_key_rgb");
return ContainsModel("G512LI") || ContainsModel("G513R") || ContainsModel("G713PV") || ContainsModel("G513IE") || ContainsModel("G713RC") || ContainsModel("G513QM") || ContainsModel("G531G");
}
public static bool Is4ZoneRGB()
{
return (ContainsModel("G614JI_") || ContainsModel("G614JV_") || ContainsModel("G614JZ") || IsStrixLimitedRGB()) && !Is("per_key_rgb");
}
@@ -615,6 +621,26 @@ public static class AppConfig
return Is("bw_icon");
}
public static bool IsStopAC()
{
return IsAlly() || Is("stop_ac");
}
public static bool IsChargeLimit80()
{
return ContainsModel("GA403UI");
}
public static bool IsChargeLimit6080()
{
return ContainsModel("GA403UU") || ContainsModel("GA403UV") || ContainsModel("GU605") || ContainsModel("GA503R") || (IsTUF() && !(ContainsModel("FX507Z") || ContainsModel("FA617")));
}
// 2024 Models support Dynamic Lighting
public static bool IsDynamicLighting()
{
return IsSlash() || ContainsModel("JIR") || ContainsModel("JZR") || ContainsModel("JVR") || ContainsModel("JYR") || ContainsModel("FA607P") || ContainsModel("FX607J") || ContainsModel("FA507U");
}
}

View File

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

View File

@@ -1,5 +1,4 @@
using GHelper.Helpers;
using System.Diagnostics;
using System.Diagnostics;
namespace GHelper.Battery
{
@@ -37,6 +36,17 @@ namespace GHelper.Battery
if (limit < 0) limit = AppConfig.Get("charge_limit");
if (limit < 40 || limit > 100) return;
if (AppConfig.IsChargeLimit80())
{
limit = (limit <= 80) ? 80 : 100;
}
if (AppConfig.IsChargeLimit6080())
{
if (limit > 80) limit = 100;
else if (limit < 60) limit = 60;
}
Program.acpi.DeviceSet(AsusACPI.BatteryLimit, limit, "BatteryLimit");
AppConfig.Set("charge_limit", limit);

View File

@@ -51,10 +51,10 @@ namespace GHelper.Display
ScreenNative.SetRefreshRate(laptopScreen, frequency);
}
if (overdrive >= 0)
if (Program.acpi.IsOverdriveSupported() && 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");
}
@@ -65,7 +65,10 @@ namespace GHelper.Display
if (Program.acpi.DeviceGet(AsusACPI.ScreenMiniled1) >= 0)
Program.acpi.DeviceSet(AsusACPI.ScreenMiniled1, miniled, "Miniled1");
else
{
Program.acpi.DeviceSet(AsusACPI.ScreenMiniled2, miniled, "Miniled2");
Thread.Sleep(100);
}
}
InitScreen();
@@ -84,7 +87,7 @@ namespace GHelper.Display
}
}
public int ToogleMiniled()
public string ToogleMiniled()
{
int miniled1 = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled1);
int miniled2 = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled2);
@@ -92,24 +95,45 @@ namespace GHelper.Display
Logger.WriteLine($"MiniledToggle: {miniled1} {miniled2}");
int miniled;
string name;
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
{
switch (miniled2)
{
case 1: miniled = 2; break;
case 2: miniled = 0; break;
default: miniled = 1; break;
case 1:
miniled = 2;
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);
SetScreen(miniled: miniled);
return miniled;
return name;
}
public void InitScreen()
@@ -119,7 +143,7 @@ namespace GHelper.Display
int maxFrequency = ScreenNative.GetMaxRefreshRate(laptopScreen);
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);
@@ -135,7 +159,13 @@ namespace GHelper.Display
AppConfig.Set("miniled", miniled);
}
hdr = ScreenCCD.GetHDRStatus();
try
{
hdr = ScreenCCD.GetHDRStatus();
} catch (Exception ex)
{
Logger.WriteLine(ex.Message);
}
bool screenEnabled = (frequency >= 0);

View File

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

View File

@@ -167,8 +167,12 @@ namespace GHelper.Display
};
}
public static void SetGamut(int mode = 50)
public static void SetGamut(int mode = -1)
{
if (mode < 0) mode = (int)GetDefaultGamut();
AppConfig.Set("gamut", mode);
if (RunSplendid(SplendidCommand.GamutMode, 0, mode)) return;
if (_init)
@@ -187,6 +191,9 @@ namespace GHelper.Display
if (!forceVisual && ScreenCCD.GetHDRStatus(true)) return;
if (!forceVisual && ScreenNative.GetRefreshRate(ScreenNative.FindLaptopScreen(true)) < 0) return;
AppConfig.Set("visual", (int)mode);
AppConfig.Set("color_temp", whiteBalance);
if (whiteBalance != DefaultColorTemp && !init) ProcessHelper.RunAsAdmin();
int? balance;

View File

@@ -36,6 +36,7 @@ namespace GHelper
{"brightness_down", Properties.Strings.BrightnessDown},
{"brightness_up", Properties.Strings.BrightnessUp},
{"visual", Properties.Strings.VisualMode},
{"touchscreen", Properties.Strings.ToggleTouchscreen },
{"ghelper", Properties.Strings.OpenGHelper},
{"custom", Properties.Strings.Custom}
};
@@ -223,10 +224,7 @@ namespace GHelper
checkUSBC.Visible = false;
}
if (AppConfig.IsOLED())
{
checkNoOverdrive.Visible = false;
}
checkNoOverdrive.Visible = Program.acpi.IsOverdriveSupported();
// Change text and hide irrelevant options on the ROG Ally,
// which is a bit of a special case piece of hardware.
@@ -256,7 +254,6 @@ namespace GHelper
checkGpuApps.Visible = false;
checkUSBC.Visible = false;
checkAutoToggleClamshellMode.Visible = false;
checkNoOverdrive.Visible = false;
int apuMem = Program.acpi.GetAPUMem();
if (apuMem >= 0)
@@ -402,7 +399,10 @@ namespace GHelper
checkGpuApps.Checked = AppConfig.Is("kill_gpu_apps");
checkGpuApps.CheckedChanged += CheckGpuApps_CheckedChanged;
checkBootSound.Checked = (Program.acpi.DeviceGet(AsusACPI.BootSound) == 1);
int bootSound = Program.acpi.DeviceGet(AsusACPI.BootSound);
if (bootSound < 0 || bootSound > UInt16.MaxValue) bootSound = AppConfig.Get("boot_sound", 0);
checkBootSound.Checked = (bootSound == 1);
checkBootSound.CheckedChanged += CheckBootSound_CheckedChanged;
var statusLed = Program.acpi.DeviceGet(AsusACPI.StatusLed);
@@ -540,7 +540,9 @@ namespace GHelper
private void CheckBootSound_CheckedChanged(object? sender, EventArgs e)
{
Program.acpi.DeviceSet(AsusACPI.BootSound, (checkBootSound.Checked ? 1 : 0), "BootSound");
int bootSound = checkBootSound.Checked ? 1 : 0;
Program.acpi.DeviceSet(AsusACPI.BootSound, bootSound, "BootSound");
AppConfig.Set("boot_sound", bootSound);
}
private void CheckGPUFix_CheckedChanged(object? sender, EventArgs e)

220
app/Fans.Designer.cs generated
View File

@@ -82,6 +82,10 @@ namespace GHelper
labelTemp = new Label();
labelLeftTemp = new Label();
trackTemp = new TrackBar();
panelSkin = new Panel();
labelSkin = new Label();
labelSkinTitle = new Label();
trackSkin = new TrackBar();
panelTitleTemp = new Panel();
pictureTemp = new PictureBox();
labelTempLimit = new Label();
@@ -119,10 +123,6 @@ namespace GHelper
picturePowerMode = new PictureBox();
labelPowerModeTitle = new Label();
panelGPU = new Panel();
panelGPUPower = new Panel();
labelGPUPower = new Label();
labelGPUPowerTitle = new Label();
trackGPUPower = new TrackBar();
panelGPUTemp = new Panel();
labelGPUTemp = new Label();
labelGPUTempTitle = new Label();
@@ -131,6 +131,10 @@ namespace GHelper
labelGPUBoost = new Label();
labelGPUBoostTitle = new Label();
trackGPUBoost = new TrackBar();
panelGPUPower = new Panel();
labelGPUPower = new Label();
labelGPUPowerTitle = new Label();
trackGPUPower = new TrackBar();
panelGPUMemory = new Panel();
labelGPUMemory = new Label();
labelGPUMemoryTitle = new Label();
@@ -172,6 +176,8 @@ namespace GHelper
((System.ComponentModel.ISupportInitialize)pictureUV).BeginInit();
panelTemperature.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackTemp).BeginInit();
panelSkin.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackSkin).BeginInit();
panelTitleTemp.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureTemp).BeginInit();
panelDownload.SuspendLayout();
@@ -194,12 +200,12 @@ namespace GHelper
panelPowerModeTItle.SuspendLayout();
((System.ComponentModel.ISupportInitialize)picturePowerMode).BeginInit();
panelGPU.SuspendLayout();
panelGPUPower.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackGPUPower).BeginInit();
panelGPUTemp.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackGPUTemp).BeginInit();
panelGPUBoost.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackGPUBoost).BeginInit();
panelGPUPower.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackGPUPower).BeginInit();
panelGPUMemory.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackGPUMemory).BeginInit();
panelGPUCore.SuspendLayout();
@@ -223,11 +229,10 @@ namespace GHelper
panelFans.Dock = DockStyle.Fill;
panelFans.Location = new Point(530, 0);
panelFans.Margin = new Padding(0);
//panelFans.MaximumSize = new Size(816, 0);
panelFans.MinimumSize = new Size(816, 0);
panelFans.Name = "panelFans";
panelFans.Padding = new Padding(0, 0, 10, 0);
panelFans.Size = new Size(816, 2119);
panelFans.Size = new Size(820, 2119);
panelFans.TabIndex = 12;
//
// labelTip
@@ -261,7 +266,7 @@ namespace GHelper
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Percent, 25F));
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Percent, 25F));
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Percent, 25F));
tableFanCharts.Size = new Size(806, 1937);
tableFanCharts.Size = new Size(810, 1937);
tableFanCharts.TabIndex = 36;
//
// chartGPU
@@ -272,7 +277,7 @@ namespace GHelper
chartGPU.Location = new Point(12, 493);
chartGPU.Margin = new Padding(2, 10, 2, 10);
chartGPU.Name = "chartGPU";
chartGPU.Size = new Size(782, 463);
chartGPU.Size = new Size(786, 463);
chartGPU.TabIndex = 17;
chartGPU.Text = "chartGPU";
title1.Name = "Title1";
@@ -286,7 +291,7 @@ namespace GHelper
chartCPU.Location = new Point(12, 10);
chartCPU.Margin = new Padding(2, 10, 2, 10);
chartCPU.Name = "chartCPU";
chartCPU.Size = new Size(782, 463);
chartCPU.Size = new Size(786, 463);
chartCPU.TabIndex = 14;
chartCPU.Text = "chartCPU";
title2.Name = "Title1";
@@ -300,7 +305,7 @@ namespace GHelper
chartXGM.Location = new Point(12, 1459);
chartXGM.Margin = new Padding(2, 10, 2, 10);
chartXGM.Name = "chartXGM";
chartXGM.Size = new Size(782, 463);
chartXGM.Size = new Size(786, 463);
chartXGM.TabIndex = 14;
chartXGM.Text = "chartXGM";
title3.Name = "Title4";
@@ -315,7 +320,7 @@ namespace GHelper
chartMid.Location = new Point(12, 976);
chartMid.Margin = new Padding(2, 10, 2, 10);
chartMid.Name = "chartMid";
chartMid.Size = new Size(782, 463);
chartMid.Size = new Size(786, 463);
chartMid.TabIndex = 14;
chartMid.Text = "chartMid";
title4.Name = "Title3";
@@ -334,7 +339,7 @@ namespace GHelper
panelTitleFans.Location = new Point(0, 0);
panelTitleFans.Margin = new Padding(4);
panelTitleFans.Name = "panelTitleFans";
panelTitleFans.Size = new Size(806, 66);
panelTitleFans.Size = new Size(810, 66);
panelTitleFans.TabIndex = 42;
//
// buttonRename
@@ -346,7 +351,7 @@ namespace GHelper
buttonRename.BorderRadius = 2;
buttonRename.FlatStyle = FlatStyle.Flat;
buttonRename.Image = Properties.Resources.icons8_edit_32;
buttonRename.Location = new Point(376, 10);
buttonRename.Location = new Point(380, 10);
buttonRename.Margin = new Padding(4, 2, 4, 2);
buttonRename.Name = "buttonRename";
buttonRename.Secondary = true;
@@ -363,7 +368,7 @@ namespace GHelper
buttonRemove.BorderRadius = 2;
buttonRemove.FlatStyle = FlatStyle.Flat;
buttonRemove.Image = Properties.Resources.icons8_remove_64;
buttonRemove.Location = new Point(322, 10);
buttonRemove.Location = new Point(326, 10);
buttonRemove.Margin = new Padding(4, 2, 4, 2);
buttonRemove.Name = "buttonRemove";
buttonRemove.Secondary = true;
@@ -380,7 +385,7 @@ namespace GHelper
buttonAdd.BorderRadius = 2;
buttonAdd.FlatStyle = FlatStyle.Flat;
buttonAdd.Image = Properties.Resources.icons8_add_64;
buttonAdd.Location = new Point(744, 10);
buttonAdd.Location = new Point(748, 10);
buttonAdd.Margin = new Padding(4, 2, 4, 2);
buttonAdd.Name = "buttonAdd";
buttonAdd.Secondary = true;
@@ -395,7 +400,7 @@ namespace GHelper
comboModes.ButtonColor = Color.FromArgb(255, 255, 255);
comboModes.FlatStyle = FlatStyle.Flat;
comboModes.FormattingEnabled = true;
comboModes.Location = new Point(436, 14);
comboModes.Location = new Point(440, 14);
comboModes.Margin = new Padding(0);
comboModes.Name = "comboModes";
comboModes.Size = new Size(302, 40);
@@ -434,7 +439,7 @@ namespace GHelper
panelApplyFans.Location = new Point(0, 2003);
panelApplyFans.Margin = new Padding(4);
panelApplyFans.Name = "panelApplyFans";
panelApplyFans.Size = new Size(806, 116);
panelApplyFans.Size = new Size(810, 116);
panelApplyFans.TabIndex = 43;
//
// buttonCalibrate
@@ -470,7 +475,7 @@ namespace GHelper
checkApplyFans.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
checkApplyFans.AutoSize = true;
checkApplyFans.BackColor = SystemColors.ControlLight;
checkApplyFans.Location = new Point(450, 42);
checkApplyFans.Location = new Point(454, 42);
checkApplyFans.Margin = new Padding(0);
checkApplyFans.Name = "checkApplyFans";
checkApplyFans.Padding = new Padding(16, 6, 16, 6);
@@ -535,13 +540,14 @@ namespace GHelper
panelAdvanced.Controls.Add(panelUViGPU);
panelAdvanced.Controls.Add(panelUV);
panelAdvanced.Controls.Add(panelTitleAdvanced);
panelAdvanced.Controls.Add(panelSkin);
panelAdvanced.Controls.Add(panelTemperature);
panelAdvanced.Controls.Add(panelTitleTemp);
panelAdvanced.Controls.Add(panelDownload);
panelAdvanced.Dock = DockStyle.Top;
panelAdvanced.Location = new Point(10, 1768);
panelAdvanced.Name = "panelAdvanced";
panelAdvanced.Size = new Size(520, 992);
panelAdvanced.Size = new Size(520, 1116);
panelAdvanced.TabIndex = 14;
panelAdvanced.Visible = false;
//
@@ -550,7 +556,7 @@ namespace GHelper
panelAdvancedAlways.AutoSize = true;
panelAdvancedAlways.Controls.Add(checkApplyUV);
panelAdvancedAlways.Dock = DockStyle.Top;
panelAdvancedAlways.Location = new Point(0, 931);
panelAdvancedAlways.Location = new Point(0, 1055);
panelAdvancedAlways.Name = "panelAdvancedAlways";
panelAdvancedAlways.Padding = new Padding(16, 0, 16, 15);
panelAdvancedAlways.Size = new Size(520, 61);
@@ -576,7 +582,7 @@ namespace GHelper
panelAdvancedApply.AutoSize = true;
panelAdvancedApply.Controls.Add(buttonApplyAdvanced);
panelAdvancedApply.Dock = DockStyle.Top;
panelAdvancedApply.Location = new Point(0, 851);
panelAdvancedApply.Location = new Point(0, 975);
panelAdvancedApply.Name = "panelAdvancedApply";
panelAdvancedApply.Padding = new Padding(15);
panelAdvancedApply.Size = new Size(520, 80);
@@ -605,7 +611,7 @@ namespace GHelper
labelRisky.BackColor = Color.IndianRed;
labelRisky.Dock = DockStyle.Top;
labelRisky.ForeColor = SystemColors.ControlLightLight;
labelRisky.Location = new Point(0, 608);
labelRisky.Location = new Point(0, 732);
labelRisky.Margin = new Padding(0);
labelRisky.Name = "labelRisky";
labelRisky.Padding = new Padding(10, 10, 10, 5);
@@ -621,7 +627,7 @@ namespace GHelper
panelUViGPU.Controls.Add(labelLeftUViGPU);
panelUViGPU.Controls.Add(trackUViGPU);
panelUViGPU.Dock = DockStyle.Top;
panelUViGPU.Location = new Point(0, 484);
panelUViGPU.Location = new Point(0, 608);
panelUViGPU.Margin = new Padding(4);
panelUViGPU.MaximumSize = new Size(0, 124);
panelUViGPU.Name = "panelUViGPU";
@@ -669,7 +675,7 @@ namespace GHelper
panelUV.Controls.Add(labelLeftUV);
panelUV.Controls.Add(trackUV);
panelUV.Dock = DockStyle.Top;
panelUV.Location = new Point(0, 360);
panelUV.Location = new Point(0, 484);
panelUV.Margin = new Padding(4);
panelUV.MaximumSize = new Size(0, 124);
panelUV.Name = "panelUV";
@@ -714,7 +720,7 @@ namespace GHelper
panelTitleAdvanced.Controls.Add(pictureUV);
panelTitleAdvanced.Controls.Add(labelTitleUV);
panelTitleAdvanced.Dock = DockStyle.Top;
panelTitleAdvanced.Location = new Point(0, 294);
panelTitleAdvanced.Location = new Point(0, 418);
panelTitleAdvanced.Name = "panelTitleAdvanced";
panelTitleAdvanced.Size = new Size(520, 66);
panelTitleAdvanced.TabIndex = 48;
@@ -790,6 +796,54 @@ namespace GHelper
trackTemp.TickFrequency = 5;
trackTemp.TickStyle = TickStyle.TopLeft;
//
// panelSkin
//
panelSkin.AutoSize = true;
panelSkin.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelSkin.Controls.Add(labelSkin);
panelSkin.Controls.Add(labelSkinTitle);
panelSkin.Controls.Add(trackSkin);
panelSkin.Dock = DockStyle.Top;
panelSkin.Location = new Point(0, 294);
panelSkin.Margin = new Padding(4);
panelSkin.MaximumSize = new Size(0, 124);
panelSkin.Name = "panelSkin";
panelSkin.Size = new Size(520, 124);
panelSkin.TabIndex = 53;
//
// labelSkin
//
labelSkin.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelSkin.Location = new Point(347, 13);
labelSkin.Margin = new Padding(4, 0, 4, 0);
labelSkin.Name = "labelSkin";
labelSkin.Size = new Size(148, 32);
labelSkin.TabIndex = 13;
labelSkin.Text = "T";
labelSkin.TextAlign = ContentAlignment.TopRight;
//
// labelSkinTitle
//
labelSkinTitle.AutoSize = true;
labelSkinTitle.Location = new Point(10, 10);
labelSkinTitle.Margin = new Padding(4, 0, 4, 0);
labelSkinTitle.Name = "labelSkinTitle";
labelSkinTitle.Size = new Size(235, 32);
labelSkinTitle.TabIndex = 12;
labelSkinTitle.Text = "APU Skin Temp Limit";
//
// trackSkin
//
trackSkin.Location = new Point(6, 48);
trackSkin.Margin = new Padding(4, 2, 4, 2);
trackSkin.Maximum = 0;
trackSkin.Minimum = -40;
trackSkin.Name = "trackSkin";
trackSkin.Size = new Size(508, 90);
trackSkin.TabIndex = 11;
trackSkin.TickFrequency = 5;
trackSkin.TickStyle = TickStyle.TopLeft;
//
// panelTitleTemp
//
panelTitleTemp.Controls.Add(pictureTemp);
@@ -1257,55 +1311,6 @@ namespace GHelper
panelGPU.TabIndex = 44;
panelGPU.Visible = false;
//
// panelGPUPower
//
panelGPUPower.AutoSize = true;
panelGPUPower.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelGPUPower.Controls.Add(labelGPUPower);
panelGPUPower.Controls.Add(labelGPUPowerTitle);
panelGPUPower.Controls.Add(trackGPUPower);
panelGPUPower.Dock = DockStyle.Top;
panelGPUPower.Location = new Point(0, 432);
panelGPUPower.Margin = new Padding(4);
panelGPUPower.MaximumSize = new Size(0, 124);
panelGPUPower.Name = "panelGPUPower";
panelGPUPower.Size = new Size(520, 124);
panelGPUPower.TabIndex = 49;
//
// labelGPUPower
//
labelGPUPower.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelGPUPower.Location = new Point(374, 14);
labelGPUPower.Margin = new Padding(4, 0, 4, 0);
labelGPUPower.Name = "labelGPUPower";
labelGPUPower.Size = new Size(124, 32);
labelGPUPower.TabIndex = 44;
labelGPUPower.Text = "105W";
labelGPUPower.TextAlign = ContentAlignment.TopRight;
//
// labelGPUPowerTitle
//
labelGPUPowerTitle.AutoSize = true;
labelGPUPowerTitle.Location = new Point(10, 14);
labelGPUPowerTitle.Margin = new Padding(4, 0, 4, 0);
labelGPUPowerTitle.Name = "labelGPUPowerTitle";
labelGPUPowerTitle.Size = new Size(130, 32);
labelGPUPowerTitle.TabIndex = 43;
labelGPUPowerTitle.Text = "GPU Power";
//
// trackGPUPower
//
trackGPUPower.Location = new Point(6, 48);
trackGPUPower.Margin = new Padding(4, 2, 4, 2);
trackGPUPower.Maximum = 25;
trackGPUPower.Minimum = 5;
trackGPUPower.Name = "trackGPUPower";
trackGPUPower.Size = new Size(496, 90);
trackGPUPower.TabIndex = 42;
trackGPUPower.TickFrequency = 5;
trackGPUPower.TickStyle = TickStyle.TopLeft;
trackGPUPower.Value = 25;
//
// panelGPUTemp
//
panelGPUTemp.AutoSize = true;
@@ -1404,6 +1409,55 @@ namespace GHelper
trackGPUBoost.TickStyle = TickStyle.TopLeft;
trackGPUBoost.Value = 25;
//
// panelGPUPower
//
panelGPUPower.AutoSize = true;
panelGPUPower.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelGPUPower.Controls.Add(labelGPUPower);
panelGPUPower.Controls.Add(labelGPUPowerTitle);
panelGPUPower.Controls.Add(trackGPUPower);
panelGPUPower.Dock = DockStyle.Top;
panelGPUPower.Location = new Point(0, 432);
panelGPUPower.Margin = new Padding(4);
panelGPUPower.MaximumSize = new Size(0, 124);
panelGPUPower.Name = "panelGPUPower";
panelGPUPower.Size = new Size(520, 124);
panelGPUPower.TabIndex = 49;
//
// labelGPUPower
//
labelGPUPower.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelGPUPower.Location = new Point(374, 14);
labelGPUPower.Margin = new Padding(4, 0, 4, 0);
labelGPUPower.Name = "labelGPUPower";
labelGPUPower.Size = new Size(124, 32);
labelGPUPower.TabIndex = 44;
labelGPUPower.Text = "105W";
labelGPUPower.TextAlign = ContentAlignment.TopRight;
//
// labelGPUPowerTitle
//
labelGPUPowerTitle.AutoSize = true;
labelGPUPowerTitle.Location = new Point(10, 14);
labelGPUPowerTitle.Margin = new Padding(4, 0, 4, 0);
labelGPUPowerTitle.Name = "labelGPUPowerTitle";
labelGPUPowerTitle.Size = new Size(130, 32);
labelGPUPowerTitle.TabIndex = 43;
labelGPUPowerTitle.Text = "GPU Power";
//
// trackGPUPower
//
trackGPUPower.Location = new Point(6, 48);
trackGPUPower.Margin = new Padding(4, 2, 4, 2);
trackGPUPower.Maximum = 25;
trackGPUPower.Minimum = 5;
trackGPUPower.Name = "trackGPUPower";
trackGPUPower.Size = new Size(496, 90);
trackGPUPower.TabIndex = 42;
trackGPUPower.TickFrequency = 5;
trackGPUPower.TickStyle = TickStyle.TopLeft;
trackGPUPower.Value = 25;
//
// panelGPUMemory
//
panelGPUMemory.AutoSize = true;
@@ -1685,7 +1739,6 @@ namespace GHelper
Controls.Add(panelFans);
Controls.Add(panelSliders);
Margin = new Padding(4, 2, 4, 2);
MaximizeBox = true;
MinimizeBox = false;
MinimumSize = new Size(26, 1100);
Name = "Fans";
@@ -1723,6 +1776,9 @@ namespace GHelper
panelTemperature.ResumeLayout(false);
panelTemperature.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackTemp).EndInit();
panelSkin.ResumeLayout(false);
panelSkin.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackSkin).EndInit();
panelTitleTemp.ResumeLayout(false);
panelTitleTemp.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureTemp).EndInit();
@@ -1756,15 +1812,15 @@ namespace GHelper
((System.ComponentModel.ISupportInitialize)picturePowerMode).EndInit();
panelGPU.ResumeLayout(false);
panelGPU.PerformLayout();
panelGPUPower.ResumeLayout(false);
panelGPUPower.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackGPUPower).EndInit();
panelGPUTemp.ResumeLayout(false);
panelGPUTemp.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackGPUTemp).EndInit();
panelGPUBoost.ResumeLayout(false);
panelGPUBoost.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackGPUBoost).EndInit();
panelGPUPower.ResumeLayout(false);
panelGPUPower.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackGPUPower).EndInit();
panelGPUMemory.ResumeLayout(false);
panelGPUMemory.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackGPUMemory).EndInit();
@@ -1896,5 +1952,9 @@ namespace GHelper
private Label labelGPUPower;
private Label labelGPUPowerTitle;
private TrackBar trackGPUPower;
private Panel panelSkin;
private Label labelSkin;
private Label labelSkinTitle;
private TrackBar trackSkin;
}
}

View File

@@ -184,6 +184,9 @@ namespace GHelper
trackTemp.Minimum = RyzenControl.MinTemp;
trackTemp.Maximum = RyzenControl.MaxTemp;
trackSkin.Minimum = RyzenControl.MinSkin;
trackSkin.Maximum = RyzenControl.MaxSkin;
comboPowerMode.DropDownStyle = ComboBoxStyle.DropDownList;
comboPowerMode.DataSource = new BindingSource(PowerNative.powerModes, null);
comboPowerMode.DisplayMember = "Value";
@@ -211,6 +214,7 @@ namespace GHelper
trackUV.Scroll += TrackUV_Scroll;
trackUViGPU.Scroll += TrackUV_Scroll;
trackTemp.Scroll += TrackUV_Scroll;
trackSkin.Scroll += TrackUV_Scroll;
buttonApplyAdvanced.Click += ButtonApplyAdvanced_Click;
@@ -248,6 +252,7 @@ namespace GHelper
panelUV.Visible = true;
panelTitleAdvanced.Visible = true;
panelTemperature.Visible = true;
panelSkin.Visible = true;
panelTitleTemp.Visible = true;
VisualiseAdvanced();
@@ -381,11 +386,15 @@ namespace GHelper
int temp = AppConfig.GetMode("cpu_temp");
if (temp < RyzenControl.MinTemp || temp > RyzenControl.MaxTemp) temp = RyzenControl.MaxTemp;
int skin = AppConfig.GetMode("skin_temp");
if (skin < RyzenControl.MinSkin || skin > RyzenControl.MaxSkin) skin = RyzenControl.MaxSkin;
checkApplyUV.Enabled = checkApplyUV.Checked = AppConfig.IsMode("auto_uv");
trackUV.Value = cpuUV;
trackUViGPU.Value = igpuUV;
trackTemp.Value = temp;
trackSkin.Value = skin;
VisualiseAdvanced();
@@ -404,6 +413,7 @@ namespace GHelper
panelUViGPU.Visible = false;
panelTitleTemp.Visible = false;
panelTemperature.Visible = false;
panelSkin.Visible = false;
panelAdvancedAlways.Visible = false;
panelAdvancedApply.Visible = false;
panelDownload.Visible = true;
@@ -428,7 +438,9 @@ namespace GHelper
labelUV.Text = trackUV.Value.ToString();
labelUViGPU.Text = trackUViGPU.Value.ToString();
labelTemp.Text = (trackTemp.Value < RyzenControl.MaxTemp) ? trackTemp.Value.ToString() + "°C" : "Default";
labelSkin.Text = (trackSkin.Value < RyzenControl.MaxSkin) ? trackSkin.Value.ToString() + "°C" : "Default";
}
private void AdvancedScroll()
@@ -438,6 +450,7 @@ namespace GHelper
VisualiseAdvanced();
AppConfig.SetMode("skin_temp", trackSkin.Value);
AppConfig.SetMode("cpu_temp", trackTemp.Value);
AppConfig.SetMode("cpu_uv", trackUV.Value);
AppConfig.SetMode("igpu_uv", trackUViGPU.Value);
@@ -674,7 +687,7 @@ namespace GHelper
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;
AppConfig.SetMode("gpu_clock_limit", maxClock);
@@ -1140,9 +1153,11 @@ namespace GHelper
trackUV.Value = RyzenControl.MaxCPUUV;
trackUViGPU.Value = RyzenControl.MaxIGPUUV;
trackTemp.Value = RyzenControl.MaxTemp;
trackSkin.Value = RyzenControl.MaxSkin;
AdvancedScroll();
AppConfig.SetMode("cpu_temp", -1);
AppConfig.RemoveMode("cpu_temp");
AppConfig.RemoveMode("skin_temp");
modeControl.ResetPerformanceMode();
@@ -1160,8 +1175,11 @@ namespace GHelper
trackGPUBoost.Value = AsusACPI.MaxGPUBoost;
trackGPUTemp.Value = AsusACPI.MaxGPUTemp;
AppConfig.SetMode("gpu_boost", trackGPUBoost.Value);
AppConfig.SetMode("gpu_temp", trackGPUTemp.Value);
//AppConfig.SetMode("gpu_boost", trackGPUBoost.Value);
//AppConfig.SetMode("gpu_temp", trackGPUTemp.Value);
AppConfig.RemoveMode("gpu_boost");
AppConfig.RemoveMode("gpu_temp");
AppConfig.RemoveMode("gpu_power");
AppConfig.RemoveMode("gpu_clock_limit");

View File

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

View File

@@ -322,7 +322,6 @@ namespace GHelper.Gpu
Program.acpi.DeviceSet(AsusACPI.GPUXG, 1, "GPU XGM");
InitXGM();
XGM.Light(AppConfig.Is("xmg_light"));
await Task.Delay(TimeSpan.FromSeconds(15));

View File

@@ -18,7 +18,7 @@ public class NvidiaGpuControl : IGpuControl
public static int MinCoreOffset = AppConfig.Get("min_gpu_core", -250);
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;
private static PhysicalGPU? _internalGpu;

View File

@@ -15,22 +15,29 @@ namespace GHelper.Helpers
public bool IsExternalDisplayConnected()
{
var devices = ScreenInterrogatory.GetAllDevices().ToArray();
string internalName = AppConfig.GetString("internal_display");
foreach (var device in devices)
try
{
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)
var devicesList = ScreenInterrogatory.GetAllDevices();
var devices = devicesList.ToArray();
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;

View File

@@ -0,0 +1,24 @@
using Microsoft.Win32;
namespace GHelper.Helpers
{
public static class DynamicLightingHelper
{
public static bool IsEnabled()
{
using var key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Lighting");
var registryValueObject = key?.GetValue("AmbientLightingEnabled");
if (registryValueObject == null) return true;
return (int)registryValueObject > 0;
}
public static void OpenSettings()
{
ProcessHelper.RunCMD("explorer","ms-settings:personalization-lighting");
}
}
}

View File

@@ -13,6 +13,7 @@ namespace GHelper.Helpers
"ASUSLinkNear",
"ASUSLinkRemote",
"ASUSSoftwareManager",
"ASUSLiveUpdateAgent",
"ASUSSwitch",
"ASUSSystemAnalysis",
"ASUSSystemDiagnosis",
@@ -21,11 +22,13 @@ namespace GHelper.Helpers
static List<string> processesAC = new() {
"ArmouryCrateSE.Service",
"ArmouryCrate.Service",
"LightingService",
};
static List<string> servicesAC = new() {
"ArmouryCrateSEService",
"ArmouryCrateService",
"LightingService",
};
@@ -48,7 +51,7 @@ namespace GHelper.Helpers
if (Process.GetProcessesByName(service).Count() > 0) count++;
}
if (AppConfig.IsAlly())
if (AppConfig.IsStopAC())
foreach (string service in processesAC)
{
if (Process.GetProcessesByName(service).Count() > 0)
@@ -69,7 +72,7 @@ namespace GHelper.Helpers
ProcessHelper.StopDisableService(service);
}
if (AppConfig.IsAlly())
if (AppConfig.IsStopAC())
{
foreach (string service in servicesAC)
{
@@ -87,7 +90,7 @@ namespace GHelper.Helpers
ProcessHelper.StartEnableService(service);
}
if (AppConfig.IsAlly())
if (AppConfig.IsStopAC())
{
foreach (string service in servicesAC)
{

View File

@@ -30,15 +30,22 @@ public class Startup
var task = taskService.RootFolder.AllTasks.FirstOrDefault(t => t.Name == taskName);
if (task != null)
{
string strExeFilePath = Application.ExecutablePath.Trim();
string action = task.Definition.Actions.FirstOrDefault()!.ToString().Trim();
if (!strExeFilePath.Equals(action, StringComparison.OrdinalIgnoreCase) && !File.Exists(action))
try
{
Logger.WriteLine("File doesn't exist: " + action);
Logger.WriteLine("Rescheduling to: " + strExeFilePath);
UnSchedule();
Schedule();
string strExeFilePath = Application.ExecutablePath.Trim();
string action = task.Definition.Actions.FirstOrDefault()!.ToString().Trim();
if (!strExeFilePath.Equals(action, StringComparison.OrdinalIgnoreCase) && !File.Exists(action))
{
Logger.WriteLine("File doesn't exist: " + action);
Logger.WriteLine("Rescheduling to: " + strExeFilePath);
UnSchedule();
Schedule();
}
} catch (Exception ex)
{
Logger.WriteLine($"Can't check startup task: {ex.Message}");
}
}
}
}

View File

@@ -73,6 +73,8 @@ namespace GHelper.Helpers
protected override void PerformPaint(PaintEventArgs e)
{
Brush brush = new SolidBrush(Color.FromArgb(150, Color.Black));
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
e.Graphics.FillRoundedRectangle(brush, Bound, 10);
StringFormat format = new StringFormat();

View File

@@ -0,0 +1,23 @@
using GHelper.Helpers;
public static class TouchscreenHelper
{
public static bool? ToggleTouchscreen()
{
try
{
ProcessHelper.RunAsAdmin();
var status = !ProcessHelper.RunCMD("powershell", "(Get-PnpDevice -FriendlyName '*touch*screen*').Status").Contains("OK");
ProcessHelper.RunCMD("powershell", (status ? "Enable-PnpDevice" : "Disable-PnpDevice") + " -InstanceId (Get-PnpDevice -FriendlyName '*touch*screen*').InstanceId -Confirm:$false");
return status;
}
catch (Exception ex)
{
Logger.WriteLine($"Can't toggle touchscreen: {ex.Message}");
return null;
}
}
}

View File

@@ -490,8 +490,8 @@ namespace GHelper.Input
break;
case "miniled":
if (ScreenCCD.GetHDRStatus()) return;
int miniled = screenControl.ToogleMiniled();
Program.toast.RunToast(miniled == 1 ? "Multi-Zone" : "Single-Zone", miniled == 1 ? ToastIcon.BrightnessUp : ToastIcon.BrightnessDown);
string miniledName = screenControl.ToogleMiniled();
Program.toast.RunToast(miniledName, miniledName == Properties.Strings.OneZone ? ToastIcon.BrightnessDown : ToastIcon.BrightnessUp);
break;
case "aura":
Program.settingsForm.BeginInvoke(Program.settingsForm.CycleAuraMode);
@@ -544,6 +544,11 @@ namespace GHelper.Input
case "controller":
Program.settingsForm.BeginInvoke(Program.settingsForm.allyControl.ToggleModeHotkey);
break;
case "touchscreen":
var touchscreenStatus = TouchscreenHelper.ToggleTouchscreen();
if (touchscreenStatus is not null)
Program.toast.RunToast(Properties.Strings.Touchscreen + " " + ((bool)touchscreenStatus ? Properties.Strings.On : Properties.Strings.Off), ToastIcon.Touchpad);
break;
default:
break;
}

View File

@@ -31,6 +31,7 @@ namespace GHelper.Mode
private void ReapplyTimer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
{
SetCPUTemp(AppConfig.GetMode("cpu_temp"));
SetSkinTemp(AppConfig.GetMode("skin_temp"));
SetRyzenPower();
}
@@ -406,9 +407,15 @@ namespace GHelper.Mode
{
var resultCPU = SendCommand.set_tctl_temp((uint)cpuTemp);
if (init) Logger.WriteLine($"CPU Temp: {cpuTemp} {resultCPU}");
}
}
var restultAPU = SendCommand.set_apu_skin_temp_limit((uint)cpuTemp);
if (init) Logger.WriteLine($"APU Temp: {cpuTemp} {restultAPU}");
public void SetSkinTemp(int? skinTemp, bool init = false)
{
if (skinTemp >= RyzenControl.MinSkin && skinTemp < RyzenControl.MaxSkin)
{
var restultAPU = SendCommand.set_apu_skin_temp_limit((uint)skinTemp);
if (init) Logger.WriteLine($"APU Skin Temp: {skinTemp} {restultAPU}");
}
}
@@ -452,6 +459,7 @@ namespace GHelper.Mode
SetUV(AppConfig.GetMode("cpu_uv", 0));
SetUViGPU(AppConfig.GetMode("igpu_uv", 0));
SetCPUTemp(AppConfig.GetMode("cpu_temp"), true);
SetSkinTemp(AppConfig.GetMode("skin_temp"), true);
}
catch (Exception ex)
{

View File

@@ -297,4 +297,166 @@
return 3;
}
}
//P504
public class GladiusIIOriginPink : GladiusIIOrigin
{
public GladiusIIOriginPink() : base(0x18CD, "mi_02")
{
}
public override string GetDisplayName()
{
return "Gladius II PNK LTD";
}
public override int ProfileCount()
{
return 3;
}
public override LightingZone[] SupportedLightingZones()
{
return new LightingZone[] { LightingZone.Scrollwheel, LightingZone.Underglow };
}
protected override byte[] GetUpdateLightingModePacket(LightingSetting lightingSetting, LightingZone zone)
{
/*
* This mouse uses different speed values for rainbow mode compared to others.
* 51 28 03 00 03 04 FF 00 00 00 00 [8C] 00 00 00 00
* 51 28 03 00 03 04 FF 00 00 00 00 [64] 00 00 00 00
* 51 28 03 00 03 04 FF 00 00 00 00 [3F] 00 00 00 00
*/
byte speed = (byte)(SupportsAnimationSpeed(lightingSetting.LightingMode) ? lightingSetting.AnimationSpeed : 0x00);
if (lightingSetting.LightingMode == LightingMode.Rainbow)
{
speed = 0x64;
switch (lightingSetting.AnimationSpeed)
{
case AnimationSpeed.Slow:
speed = 0x8C;
break;
case AnimationSpeed.Medium:
speed = 0x64;
break;
case AnimationSpeed.Fast:
speed = 0x3F;
break;
}
}
return new byte[] { reportId, 0x51, 0x28, (byte)zone, 0x00,
IndexForLightingMode(lightingSetting.LightingMode),
(byte)lightingSetting.Brightness,
0x00, // this mouse has 2 colors per LED capability, but we do not suppor this yet, so we disable it
lightingSetting.RGBColor.R, lightingSetting.RGBColor.G, lightingSetting.RGBColor.B,
0x00, 0x00, 0x00, //this would be the second set of RGB Colors if we ever support this
(byte)(SupportsAnimationDirection(lightingSetting.LightingMode) ? lightingSetting.AnimationDirection : 0x00),
(byte)((lightingSetting.RandomColor && SupportsRandomColor(lightingSetting.LightingMode)) ? 0x01: 0x00),
speed
};
}
protected LightingSetting? ParseLightingSetting(byte[] packet, LightingZone zone)
{
if (packet[1] != 0x12 || packet[2] != 0x03)
{
return null;
}
//skip first block as it seems to be empty. Maybe only filled to certain configurations.
int offset = 5 + 9 + (((int)zone) * 9);
LightingSetting setting = new LightingSetting();
setting.LightingMode = LightingModeForIndex(packet[offset + 0]);
setting.Brightness = packet[offset + 1];
//Offset 2 is a bool that says whether dual color RGB is in use. Unsupported for now by GHelper
setting.RGBColor = Color.FromArgb(packet[offset + 3], packet[offset + 4], packet[offset + 5]);
//Offset 7 - 9 are the second RGB colors, unuse as not supported yet
return setting;
}
public override void ReadLightingSetting()
{
if (!HasRGB())
{
return;
}
//Mouse sends all lighting zones in one response Direction, Random col, Speed
//First block seems emtpy?
//00 12 03 00 00 [00 00 00 00 00 00 00 00 00] [03 04 01 00 00 00 00 00 00] [03 04 01 00 00 00 00 00 00] [00 01 8c]
//Length 9, offset 5
//Direction
byte[]? response = WriteForResponse(GetReadLightingModePacket(LightingZone.All));
if (response is null) return;
LightingZone[] lz = SupportedLightingZones();
for (int i = 0; i < lz.Length; ++i)
{
LightingSetting? ls = ParseLightingSetting(response, lz[i]);
if (ls is null)
{
Logger.WriteLine(GetDisplayName() + ": Failed to read RGB Setting for Zone " + lz[i].ToString());
continue;
}
ls.AnimationDirection = SupportsAnimationDirection(ls.LightingMode)
? (AnimationDirection)response[32]
: AnimationDirection.Clockwise;
ls.RandomColor = SupportsRandomColor(ls.LightingMode) && response[33] == 0x01;
//Rainbow uses different speed values for whatever reason
if (response[12] == 0x03)
{
byte speed = response[34];
switch (speed)
{
case 0x3F:
ls.AnimationSpeed = AnimationSpeed.Fast;
break;
case 0x64:
ls.AnimationSpeed = AnimationSpeed.Medium;
break;
case 0x8C:
ls.AnimationSpeed = AnimationSpeed.Slow;
break;
default:
ls.AnimationSpeed = AnimationSpeed.Medium;
break;
}
}
else
{
ls.AnimationSpeed = SupportsAnimationSpeed(ls.LightingMode)
? (AnimationSpeed)response[34]
: AnimationSpeed.Medium;
if (ls.AnimationSpeed != AnimationSpeed.Fast
&& ls.AnimationSpeed != AnimationSpeed.Medium
&& ls.AnimationSpeed != AnimationSpeed.Slow)
{
ls.AnimationSpeed = AnimationSpeed.Medium;
}
}
Logger.WriteLine(GetDisplayName() + ": Read RGB Setting for Zone " + lz[i].ToString() + ": " + ls.ToString());
LightingSetting[i] = ls;
}
}
}
}

View File

@@ -1,13 +1,13 @@
namespace GHelper.Peripherals.Mouse.Models
{
//P706_Wireless
public class GladiusIII : AsusMouse
public class GladiusIIIWireless : AsusMouse
{
public GladiusIII() : base(0x0B05, 0x197F, "mi_00", true)
public GladiusIIIWireless() : base(0x0B05, 0x197F, "mi_00", true)
{
}
protected GladiusIII(ushort vendorId, bool wireless) : base(0x0B05, vendorId, "mi_00", wireless)
protected GladiusIIIWireless(ushort vendorId, bool wireless) : base(0x0B05, vendorId, "mi_00", wireless)
{
}
@@ -77,7 +77,7 @@
}
}
public class GladiusIIIWired : GladiusIII
public class GladiusIIIWired : GladiusIIIWireless
{
public GladiusIIIWired() : base(0x197d, false)
{
@@ -88,4 +88,43 @@
return "ROG Gladius III (Wired)";
}
}
//P514
public class GladiusIII : GladiusIIIWireless
{
public GladiusIII() : base(0x197B, false)
{
}
public override string GetDisplayName()
{
return "ROG Gladius III";
}
public override bool HasAutoPowerOff()
{
return false;
}
public override bool HasLowBatteryWarning()
{
return false;
}
public override bool HasBattery()
{
return false;
}
public override bool IsLightingModeSupported(LightingMode lightingMode)
{
return lightingMode == LightingMode.Static
|| lightingMode == LightingMode.Breathing
|| lightingMode == LightingMode.ColorCycle
|| lightingMode == LightingMode.Rainbow
|| lightingMode == LightingMode.React
|| lightingMode == LightingMode.Comet;
}
}
}

View File

@@ -99,6 +99,18 @@
{
return true;
}
// 3.00.06 - 4.00.01 or newer firmware
protected override PollingRate ParsePollingRate(byte[] packet)
{
if (packet[1] == 0x12 && packet[2] == 0x04 && packet[3] == 0x00)
{
if ((int)packet[13] > 7)
return (PollingRate)packet[13] - 96;
return (PollingRate)packet[13];
}
return PollingRate.PR125Hz;
}
}
public class KerisWirelssAimpointWired : KerisWirelssAimpoint

View File

@@ -159,6 +159,34 @@
}
}
//P509
public class ROGKeris : ROGKerisWireless
{
public ROGKeris() : base(0x195C, false)
{
}
public override string GetDisplayName()
{
return "ROG Keris";
}
public override bool HasBattery()
{
return false;
}
public override bool HasLowBatteryWarning()
{
return false;
}
public override bool HasAutoPowerOff()
{
return false;
}
}
public class ROGKerisWirelessWired : ROGKerisWireless
{
public ROGKerisWirelessWired() : base(0x195E, false)

View File

@@ -188,17 +188,20 @@ namespace GHelper.Peripherals
DetectMouse(new GladiusIIIAimpoint());
DetectMouse(new GladiusIIIAimpointWired());
DetectMouse(new GladiusIIOrigin());
DetectMouse(new GladiusIIOriginPink());
DetectMouse(new GladiusII());
DetectMouse(new ROGKerisWireless());
DetectMouse(new ROGKerisWirelessWired());
DetectMouse(new ROGKeris());
DetectMouse(new ROGKerisWirelessEvaEdition());
DetectMouse(new ROGKerisWirelessEvaEditionWired());
DetectMouse(new TUFM4Wirelss());
DetectMouse(new TUFM4WirelssCN());
DetectMouse(new StrixImpactIIWireless());
DetectMouse(new StrixImpactIIWirelessWired());
DetectMouse(new GladiusIII());
DetectMouse(new GladiusIIIWireless());
DetectMouse(new GladiusIIIWired());
DetectMouse(new GladiusIII());
DetectMouse(new GladiusIIIAimpointEva2());
DetectMouse(new GladiusIIIAimpointEva2Wired());
DetectMouse(new HarpeAceAimLabEdition());

View File

@@ -1925,6 +1925,24 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Toggle Touchscreen.
/// </summary>
internal static string ToggleTouchscreen {
get {
return ResourceManager.GetString("ToggleTouchscreen", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to .
/// </summary>
internal static string Touchscreen {
get {
return ResourceManager.GetString("Touchscreen", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Turbo.
/// </summary>

View File

@@ -154,7 +154,7 @@
<value>Anime Matrix</value>
</data>
<data name="AppAlreadyRunning" xml:space="preserve">
<value>Appen kører allerede</value>
<value>App'en kører allerede</value>
</data>
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper kører allerede. Tjek systembakken for et ikon.</value>
@@ -175,7 +175,7 @@
<value>Hukommelse tildelt til GPU</value>
</data>
<data name="AsusServicesRunning" xml:space="preserve">
<value>Kørende Asus-tjenester</value>
<value>Kørende ASUS-tjenester</value>
</data>
<data name="AuraBatteryState" xml:space="preserve">
<value>Batteritilstand</value>
@@ -301,7 +301,7 @@
<value>Boot</value>
</data>
<data name="BootSound" xml:space="preserve">
<value>Boot-lyd</value>
<value>Opstarts-lyd</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>Lysstyrke</value>
@@ -313,7 +313,7 @@
<value>Lysstyrke op</value>
</data>
<data name="BWTrayIcon" xml:space="preserve">
<value>Sort og hvid bakkeikon</value>
<value>Sort/hvid bakkeikon</value>
</data>
<data name="Calibrate" xml:space="preserve">
<value>Kalibrer</value>
@@ -349,7 +349,7 @@
<value>Deaktiver ved lukning af låg</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Deaktiver overdrive på skærmen</value>
<value>Deaktiver Overdrive på skærmen</value>
</data>
<data name="Discharging" xml:space="preserve">
<value>Aflader</value>
@@ -393,7 +393,7 @@ Vil du stadig fortsætte?</value>
<value>Ekstra indstillinger</value>
</data>
<data name="FactoryDefaults" xml:space="preserve">
<value>Standard fabriksindstillinger</value>
<value>Gendan standarder</value>
</data>
<data name="FanCurves" xml:space="preserve">
<value>Blæserkurver</value>
@@ -411,13 +411,13 @@ Vil du stadig fortsætte?</value>
<value>Blæserprofiler</value>
</data>
<data name="FansAndPower" xml:space="preserve">
<value>Blæsere og kraft</value>
<value>Blæsere og strøm</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<value>Blæser</value>
</data>
<data name="FansPower" xml:space="preserve">
<value>Blæser + Kraft</value>
<value>Blæser + Strøm</value>
</data>
<data name="FlickerFreeDimming" xml:space="preserve">
<value>Flimmerfri dæmpning</value>
@@ -426,10 +426,10 @@ Vil du stadig fortsætte?</value>
<value>Aktiver Fn + F genvejstaster uden Fn</value>
</data>
<data name="FnLockOff" xml:space="preserve">
<value>FN-lås fra</value>
<value>Fn-lås fra</value>
</data>
<data name="FnLockOn" xml:space="preserve">
<value>FN-lås til</value>
<value>Fn-lås til</value>
</data>
<data name="GPUBoost" xml:space="preserve">
<value>Dynamisk boost</value>
@@ -438,13 +438,13 @@ Vil du stadig fortsætte?</value>
<value>Skifter</value>
</data>
<data name="GPUCoreClockOffset" xml:space="preserve">
<value>Core Clock forskydning</value>
<value>Core Clock offset</value>
</data>
<data name="GPUMemoryClockOffset" xml:space="preserve">
<value>Memory Clock forskydning</value>
<value>Memory Clock offset</value>
</data>
<data name="GPUMode" xml:space="preserve">
<value>GPU- tilstand</value>
<value>GPU-tilstand</value>
</data>
<data name="GPUModeEco" xml:space="preserve">
<value>Kun iGPU</value>
@@ -456,7 +456,7 @@ Vil du stadig fortsætte?</value>
<value>dGPU eksklusivt</value>
</data>
<data name="GPUPower" xml:space="preserve">
<value>GPU- strøm</value>
<value>GPU-strøm</value>
</data>
<data name="GPUSettings" xml:space="preserve">
<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>
</data>
<data name="LaptopBacklight" xml:space="preserve">
<value>Bærbar baggrundsbelysning</value>
<value>Laptop baggrundsbelysning</value>
</data>
<data name="LaptopKeyboard" xml:space="preserve">
<value>Bærbar tastatur</value>
<value>Laptop-tastatur</value>
</data>
<data name="LaptopScreen" xml:space="preserve">
<value>Bærbar skærm</value>
<value>Laptop-skærm</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED statusindikatorer</value>
@@ -561,7 +561,7 @@ Vil du stadig fortsætte?</value>
<value>minutter</value>
</data>
<data name="MouseAngleSnapping" xml:space="preserve">
<value>Vinkel snapping</value>
<value>Vinkel-snapping</value>
</data>
<data name="MouseAutoPowerOff" xml:space="preserve">
<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>
</data>
<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 name="Other" xml:space="preserve">
<value>Andet</value>
@@ -651,10 +651,10 @@ Vil du stadig fortsætte?</value>
<value>Polling Rate</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Kraftgrænser</value>
<value>Strømgrænser</value>
</data>
<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 name="PrintScreen" xml:space="preserve">
<value>PrintScreen</value>
@@ -729,10 +729,10 @@ Vil du stadig fortsætte?</value>
<value>Slå Aura til/fra</value>
</data>
<data name="ToggleClamshellMode" xml:space="preserve">
<value>Automatisk slå Clamshell tilstand til/fra</value>
<value>Slå automatisk Clamshell-tilstand til/fra</value>
</data>
<data name="ToggleFnLock" xml:space="preserve">
<value>Slå Fn-Lock til/fra</value>
<value>Slå Fn-lås til/fra</value>
</data>
<data name="ToggleMiniled" xml:space="preserve">
<value>Slå MiniLED til/fra (hvis understøttet)</value>
@@ -740,6 +740,12 @@ Vil du stadig fortsætte?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Slå skærmen til/fra</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>
@@ -750,7 +756,7 @@ Vil du stadig fortsætte?</value>
<value>Deaktiver på batteri</value>
</data>
<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 name="UltimateMode" xml:space="preserve">
<value>Ultimativ</value>
@@ -759,7 +765,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>
</data>
<data name="Unmuted" xml:space="preserve">
<value>Ikke muted</value>
<value>Ikke lydløs</value>
</data>
<data name="Updates" xml:space="preserve">
<value>Opdateringer</value>

View File

@@ -740,6 +740,12 @@ Trotzdem fortfahren?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Bildschirm umschalten</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>

View File

@@ -740,6 +740,12 @@
<data name="ToggleScreen" xml:space="preserve">
<value>Alternar pantalla</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Alternar pantalla táctil</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>

View File

@@ -740,6 +740,12 @@ Voulez-vous continuer ?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Allumer l'écran</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>

View File

@@ -740,6 +740,12 @@ Do you still want to continue?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Képernyő ki-/bekapcsolása</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbó</value>
</data>

View File

@@ -124,10 +124,10 @@
<value>Tidak dapat terhubung ke ASUS ACPI. tanpanya aplikasi tidak dapat berfungsi. Cobalah untuk menginstal Asus System Control Interface</value>
</data>
<data name="AlertAPUMemoryRestart" xml:space="preserve">
<value>Restart your device to apply changes</value>
<value>Muat ulang perangkat anda untuk menerapkan perubahan</value>
</data>
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
<value>Restart now?</value>
<value>Mulai ulang sekarang?</value>
</data>
<data name="AlertDGPU" xml:space="preserve">
<value>Tampaknya GPU sedang digunakan intensif, nonaktifkan?</value>
@@ -250,16 +250,16 @@
<value>Bangun</value>
</data>
<data name="BacklightLow" xml:space="preserve">
<value>Low</value>
<value>Lemah</value>
</data>
<data name="BacklightMax" xml:space="preserve">
<value>Max</value>
<value>Kuat</value>
</data>
<data name="BacklightMid" xml:space="preserve">
<value>Mid</value>
<value>Sedang</value>
</data>
<data name="BacklightOff" xml:space="preserve">
<value>Off</value>
<value>Mati</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>Waktu tunggu dicolokan / menggunakan baterai (0 - Hidup)</value>
@@ -289,10 +289,10 @@
<value>Binding</value>
</data>
<data name="BindingPrimary" xml:space="preserve">
<value>Primary</value>
<value>Utama</value>
</data>
<data name="BindingSecondary" xml:space="preserve">
<value>Secondary</value>
<value>Sekunder</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>Pembaruan BIOS dan Driver</value>
@@ -325,7 +325,7 @@
<value>Warna</value>
</data>
<data name="Contrast" xml:space="preserve">
<value>Contrast</value>
<value>Kontras</value>
</data>
<data name="Controller" xml:space="preserve">
<value>Controller</value>
@@ -352,7 +352,7 @@
<value>Nonaktifkan screen overdrive</value>
</data>
<data name="Discharging" xml:space="preserve">
<value>Discharging</value>
<value>Tidak mengisi</value>
</data>
<data name="DownloadColorProfiles" xml:space="preserve">
<value>Download Color Profiles</value>
@@ -384,7 +384,7 @@ Apakah Anda masih ingin melanjutkan?</value>
<value>Pengaturan Energi</value>
</data>
<data name="Export" xml:space="preserve">
<value>Export Profile</value>
<value>Ekspor Profil</value>
</data>
<data name="Extra" xml:space="preserve">
<value>Ekstra</value>
@@ -471,10 +471,10 @@ Apakah Anda masih ingin melanjutkan?</value>
<value>Tinggi</value>
</data>
<data name="ImageRotation" xml:space="preserve">
<value>Image Rotation</value>
<value>Rotasi Gambar</value>
</data>
<data name="Import" xml:space="preserve">
<value>Import Profile</value>
<value>Impor Profil</value>
</data>
<data name="KeyBindings" xml:space="preserve">
<value>Pintasan Keyboard</value>
@@ -507,7 +507,7 @@ Apakah Anda masih ingin melanjutkan?</value>
<value>Lighting</value>
</data>
<data name="LockScreen" xml:space="preserve">
<value>Lock Screen</value>
<value>Layar Kunci</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
@@ -591,7 +591,7 @@ Apakah Anda masih ingin melanjutkan?</value>
<value>Multi Zone Strong</value>
</data>
<data name="Muted" xml:space="preserve">
<value>Muted</value>
<value>Di Bisukan</value>
</data>
<data name="MuteMic" xml:space="preserve">
<value>Bisukan Mic</value>
@@ -609,10 +609,10 @@ Apakah Anda masih ingin melanjutkan?</value>
<value>Tidak Tersambung</value>
</data>
<data name="Off" xml:space="preserve">
<value>Off</value>
<value>Mati</value>
</data>
<data name="On" xml:space="preserve">
<value>On</value>
<value>Hidup</value>
</data>
<data name="OneZone" xml:space="preserve">
<value>One Zone</value>
@@ -740,6 +740,12 @@ Apakah Anda masih ingin melanjutkan?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Hidupkan/Matikan Layar</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>
@@ -759,7 +765,7 @@ Apakah Anda masih ingin melanjutkan?</value>
<value>Undervolting adalah fitur eksperimental dan berisiko. Jika nilai yang diterapkan terlalu rendah untuk perangkat keras Anda, ini dapat menjadi tidak stabil, mati mendadak, atau menyebabkan kerusakan data. Jika Anda ingin mencobanya, mulailah dengan nilai kecil terlebih dahulu, klik Terapkan, dan uji apa yang cocok untuk Anda.</value>
</data>
<data name="Unmuted" xml:space="preserve">
<value>Unmuted</value>
<value>Bunyikan</value>
</data>
<data name="Updates" xml:space="preserve">
<value>Pembaruan</value>
@@ -768,16 +774,16 @@ Apakah Anda masih ingin melanjutkan?</value>
<value>Versi</value>
</data>
<data name="VibrationStrength" xml:space="preserve">
<value>Vibration Strength</value>
<value>Kekuatan Getaran</value>
</data>
<data name="VisualMode" xml:space="preserve">
<value>Visual Mode</value>
<value>Mode Visual</value>
</data>
<data name="VisualModesHDR" xml:space="preserve">
<value>Visual Modes are not available when HDR is active</value>
<value>Mode Visual tidak tersedia saat HDR aktif</value>
</data>
<data name="VisualModesScreen" xml:space="preserve">
<value>Visual Modes are not available when laptop screen is off</value>
<value>Mode Visual tidak tersedia saat layar laptop mati</value>
</data>
<data name="VolumeDown" xml:space="preserve">
<value>Volume Turun</value>
@@ -792,6 +798,6 @@ Apakah Anda masih ingin melanjutkan?</value>
<value>Jaga agar jendela aplikasi selalu di atas</value>
</data>
<data name="Zoom" xml:space="preserve">
<value>Zoom</value>
<value>Perbesar</value>
</data>
</root>

View File

@@ -740,6 +740,12 @@ Sei sicuro di voler continuare?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Alterna Schermo</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>

View File

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

View File

@@ -740,6 +740,12 @@ Vis tiek norite tęsti?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Perjungti ekraną</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>

View File

@@ -740,6 +740,12 @@ Nadal chcesz kontynuować?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Przełącz ekran</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>

View File

@@ -740,6 +740,12 @@ Do you still want to continue?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Alternar Tela</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>

View File

@@ -740,6 +740,12 @@ Quer prosseguir?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Alternar Ecrã</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>

View File

@@ -624,7 +624,7 @@ Do you still want to continue?</value>
<value>Optimized</value>
</data>
<data name="OptimizedGPUTooltip" xml:space="preserve">
<value>Switch to Eco on battery and to Standard when plugged</value>
<value>Switch to Eco on battery and to Standard when plugged in</value>
</data>
<data name="OptimizedUSBC" xml:space="preserve">
<value>Keep GPU disabled on USB-C charger in Optimized mode</value>
@@ -740,6 +740,12 @@ Do you still want to continue?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Toggle Screen</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value />
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>
@@ -794,4 +800,4 @@ Do you still want to continue?</value>
<data name="Zoom" xml:space="preserve">
<value>Zoom</value>
</data>
</root>
</root>

View File

@@ -740,6 +740,12 @@
<data name="ToggleScreen" xml:space="preserve">
<value>Toggle Ecran</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>

View File

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

View File

@@ -507,7 +507,7 @@
<value>Ілюмінація</value>
</data>
<data name="LockScreen" xml:space="preserve">
<value>Lock Screen</value>
<value>Блокування екрану</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Лого</value>
@@ -740,6 +740,12 @@
<data name="ToggleScreen" xml:space="preserve">
<value>Вимкнути екран</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Сенсорний екран</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Турбо</value>
</data>

View File

@@ -740,6 +740,12 @@ Do you still want to continue?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Bật tắt màn hình</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>

View File

@@ -740,6 +740,12 @@
<data name="ToggleScreen" xml:space="preserve">
<value>关闭屏幕</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>增强模式</value>
</data>

View File

@@ -121,7 +121,7 @@
<value>滑鼠加速</value>
</data>
<data name="ACPIError" xml:space="preserve">
<value>無法連結到華碩 ACPI。 没有它,應用程式無法執行。 嘗試安裝Asus System Control Interface</value>
<value>無法連結到華碩 ACPI應用程式無法執行。 嘗試安裝 Asus System Control Interface</value>
</data>
<data name="AlertAPUMemoryRestart" xml:space="preserve">
<value>重新啟動裝置以套用變更</value>
@@ -130,7 +130,7 @@
<value>現在重新啟動?</value>
</data>
<data name="AlertDGPU" xml:space="preserve">
<value>看起 GPU 正在大量使用,是否禁用?</value>
<value>看起 GPU 正在被重度使用,是否禁用?</value>
</data>
<data name="AlertDGPUTitle" xml:space="preserve">
<value>節能模式</value>
@@ -139,10 +139,10 @@
<value>關閉獨顯需要重新啟動</value>
</data>
<data name="AlertUltimateOn" xml:space="preserve">
<value>獨顯直連需要重</value>
<value>獨顯輸出需要重新啟動</value>
</data>
<data name="AlertUltimateTitle" xml:space="preserve">
<value>現在重新啟動?</value>
<value>立即重新啟動?</value>
</data>
<data name="AllyController" xml:space="preserve">
<value>Ally控制器</value>
@@ -151,13 +151,13 @@
<value>動畫速度</value>
</data>
<data name="AnimeMatrix" xml:space="preserve">
<value>AniMeMatrix</value>
<value>AniMeMatrix</value>
</data>
<data name="AppAlreadyRunning" xml:space="preserve">
<value>程式正在執行</value>
<value>程式正在執行</value>
</data>
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper已經在執行。 請確認右下工作列中的圖示。</value>
<value>G-Helper在執行。 請檢查右下系統匣。</value>
</data>
<data name="Apply" xml:space="preserve">
<value>套用</value>
@@ -187,7 +187,7 @@
<value>順時針</value>
</data>
<data name="AuraColorCycle" xml:space="preserve">
<value>色循環</value>
<value>色循環</value>
</data>
<data name="AuraComet" xml:space="preserve">
<value>彗星</value>
@@ -244,7 +244,7 @@
<value>自動</value>
</data>
<data name="AutoRefreshTooltip" xml:space="preserve">
<value>電池模式時自動60Hz</value>
<value>使用電池時設定為 60Hz並在插上電源時恢復</value>
</data>
<data name="Awake" xml:space="preserve">
<value>喚醒時</value>
@@ -271,7 +271,7 @@
<value>閒置時關閉燈光(充電模式)</value>
</data>
<data name="Balanced" xml:space="preserve">
<value>平衡模式</value>
<value>效能</value>
</data>
<data name="BatteryCharge" xml:space="preserve">
<value>充電</value>
@@ -346,13 +346,13 @@
<value>停用控制器</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value>
<value>蓋上螢幕時取消</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>禁用螢幕加速OD</value>
</data>
<data name="Discharging" xml:space="preserve">
<value>正在釋放電力</value>
<value>使用電池中</value>
</data>
<data name="DownloadColorProfiles" xml:space="preserve">
<value>下載色彩設定檔</value>
@@ -370,7 +370,7 @@
<value>節能模式</value>
</data>
<data name="EnableGPUOnShutdown" xml:space="preserve">
<value>關機前啟動顯卡(解決切換顯卡節能模式&amp;標準模式和亮度的某些問題)</value>
<value>關機前啟動顯卡(解決切換顯卡節能模式&amp;混合輸出和亮度的某些問題)</value>
</data>
<data name="EnableOptimusText" xml:space="preserve">
<value>「Nvidia控制面板」中的顯示模式未設置為自動切換時透過G-Helper的節能模式禁用獨顯可能導致螢幕亮度控制出現問題直到下次重新開機後。
@@ -405,10 +405,10 @@
<value>GPU 風扇設定檔</value>
</data>
<data name="FanProfileMid" xml:space="preserve">
<value>中等風扇設</value>
<value>風扇設定檔</value>
</data>
<data name="FanProfiles" xml:space="preserve">
<value>風扇設</value>
<value>風扇設定檔</value>
</data>
<data name="FansAndPower" xml:space="preserve">
<value>風扇和電源</value>
@@ -417,13 +417,13 @@
<value>風扇</value>
</data>
<data name="FansPower" xml:space="preserve">
<value>自定義設置</value>
<value>自定義</value>
</data>
<data name="FlickerFreeDimming" xml:space="preserve">
<value>不閃屏調光(Flicker-free Dimming)</value>
</data>
<data name="FnLock" xml:space="preserve">
<value>使用Fn+F1~F12功能時按下Fn鍵</value>
<value>使用 Fn + F1~F12 功能時無須按下Fn鍵</value>
</data>
<data name="FnLockOff" xml:space="preserve">
<value>Fn鎖定解除</value>
@@ -432,7 +432,7 @@
<value>Fn鎖定</value>
</data>
<data name="GPUBoost" xml:space="preserve">
<value>動態加速</value>
<value>動態加速 (Dynamic Boost)</value>
</data>
<data name="GPUChanging" xml:space="preserve">
<value>切換中...</value>
@@ -489,7 +489,7 @@
<value>背光</value>
</data>
<data name="LaptopKeyboard" xml:space="preserve">
<value>鍵盤背光:</value>
<value>鍵盤背光</value>
</data>
<data name="LaptopScreen" xml:space="preserve">
<value>螢幕顯示</value>
@@ -621,13 +621,13 @@
<value>開啟G-Helper視窗</value>
</data>
<data name="Optimized" xml:space="preserve">
<value>自動模式</value>
<value>自動調節</value>
</data>
<data name="OptimizedGPUTooltip" xml:space="preserve">
<value>使用電池切換到節能模式,插入電源時切換到標準模式</value>
<value>使用電池切換到整合式顯卡,插入電源時切換到獨立顯卡</value>
</data>
<data name="OptimizedUSBC" xml:space="preserve">
<value>自動模式下使用USB-C充電時持續關閉獨顯</value>
<value>自動調節模式下使用USB-C充電時持續關閉獨顯</value>
</data>
<data name="Other" xml:space="preserve">
<value>其他</value>
@@ -636,7 +636,7 @@
<value>OD</value>
</data>
<data name="PerformanceMode" xml:space="preserve">
<value>性能模式:</value>
<value>性能模式</value>
</data>
<data name="Peripherals" xml:space="preserve">
<value>週邊設備</value>
@@ -648,7 +648,7 @@
<value>播放/暫停</value>
</data>
<data name="PollingRate" xml:space="preserve">
<value>輪率</value>
<value>輪率</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>功率限制</value>
@@ -669,10 +669,10 @@
<value>重設</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>有其他程式正在使用獨顯導致無法切換至節能模式. 是否讓G-Helper重新啟動獨顯? * 請自行評估風險</value>
<value>有其他程式正在使用獨顯導致無法切換至節能模式. 是否讓 G-Helper 於裝置管理員重新啟動獨顯? (請自行評估風險)</value>
</data>
<data name="RPM" xml:space="preserve">
<value>每分鐘轉數</value>
<value>RPM</value>
</data>
<data name="RSDeadzones" xml:space="preserve">
<value>右搖桿死區</value>
@@ -681,7 +681,7 @@
<value>右扳機(RT)死區</value>
</data>
<data name="RunOnStartup" xml:space="preserve">
<value>開機自動開啟</value>
<value>開機自動執行</value>
</data>
<data name="ScalingQuality" xml:space="preserve">
<value>縮放品質</value>
@@ -696,19 +696,19 @@
<value>關機時</value>
</data>
<data name="Silent" xml:space="preserve">
<value>安靜模式</value>
<value>靜音</value>
</data>
<data name="Sleep" xml:space="preserve">
<value>睡眠時</value>
</data>
<data name="StandardGPUTooltip" xml:space="preserve">
<value>標準模式會啟用獨顯</value>
<value>自動切換獨立顯卡以及整合式顯卡 (MS-Hybrid)</value>
</data>
<data name="StandardMode" xml:space="preserve">
<value>標準模式</value>
</data>
<data name="Start" xml:space="preserve">
<value>開始</value>
<value>啟動</value>
</data>
<data name="StartingServices" xml:space="preserve">
<value>正在啟動服務</value>
@@ -726,22 +726,28 @@
<value>正在停止服務</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<value>切換Aura</value>
<value>切換 Aura 模式</value>
</data>
<data name="ToggleClamshellMode" xml:space="preserve">
<value>翻蓋模式 (蓋上筆電但有外接螢幕時,系統仍會持續運行)</value>
</data>
<data name="ToggleFnLock" xml:space="preserve">
<value>免按Fn鍵使用Fn+F1~F12功能</value>
<value>切換 Fn-Lock</value>
</data>
<data name="ToggleMiniled" xml:space="preserve">
<value>切換Miniled(若有支援)</value>
<value>切換 mini-LED (若有支援)</value>
</data>
<data name="ToggleScreen" xml:space="preserve">
<value>切換螢幕</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>切換螢幕觸控</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>極速模式</value>
<value>極速</value>
</data>
<data name="TurnedOff" xml:space="preserve">
<value>已關閉</value>
@@ -750,10 +756,10 @@
<value>電池模式時關閉</value>
</data>
<data name="UltimateGPUTooltip" xml:space="preserve">
<value>開啟獨顯直連獲得最佳幀數</value>
<value>開啟獨顯輸出獲得最佳幀數</value>
</data>
<data name="UltimateMode" xml:space="preserve">
<value>獨顯直連</value>
<value>獨顯輸出</value>
</data>
<data name="UndervoltingRisky" xml:space="preserve">
<value>降壓是一項實驗性且有風險的功能,若設定的值過低,可能造成系統不穩定甚至無預警關機,建議可先嘗試較小的降壓數值,並點擊"套用"來測試適合你的使用狀況</value>

View File

@@ -21,6 +21,8 @@ namespace Ryzen
public static int MinTemp => AppConfig.Get("min_temp", 75);
public const int MaxTemp = 98;
public static int MinSkin => 25;
public const int MaxSkin = 46;
public static int FAMID { get; protected set; }

View File

@@ -68,6 +68,7 @@ namespace GHelper
panelGPU = new Panel();
labelTipGPU = new Label();
tableAMD = new TableLayoutPanel();
buttonAutoTDP = new RButton();
buttonOverlay = new RButton();
buttonFPS = new RButton();
tableGPU = new TableLayoutPanel();
@@ -94,6 +95,7 @@ namespace GHelper
pictureScreen = new PictureBox();
labelSreen = new Label();
panelKeyboard = new Panel();
labelDynamicLighting = new Label();
tableLayoutKeyboard = new TableLayoutPanel();
buttonKeyboard = new RButton();
panelColor = new Panel();
@@ -135,7 +137,6 @@ namespace GHelper
labelGamma = new Label();
pictureGamma = new PictureBox();
labelGammaTitle = new Label();
buttonAutoTDP = new RButton();
panelMatrix.SuspendLayout();
panelMatrixAuto.SuspendLayout();
tableLayoutMatrix.SuspendLayout();
@@ -370,7 +371,7 @@ namespace GHelper
panelBattery.Controls.Add(sliderBattery);
panelBattery.Controls.Add(panelBatteryTitle);
panelBattery.Dock = DockStyle.Top;
panelBattery.Location = new Point(11, 1725);
panelBattery.Location = new Point(11, 1765);
panelBattery.Margin = new Padding(0);
panelBattery.Name = "panelBattery";
panelBattery.Padding = new Padding(20, 20, 20, 11);
@@ -462,7 +463,7 @@ namespace GHelper
panelFooter.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelFooter.Controls.Add(tableButtons);
panelFooter.Dock = DockStyle.Top;
panelFooter.Location = new Point(11, 1901);
panelFooter.Location = new Point(11, 1941);
panelFooter.Margin = new Padding(0);
panelFooter.Name = "panelFooter";
panelFooter.Padding = new Padding(20);
@@ -780,6 +781,28 @@ namespace GHelper
tableAMD.TabIndex = 24;
tableAMD.Visible = false;
//
// 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;
//
// buttonOverlay
//
buttonOverlay.Activated = false;
@@ -1077,6 +1100,7 @@ namespace GHelper
tableScreen.Name = "tableScreen";
tableScreen.RowCount = 1;
tableScreen.RowStyles.Add(new RowStyle(SizeType.Absolute, 80F));
tableScreen.RowStyles.Add(new RowStyle(SizeType.Absolute, 20F));
tableScreen.Size = new Size(787, 100);
tableScreen.TabIndex = 23;
//
@@ -1229,6 +1253,7 @@ namespace GHelper
panelKeyboard.AccessibleRole = AccessibleRole.Grouping;
panelKeyboard.AutoSize = true;
panelKeyboard.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelKeyboard.Controls.Add(labelDynamicLighting);
panelKeyboard.Controls.Add(tableLayoutKeyboard);
panelKeyboard.Controls.Add(panelKeyboardTitle);
panelKeyboard.Dock = DockStyle.Top;
@@ -1236,10 +1261,25 @@ namespace GHelper
panelKeyboard.Margin = new Padding(0);
panelKeyboard.Name = "panelKeyboard";
panelKeyboard.Padding = new Padding(20);
panelKeyboard.Size = new Size(827, 132);
panelKeyboard.Size = new Size(827, 172);
panelKeyboard.TabIndex = 4;
panelKeyboard.TabStop = true;
//
// labelDynamicLighting
//
labelDynamicLighting.Cursor = Cursors.Hand;
labelDynamicLighting.Dock = DockStyle.Top;
labelDynamicLighting.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point);
labelDynamicLighting.ForeColor = SystemColors.GrayText;
labelDynamicLighting.Location = new Point(20, 112);
labelDynamicLighting.Margin = new Padding(4, 0, 4, 0);
labelDynamicLighting.Name = "labelDynamicLighting";
labelDynamicLighting.Padding = new Padding(4);
labelDynamicLighting.Size = new Size(787, 40);
labelDynamicLighting.TabIndex = 43;
labelDynamicLighting.Text = "Please disable Windows > Dynamic Lighting";
labelDynamicLighting.Visible = false;
//
// tableLayoutKeyboard
//
tableLayoutKeyboard.AutoSize = true;
@@ -1416,7 +1456,7 @@ namespace GHelper
panelVersion.Controls.Add(labelCharge);
panelVersion.Controls.Add(checkStartup);
panelVersion.Dock = DockStyle.Top;
panelVersion.Location = new Point(11, 1845);
panelVersion.Location = new Point(11, 1885);
panelVersion.Margin = new Padding(4);
panelVersion.Name = "panelVersion";
panelVersion.Size = new Size(827, 56);
@@ -1442,7 +1482,7 @@ namespace GHelper
panelPeripherals.Controls.Add(tableLayoutPeripherals);
panelPeripherals.Controls.Add(panelPeripheralsTile);
panelPeripherals.Dock = DockStyle.Top;
panelPeripherals.Location = new Point(11, 1526);
panelPeripherals.Location = new Point(11, 1566);
panelPeripherals.Margin = new Padding(0);
panelPeripherals.Name = "panelPeripherals";
panelPeripherals.Padding = new Padding(20, 20, 20, 11);
@@ -1895,28 +1935,6 @@ namespace GHelper
labelGammaTitle.TabIndex = 37;
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
//
AutoScaleDimensions = new SizeF(192F, 192F);
@@ -2120,5 +2138,6 @@ namespace GHelper
private Label labelVisual;
private RButton buttonFHD;
private RButton buttonAutoTDP;
private Label labelDynamicLighting;
}
}

View File

@@ -24,7 +24,7 @@ namespace GHelper
public GPUModeControl gpuControl;
public AllyControl allyControl;
ScreenControl screenControl = new ScreenControl();
ScreenControl screenControl = new ScreenControl();
AutoUpdateControl updateControl;
AsusMouseSettings? mouseSettings;
@@ -224,6 +224,7 @@ namespace GHelper
sliderBattery.MouseUp += SliderBattery_MouseUp;
sliderBattery.KeyUp += SliderBattery_KeyUp;
sliderBattery.ValueChanged += SliderBattery_ValueChanged;
Program.trayIcon.MouseMove += TrayIcon_MouseMove;
@@ -251,7 +252,7 @@ namespace GHelper
buttonFPS.Click += ButtonFPS_Click;
buttonOverlay.Click += ButtonOverlay_Click;
buttonAutoTDP.Click += ButtonAutoTDP_Click;
buttonAutoTDP.BorderColor = colorTurbo;
@@ -268,15 +269,27 @@ namespace GHelper
labelVisual.Click += LabelVisual_Click;
labelCharge.Click += LabelCharge_Click;
labelDynamicLighting.Click += LabelDynamicLighting_Click;
panelPerformance.Focus();
InitVisual();
}
private void LabelDynamicLighting_Click(object? sender, EventArgs e)
{
DynamicLightingHelper.OpenSettings();
}
private void ButtonFHD_Click(object? sender, EventArgs e)
{
screenControl.ToogleFHD();
}
private void SliderBattery_ValueChanged(object? sender, EventArgs e)
{
VisualiseBatteryTitle(sliderBattery.Value);
}
private void SliderBattery_KeyUp(object? sender, KeyEventArgs e)
{
BatteryControl.SetBatteryChargeLimit(sliderBattery.Value);
@@ -319,7 +332,8 @@ namespace GHelper
sliderGamma.ValueChanged += SliderGamma_ValueChanged;
sliderGamma.MouseUp += SliderGamma_ValueChanged;
} else
}
else
{
labelGammaTitle.Text = Properties.Strings.VisualMode;
}
@@ -331,7 +345,8 @@ namespace GHelper
{
tableVisual.ColumnCount = 3;
buttonInstallColor.Visible = false;
} else
}
else
{
// If it's possible to retrieve color profiles
if (ColorProfileHelper.ProfileExists())
@@ -391,7 +406,7 @@ namespace GHelper
public void CycleVisualMode()
{
if (comboVisual.Items.Count < 1) return ;
if (comboVisual.Items.Count < 1) return;
if (comboVisual.SelectedIndex < comboVisual.Items.Count - 1)
comboVisual.SelectedIndex += 1;
@@ -409,14 +424,11 @@ namespace GHelper
private void ComboGamut_SelectedValueChanged(object? sender, EventArgs e)
{
AppConfig.Set("gamut", (int)comboGamut.SelectedValue);
VisualControl.SetGamut((int)comboGamut.SelectedValue);
}
private void ComboVisual_SelectedValueChanged(object? sender, EventArgs e)
{
AppConfig.Set("visual", (int)comboVisual.SelectedValue);
AppConfig.Set("color_temp", (int)comboColorTemp.SelectedValue);
VisualControl.SetVisual((SplendidCommand)comboVisual.SelectedValue, (int)comboColorTemp.SelectedValue);
}
@@ -797,7 +809,7 @@ namespace GHelper
private void ButtonFHD_MouseHover(object? sender, EventArgs e)
{
labelTipScreen.Text = "Switch to "+ ((buttonFHD.Text == "FHD") ? "UHD" : "FHD") + " Mode";
labelTipScreen.Text = "Switch to " + ((buttonFHD.Text == "FHD") ? "UHD" : "FHD") + " Mode";
}
private void Button120Hz_MouseHover(object? sender, EventArgs e)
@@ -1074,21 +1086,26 @@ namespace GHelper
});
}
private void _VisualiseAura()
{
pictureColor.BackColor = Aura.Color1;
pictureColor2.BackColor = Aura.Color2;
pictureColor2.Visible = Aura.HasSecondColor();
if (AppConfig.IsDynamicLighting())
{
labelDynamicLighting.Visible = DynamicLightingHelper.IsEnabled();
labelDynamicLighting.ForeColor = colorStandard;
this.OnResize(null);
}
}
public void VisualiseAura()
{
if (InvokeRequired)
Invoke(delegate
{
pictureColor.BackColor = Aura.Color1;
pictureColor2.BackColor = Aura.Color2;
pictureColor2.Visible = Aura.HasSecondColor();
});
Invoke(_VisualiseAura);
else
{
pictureColor.BackColor = Aura.Color1;
pictureColor2.BackColor = Aura.Color2;
pictureColor2.Visible = Aura.HasSecondColor();
}
_VisualiseAura();
}
public void InitMatrix()
@@ -1231,6 +1248,7 @@ namespace GHelper
else if (miniled2 >= 0)
{
buttonMiniled.Enabled = !hdr;
if (hdr) miniled2 = 1; // Show HDR as Multizone Strong
switch (miniled2)
{
@@ -1248,9 +1266,9 @@ namespace GHelper
break;
// Multizone Off
case 2:
buttonMiniled.Text = hdr ? Properties.Strings.Multizone : Properties.Strings.OneZone;
buttonMiniled.Text = Properties.Strings.OneZone;
buttonMiniled.BorderColor = colorStandard;
buttonMiniled.Activated = hdr;
buttonMiniled.Activated = false;
break;
}
}
@@ -1268,7 +1286,8 @@ namespace GHelper
labelVisual.Width = tableVisual.Width;
labelVisual.Height = tableVisual.Height;
labelVisual.Visible = true;
} else
}
else
{
labelVisual.Visible = false;
}
@@ -1295,6 +1314,8 @@ namespace GHelper
if (updatesForm != null && updatesForm.Text != "") updatesForm.Close();
if (matrixForm != null && matrixForm.Text != "") matrixForm.Close();
if (handheldForm != null && handheldForm.Text != "") handheldForm.Close();
if (mouseSettings != null && mouseSettings.Text != "") mouseSettings.Close();
}
/// <summary>
@@ -1712,9 +1733,14 @@ namespace GHelper
but.BackColor = but.Enabled ? Color.FromArgb(255, but.BackColor) : Color.FromArgb(100, but.BackColor);
}
public void VisualiseBattery(int limit)
public void VisualiseBatteryTitle(int limit)
{
labelBatteryTitle.Text = Properties.Strings.BatteryChargeLimit + ": " + limit.ToString() + "%";
}
public void VisualiseBattery(int limit)
{
VisualiseBatteryTitle(limit);
sliderBattery.Value = limit;
sliderBattery.AccessibleName = Properties.Strings.BatteryChargeLimit + ": " + limit.ToString() + "%";

View File

@@ -82,7 +82,7 @@ namespace GHelper.USB
static bool isACPI = AppConfig.IsTUF() || AppConfig.IsVivoZenbook() || AppConfig.IsProArt();
static bool isStrix = AppConfig.IsStrix() && !AppConfig.IsNoDirectRGB();
static bool isStrix4Zone = AppConfig.IsStrixLimitedRGB();
static bool isStrix4Zone = AppConfig.Is4ZoneRGB();
static bool isStrixNumpad = AppConfig.IsStrixNumpad();
static public bool isSingleColor = false;
@@ -183,7 +183,7 @@ namespace GHelper.USB
return _modes;
}
if (AppConfig.IsStrix() && !AppConfig.IsStrixLimitedRGB())
if (AppConfig.IsStrix() && !AppConfig.Is4ZoneRGB())
{
return _modesStrix;
}

View File

@@ -30,6 +30,7 @@ namespace GHelper
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
tableBios = new TableLayoutPanel();
labelBIOS = new Label();
pictureBios = new PictureBox();
@@ -47,6 +48,7 @@ namespace GHelper
labelLegendGray = new Label();
labelLegendRed = new Label();
labelLegend = new Label();
toolTip = new ToolTip(components);
((System.ComponentModel.ISupportInitialize)pictureBios).BeginInit();
panelBiosTitle.SuspendLayout();
panelBios.SuspendLayout();
@@ -339,5 +341,6 @@ namespace GHelper
private Label labelLegendRed;
private Label labelLegendGray;
private Label labelLegendGreen;
private ToolTip toolTip;
}
}

View File

@@ -60,14 +60,16 @@ namespace GHelper
ClearTable(tableBios);
ClearTable(tableDrivers);
string rogParam = AppConfig.IsROG() ? "&systemCode=rog" : "";
Task.Run(async () =>
{
DriversAsync($"https://rog.asus.com/support/webapi/product/GetPDBIOS?website=global&model={model}&cpu={model}", 1, tableBios);
DriversAsync($"https://rog.asus.com/support/webapi/product/GetPDBIOS?website=global&model={model}&cpu={model}{rogParam}", 1, tableBios);
});
Task.Run(async () =>
{
DriversAsync($"https://rog.asus.com/support/webapi/product/GetPDDrivers?website=global&model={model}&cpu={model}&osid=52", 0, tableDrivers);
DriversAsync($"https://rog.asus.com/support/webapi/product/GetPDDrivers?website=global&model={model}&cpu={model}&osid=52{rogParam}", 0, tableDrivers);
});
}
@@ -153,6 +155,7 @@ namespace GHelper
table.Controls.Add(new Label { Text = driver.date, Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Padding = new Padding(5, 5, 5, 5) }, 2, table.RowCount);
table.Controls.Add(versionLabel, 3, table.RowCount);
table.RowCount++;
});
}
@@ -166,11 +169,13 @@ namespace GHelper
});
}
private void _VisualiseNewDriver(int position, int newer, TableLayoutPanel table)
private void _VisualiseNewDriver(int position, int newer, string tip, TableLayoutPanel table)
{
var label = table.GetControlFromPosition(3, position) as LinkLabel;
if (label != null)
{
toolTip.SetToolTip(label, tip);
if (newer == DRIVER_NEWER)
{
label.AccessibleName = label.AccessibleName + Properties.Strings.NewUpdates;
@@ -183,18 +188,18 @@ namespace GHelper
}
}
public void VisualiseNewDriver(int position, int newer, TableLayoutPanel table)
public void VisualiseNewDriver(int position, int newer, string tip, TableLayoutPanel table)
{
if (InvokeRequired)
{
Invoke(delegate
{
_VisualiseNewDriver(position, newer, table);
_VisualiseNewDriver(position, newer, tip, table);
});
}
else
{
_VisualiseNewDriver(position, newer, table);
_VisualiseNewDriver(position, newer, tip, table);
}
}
@@ -300,6 +305,8 @@ namespace GHelper
foreach (var driver in drivers)
{
int newer = DRIVER_NOT_FOUND;
string tip = driver.version;
if (type == 0 && driver.hardwares.ToString().Length > 0)
for (int k = 0; k < driver.hardwares.GetArrayLength(); k++)
{
@@ -310,14 +317,18 @@ namespace GHelper
{
newer = Math.Min(newer, new Version(driver.version).CompareTo(new Version(localVersion)));
Logger.WriteLine(driver.title + " " + deviceID + " " + driver.version + " vs " + localVersion + " = " + newer);
tip = "Download: " + driver.version + "\n" + "Installed: " + localVersion;
}
}
if (type == 1)
{
newer = Int32.Parse(driver.version) > Int32.Parse(bios) ? 1 : -1;
tip = "Download: " + driver.version + "\n" + "Installed: " + bios;
}
VisualiseNewDriver(count, newer, table);
VisualiseNewDriver(count, newer, tip, table);
if (newer == DRIVER_NEWER)
{

View File

@@ -117,4 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@@ -13,7 +13,6 @@ Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13
- [Troubleshooting](https://github.com/seerge/g-helper/wiki/Troubleshooting)
- [Power User Settings](https://github.com/seerge/g-helper/wiki/Power-user-settings)
### Support project : [:euro: Paypal EUR](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA) | [💵 Paypal USD](https://www.paypal.com/donate/?hosted_button_id=SRM6QUX6ACXDY) | [🪙 Stripe](https://buy.stripe.com/00gaFJ9Lf79v7WobII)
[![G-Helper Download](https://github.com/seerge/g-helper/assets/5920850/4d98465a-63a5-4498-ae14-afb3e67e7e82)](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
@@ -23,8 +22,8 @@ Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13
| [Josh Cravey](https://www.youtube.com/watch?v=hqe-PjuE-K8) | [cbutters Tech](https://www.youtube.com/watch?v=6aVdwJKZSSc) |
## 📰 Articles
1. https://binaryfork.com/ghelper-armoury-crate-alternative-10216/
2. https://www.digitaltrends.com/computing/g-helper-armoury-crate-alternative/
1. https://www.digitaltrends.com/computing/g-helper-armoury-crate-alternative/
2. https://binaryfork.com/ghelper-armoury-crate-alternative-10216/
## :gift: Advantages
@@ -44,7 +43,7 @@ Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13
4. Custom fan curve editor, power limits and turbo boost selection for every performance mode
5. Anime Matrix or Slash Lighting control including animated GIFs, clock and Audio visualizer
6. Backlight animation modes and colors
7. Custom hotkeys (M-keys, FN+X keys)
7. Hotkey handling
8. Monitor CPU and GPU temperature, fan speeds and battery status
9. Battery charge limit to preserve battery health
10. NVidia GPU overclocking and undervolting
@@ -95,6 +94,7 @@ Each BIOS mode is paired with matching Windows Power Mode. You can adjust this s
- ROG Gladius III
- ROG Gladius III Wireless
- ROG Harpe Ace Aim Lab Edition
- ROG Keris (P509)
- ROG Keris Wireless
- ROG Strix Carry (P508)
- ROG Strix III Gladius III Aimpoint Wireless (P711)
@@ -115,6 +115,7 @@ Huge thanks to [@IceStormNG](https://github.com/IceStormNG) 👑 for contributio
- ``Ctrl + M1 / M2`` - Screen brightness Down / Up
- ``Shift + M1 / M2`` - Backlight brightness Down / Up
- ``Fn + C`` - Fn-Lock
- ``Fn + Ctrl + F7 / F8`` - Flicker-free dimming Down / Up
- ``Fn + Shift + F7 / F8`` - Matrix / Slash Lighting brightness Down / Up
- ``Fn + Shift + F7 / F8`` - Screenpad brightness Down / Up
- ``Ctrl + Shift + F20`` - Mute Microphone
@@ -136,13 +137,6 @@ Huge thanks to [@IceStormNG](https://github.com/IceStormNG) 👑 for contributio
- ``M + X`` - Screenshot
- ``M + Right Stick Click`` - Controller Mode
------------------
#### If you like the app you can make a Donation
| [Paypal in EUR](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA) | [Paypal in USD](https://www.paypal.com/donate/?hosted_button_id=SRM6QUX6ACXDY) |
| ------------------------------------------ | ----------------------------------------------- |
| [![QR Code](https://user-images.githubusercontent.com/5920850/233658717-0441494d-fede-4a2c-b4f2-4b16a184a69a.png)](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA) | [![QR Code](https://github-production-user-asset-6210df.s3.amazonaws.com/5920850/239492811-b487e89a-3df6-42ea-bdb8-24c455ab2310.png)](https://www.paypal.com/donate/?hosted_button_id=SRM6QUX6ACXDY) |
------------------
### 🔖 Important Notice

View File

@@ -257,31 +257,28 @@ G-helper是一个单文件的exe文件, 而且它不会向系统中安装任何
---
# 安装指南
### 如何开始
1. 从 [**Releases Page**](https://github.com/seerge/g-helper/releases) 下载最新版本
2. 解压到选择的文件夹
3. 运行 **GHelper.exe**
1.下载[**最新版本**](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
2. 解压到选择的文件夹_不要直接从zip运行exe因为Windows会将其放入临时文件夹并在之后删除_
3.运行**GHelper.exe**
### 运行要求(必须)
- 如果您在启动时收到来自 Windows Defender 的警告Windows 保护了您的电脑)。
单击“更多信息”->“仍然运行”。
- 如果出现“在商店中搜索应用程序”对话框,则这是 Windows Defender 的一个错误。
右键单击 GHelper.exe -> 选择“属性” -> 选择“取消阻止复选框”
- Microsoft [.NET7](https://dotnet.microsoft.com/en-us/download)。 你可能已经安装了。 如果没有的话你可以从官方网站 [立即下载](https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-7.0.202-windows-x64-installer)。
- [Asus System Control Interface](https://dlcdnets.asus.com/pub/ASUS/nb/Image/CustomComponent/ASUSSystemControlInterfaceV3/ASUSSystemControlInterfaceV3.exe)。 如果你安装了或者安装过myASUS, 那么这个"驱动"应当已经安装(即使myASUS已经卸载)。 或者你可以手动下载安装。
### 要求(强制)
### 推荐配置(可选)
- [Microsoft .NET 7](https://download.visualstudio.microsoft.com/download/pr/8091a826-e1c4-424a-b17b-5c10776cd3de/8957f21a279322d8fac9b542c6aba12e/dotnet-sdk-7.0.408-win-x64.exe)
- [华硕系统控制界面](https://dlcdnets.asus.com/pub/ASUS/nb/Image/CustomComponent/ASUSSystemControlInterfaceV3/ASUSSystemControlInterfaceV3.exe)
- 推荐保持 "Asus Optimization Service" 这个windows服务的运行, 它保证基本的键盘快捷键(比如屏幕或键盘亮度)能够使用。
- 可选选项(!) 你可以通过在管理员模式下运行 [这个用于精简的.bat文件](https://raw.githubusercontent.com/seerge/g-helper/main/debloat.bat)来禁用/移除不必要的服务。如果要恢复这些服务,运行 [这个.bat文件](https://raw.githubusercontent.com/seerge/g-helper/main/bloat.bat)。
### 建议(可选)
-这个应用不建议与Armoury Crate(及其服务)同时运行, 因为它们调整相同的设置。可以[使用ASUS官方提供的卸载工具卸载](https://dlcdnets.asus.com/pub/ASUS/mb/14Utilities/Armoury_Crate_Uninstall_Tool.zip?model=armoury%20crate)Armoury Crate。以防万一,你总是可以后再安装回来
- **不建议**将该应用程序与 Armoury Crate 服务结合使用,因为它们调整相同的设置。可以[使用AC自带的卸载工具卸载](https://dlcdnets.asus.com/pub/ASUS/mb/14Utilities/Armoury_Crate_Uninstall_Tool.zip?model=armoury%20crate)。 以防万一,可以后再安装
- **不建议**运行“ASUS Smart Display Control”应用程序因为它会尝试更改刷新率并与 g-helper 争夺相同的功能。 您可以安全地卸载它。
- 如果您不打算使用 MyASUS您可以停止/禁用不必要的服务:转到应用程序中的 **Extra**,然后按 Asus 服务部分中的“停止”。 要重新启动/启用服务 - 单击“开始”。
---
为Asus ROG 幻14 2022 (配置了AMD核显和独显)设计和开发。但应当可能在幻14 2021和2020款, 幻15, X FLOW, 以及其他的ROG机型上使用相关且支持的功能。
我并没有microsoft证书来为这个应用签名所以如果你在启动时看到windows defender的警告(windows 保护了你的电脑),点击“更多详情” -> 继续运行(不推荐)。作为可选选项,你也可以使用 visual studio自行编译然后运行这个项目 :)
设置文件保存在 ``%AppData%\GHelper``
---