Compare commits

...

50 Commits

Author SHA1 Message Date
Serge
5b64f89351 Version bump 2024-08-21 18:43:00 +02:00
Serge
de10360224 Backlight controls for ProArt #2973 2024-08-21 18:38:15 +02:00
Serge
63828e3db7 Cleanup 2024-08-21 18:11:54 +02:00
Serge
8b66e95b8b Backlight modes for old TUFs https://github.com/seerge/g-helper/discussions/2996 2024-08-21 10:38:33 +02:00
Serge
cd930cebf9 Optimus check for varibright toggle https://github.com/seerge/g-helper/issues/2984 2024-08-18 12:35:52 +02:00
Serge
7bdaca93d5 XGM check for Optimized mode https://github.com/seerge/g-helper/issues/2985 2024-08-17 17:24:46 +02:00
Serge
ef6990c528 Backlight controls for new Vivobooks https://github.com/seerge/g-helper/issues/2973 2024-08-17 12:51:41 +02:00
Serge
72f01321ae Main window position tweak #2983 2024-08-16 17:20:05 +02:00
Serge
e6767126c9 Main window position tweak https://github.com/seerge/g-helper/issues/2983 2024-08-16 16:50:41 +02:00
Serge
50f0c82b70 Merge branch 'main' of https://github.com/seerge/g-helper 2024-08-15 11:03:57 +02:00
Serge
12587e222f Backup config reading https://github.com/seerge/g-helper/issues/2978 2024-08-15 11:03:54 +02:00
Serge
dfb51b897e New Crowdin updates (#2975)
* New translations strings.resx (Lithuanian)

* New translations strings.resx (Lithuanian)
2024-08-15 10:20:40 +02:00
Serge
cc36184834 Update README.md 2024-08-15 10:18:03 +02:00
Serge
338a5e85f4 Update README.md 2024-08-14 10:54:34 +02:00
Serge
632ed073a1 New translations strings.resx (French) (#2972) 2024-08-14 09:37:26 +02:00
Serge
07a1ea46c7 Hotkey handling only when Optimization service is not running 2024-08-12 23:22:27 +02:00
Serge
8e0bea59aa GPU setting tweak 2024-08-12 23:19:03 +02:00
Serge
0deccfa47a Limit Dynamic Lighting check only for win 11 https://github.com/seerge/g-helper/issues/2966 2024-08-12 14:22:00 +02:00
Serge
c16dfe207f Version bump 2024-08-11 23:22:02 +02:00
Serge
b362afe451 Cleanup 2024-08-11 11:09:29 +02:00
Serge
6fe8ff65b1 Pro Art Hotkeys and visual modes support (#2962)
* Init

* Update AsusACPI.cs

* Visual modes and gamuts

* Emoji popup

* Emojis Popup

* ProArt F12

* Softwar FN-Lock for ProArt

* Cleanup

* Cleanup
2024-08-11 11:08:32 +02:00
Serge
b8af931248 Cleanup 2024-08-10 16:59:36 +02:00
Serge
3deaefb630 New Crowdin updates (#2949)
* ROG Strix Evolve https://github.com/seerge/g-helper/issues/2842

* New translations strings.resx (Lithuanian)
2024-08-10 16:59:00 +02:00
Serge
0dec01a275 Update README.md 2024-08-09 18:43:36 +02:00
Serge
1efda38ccf Update README.md 2024-08-07 11:34:24 +02:00
Serge
88eb4916b6 Aura Breath bit https://github.com/seerge/g-helper/issues/2937 2024-08-07 11:08:24 +02:00
Serge
741d9cf1e2 Removed unsupported RGB modes for A16 https://github.com/seerge/g-helper/discussions/2922 2024-08-06 23:08:43 +02:00
Serge
45e3d5e75f Version bump 2024-08-06 18:35:14 +02:00
Serge
443f6726c7 Slash Lighting ID for GA605 #2892 2024-08-06 18:33:57 +02:00
Serge
f22f6eb960 Slash Lighting ID for GA605 #2892 2024-08-06 11:48:54 +02:00
Serge
a83b42c263 Improved ROG Ally X detection https://github.com/seerge/g-helper/discussions/2925 2024-08-05 23:27:27 +02:00
Serge
b97bd9af65 Slash Lighting ID for GA605 https://github.com/seerge/g-helper/issues/2892 2024-08-05 23:24:47 +02:00
Serge
a70956eaf8 Added ROG Ally X Controller ID https://github.com/seerge/g-helper/discussions/2925 2024-08-05 13:04:26 +02:00
Serge
a8fd049090 Matrix Clock position tweak 2024-08-04 11:06:50 +02:00
Serge
9817769d62 Merge branch 'main' of https://github.com/seerge/g-helper 2024-08-04 11:03:02 +02:00
Serge
39f919213f ProArt GPU mode support https://github.com/seerge/g-helper/issues/2912 2024-08-04 11:02:59 +02:00
Serge
709f2b89ca Cleanup 2024-08-03 17:58:32 +02:00
Serge
950d082fc3 Media hotkeys for G712LU https://github.com/seerge/g-helper/issues/2897 2024-08-03 12:18:09 +02:00
Serge
ceaa8c4110 Hotkeys with 4-key combos https://github.com/seerge/g-helper/issues/2916 2024-08-03 12:08:16 +02:00
Serge
fefbe94a8c Custom Matrix clock formats https://github.com/seerge/g-helper/issues/2903 2024-08-03 12:02:46 +02:00
Serge
c96a7749be Exception handling https://github.com/seerge/g-helper/issues/2917 2024-08-03 11:40:59 +02:00
Serge
bc9917b69a Slash Lighting support for GA605 2024-08-03 11:29:32 +02:00
Serge
f5964b60c7 Added GA605 to config https://github.com/seerge/g-helper/issues/2892 2024-07-29 12:12:22 +02:00
Serge
b3133ede7a Slash Lighting support for GA605 https://github.com/seerge/g-helper/issues/2892 2024-07-29 11:32:49 +02:00
Serge
c245a929f3 Version bump 2024-07-26 13:38:56 +02:00
Serge
4c4e6c8291 Dynamic Lighting models list 2024-07-25 16:45:30 +02:00
Serge
887e769bc6 Vivobook Mux code cleanup 2024-07-25 16:43:26 +02:00
Serge
5858a9d45b Vivobook Eco mode #2847 2024-07-25 16:39:56 +02:00
Serge
69f6be8941 Vivobook Eco mode https://github.com/seerge/g-helper/issues/2847 2024-07-25 00:06:19 +02:00
Serge
258bf3048a Max refresh rate config storage for backup https://github.com/seerge/g-helper/issues/2871 2024-07-24 21:12:43 +02:00
21 changed files with 304 additions and 155 deletions

View File

@@ -40,9 +40,16 @@ namespace GHelper.AnimeMatrix
try try
{ {
if (AppConfig.IsSlash()) if (AppConfig.IsSlash())
deviceSlash = new SlashDevice(); {
if (AppConfig.IsSlashAura())
deviceSlash = new SlashDeviceAura();
else
deviceSlash = new SlashDevice();
}
else else
{
deviceMatrix = new AnimeMatrixDevice(); deviceMatrix = new AnimeMatrixDevice();
}
matrixTimer = new System.Timers.Timer(100); matrixTimer = new System.Timers.Timer(100);
matrixTimer.Elapsed += MatrixTimer_Elapsed; matrixTimer.Elapsed += MatrixTimer_Elapsed;
@@ -103,7 +110,7 @@ namespace GHelper.AnimeMatrix
deviceSlash.SetEnabled(true); deviceSlash.SetEnabled(true);
deviceSlash.Init(); deviceSlash.Init();
switch ((SlashMode)running) switch ((SlashMode)running)
{ {
case SlashMode.Static: case SlashMode.Static:
@@ -111,7 +118,8 @@ namespace GHelper.AnimeMatrix
if (custom is not null && custom.Length > 0) if (custom is not null && custom.Length > 0)
{ {
deviceSlash.SetCustom(AppConfig.StringToBytes(custom)); deviceSlash.SetCustom(AppConfig.StringToBytes(custom));
} else }
else
{ {
deviceSlash.SetStatic(brightness); deviceSlash.SetStatic(brightness);
} }
@@ -137,7 +145,7 @@ namespace GHelper.AnimeMatrix
public void SetLidMode(bool force = false) public void SetLidMode(bool force = false)
{ {
bool matrixLid = AppConfig.Is("matrix_lid"); bool matrixLid = AppConfig.Is("matrix_lid");
if (deviceSlash is not null) if (deviceSlash is not null)
{ {
deviceSlash.SetLidMode(true); deviceSlash.SetLidMode(true);
@@ -268,8 +276,8 @@ namespace GHelper.AnimeMatrix
StartMatrixTimer(1000); StartMatrixTimer(1000);
Logger.WriteLine("Matrix Clock"); Logger.WriteLine("Matrix Clock");
} }
private void SlashTimer_start(int interval = 60000) private void SlashTimer_start(int interval = 60000)
{ {
// 100% to 0% in 1hr = 1% every 36 seconds // 100% to 0% in 1hr = 1% every 36 seconds
@@ -279,18 +287,18 @@ namespace GHelper.AnimeMatrix
// create the timer if first call // create the timer if first call
// this way, the timer only spawns if user tries to use battery pattern // this way, the timer only spawns if user tries to use battery pattern
if(slashTimer == default(System.Timers.Timer)) if (slashTimer == default(System.Timers.Timer))
{ {
slashTimer = new System.Timers.Timer(interval); slashTimer = new System.Timers.Timer(interval);
slashTimer.Elapsed += SlashTimer_elapsed; slashTimer.Elapsed += SlashTimer_elapsed;
slashTimer.AutoReset = true; slashTimer.AutoReset = true;
} }
// only write if interval changed // only write if interval changed
if(slashTimer.Interval != interval) if (slashTimer.Interval != interval)
{ {
slashTimer.Interval = interval; slashTimer.Interval = interval;
} }
slashTimer.Start(); slashTimer.Start();
} }
@@ -304,7 +312,7 @@ namespace GHelper.AnimeMatrix
if (deviceSlash is null) return; if (deviceSlash is null) return;
//kill timer if called but not in battery pattern mode //kill timer if called but not in battery pattern mode
if((SlashMode)AppConfig.Get("matrix_running", 0) != SlashMode.BatteryLevel) if ((SlashMode)AppConfig.Get("matrix_running", 0) != SlashMode.BatteryLevel)
{ {
slashTimer.Stop(); slashTimer.Stop();
slashTimer.Dispose(); slashTimer.Dispose();

View File

@@ -404,12 +404,14 @@ namespace GHelper.AnimeMatrix
public void PresentClock() public void PresentClock()
{ {
string second = (DateTime.Now.Second % 2 == 0) ? ":" : " "; string timeFormat = AppConfig.GetString("matrix_time", "HH:mm");
string time = DateTime.Now.ToString("HH" + second + "mm"); string dateFormat = AppConfig.GetString("matrix_date", "yy.MM.dd");
if (DateTime.Now.Second % 2 != 0) timeFormat = timeFormat.Replace(":", " ");
Clear(); Clear();
Text(time, 15, 0, 25); Text(DateTime.Now.ToString(timeFormat), 15, 2, 25);
Text(DateTime.Now.ToString("yy'. 'MM'. 'dd"), 11.5F, 0, 14); Text(DateTime.Now.ToString(dateFormat), 11.5F, 0, 14);
Present(); Present();
} }

View File

@@ -1,7 +1,6 @@
using GHelper.AnimeMatrix.Communication; using GHelper.AnimeMatrix.Communication;
using System.Management; using System.Management;
using System.Text; using System.Text;
using System.Timers;
namespace GHelper.AnimeMatrix namespace GHelper.AnimeMatrix
{ {
@@ -26,16 +25,24 @@ namespace GHelper.AnimeMatrix
BatteryLevel, BatteryLevel,
} }
internal class SlashPacket : Packet public class SlashPacket : Packet
{ {
public SlashPacket(byte[] command) : base(0x5E, 128, command) public SlashPacket(byte[] command, byte reportID = 0x5E) : base(reportID, 128, command)
{ {
} }
} }
public class SlashDevice : Device public class SlashDevice : Device
{ {
protected virtual byte reportID => 0x5E;
protected virtual SlashPacket CreatePacket(byte[] command)
{
return new SlashPacket(command, reportID);
}
public static Dictionary<SlashMode, string> Modes = new Dictionary<SlashMode, string> public static Dictionary<SlashMode, string> Modes = new Dictionary<SlashMode, string>
{ {
{ SlashMode.Bounce, "Bounce"}, { SlashMode.Bounce, "Bounce"},
@@ -85,31 +92,31 @@ namespace GHelper.AnimeMatrix
{ SlashMode.Buzzer, 0x44}, { SlashMode.Buzzer, 0x44},
}; };
public SlashDevice() : base(0x0B05, 0x193B, 128) public SlashDevice(ushort productId = 0x193B) : base(0x0B05, productId, 128)
{ {
} }
public void WakeUp() public void WakeUp()
{ {
Set(Packet<SlashPacket>(Encoding.ASCII.GetBytes("ASUS Tech.Inc.")), "SlashWakeUp"); Set(CreatePacket(Encoding.ASCII.GetBytes("ASUS Tech.Inc.")), "SlashWakeUp");
Set(Packet<SlashPacket>(0xC2), "SlashWakeUp"); Set(CreatePacket([0xC2]), "SlashWakeUp");
Set(Packet<SlashPacket>(0xD1, 0x01, 0x00, 0x01), "SlashWakeUp"); Set(CreatePacket([0xD1, 0x01, 0x00, 0x01 ]), "SlashWakeUp");
} }
public void Init() public void Init()
{ {
Set(Packet<SlashPacket>(0xD7, 0x00, 0x00, 0x01, 0xAC), "SlashInit"); Set(CreatePacket([0xD7, 0x00, 0x00, 0x01, 0xAC]), "SlashInit");
Set(Packet<SlashPacket>(0xD2, 0x02, 0x01, 0x08, 0xAB), "SlashInit"); Set(CreatePacket([0xD2, 0x02, 0x01, 0x08, 0xAB]), "SlashInit");
} }
public void SetEnabled(bool status = true) public void SetEnabled(bool status = true)
{ {
Set(Packet<SlashPacket>(0xD8, 0x02, 0x00, 0x01, status ? (byte)0x00 : (byte)0x80), $"SlashEnable {status}"); Set(CreatePacket([0xD8, 0x02, 0x00, 0x01, status ? (byte)0x00 : (byte)0x80]), $"SlashEnable {status}");
} }
public void Save() public void Save()
{ {
Set(Packet<SlashPacket>(0xD4, 0x00, 0x00, 0x01, 0xAB), "SlashSave"); Set(CreatePacket([0xD4, 0x00, 0x00, 0x01, 0xAB]), "SlashSave");
} }
public void SetMode(SlashMode mode) public void SetMode(SlashMode mode)
@@ -125,8 +132,8 @@ namespace GHelper.AnimeMatrix
modeByte = 0x00; modeByte = 0x00;
} }
Set(Packet<SlashPacket>(0xD2, 0x03, 0x00, 0x0C), "SlashMode"); Set(CreatePacket([0xD2, 0x03, 0x00, 0x0C]), "SlashMode");
Set(Packet<SlashPacket>(0xD3, 0x04, 0x00, 0x0C, 0x01, modeByte, 0x02, 0x19, 0x03, 0x13, 0x04, 0x11, 0x05, 0x12, 0x06, 0x13), "SlashMode"); Set(CreatePacket([0xD3, 0x04, 0x00, 0x0C, 0x01, modeByte, 0x02, 0x19, 0x03, 0x13, 0x04, 0x11, 0x05, 0x12, 0x06, 0x13]), "SlashMode");
} }
public void SetStatic(int brightness = 0) public void SetStatic(int brightness = 0)
@@ -135,23 +142,23 @@ namespace GHelper.AnimeMatrix
} }
public static double GetBatteryChargePercentage() public static double GetBatteryChargePercentage()
{
double batteryCharge = 0;
try
{ {
double batteryCharge = 0; ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Battery");
try foreach (ManagementObject battery in searcher.Get())
{ {
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Battery"); batteryCharge = Convert.ToDouble(battery["EstimatedChargeRemaining"]);
foreach (ManagementObject battery in searcher.Get()) break; // Assuming only one battery
{
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;
} }
catch (ManagementException e)
{
Console.WriteLine("An error occurred while querying for WMI data: " + e.Message);
}
return batteryCharge;
}
private byte[] GetBatteryPattern(int brightness, double percentage) private byte[] GetBatteryPattern(int brightness, double percentage)
{ {
@@ -159,64 +166,77 @@ namespace GHelper.AnimeMatrix
// set brightness to reflect battery's percentage within that range // set brightness to reflect battery's percentage within that range
int bracket = (int)Math.Floor(percentage / 14.2857); int bracket = (int)Math.Floor(percentage / 14.2857);
if(bracket >= 7) return Enumerable.Repeat((byte)(brightness * 85.333), 7).ToArray(); if (bracket >= 7) return Enumerable.Repeat((byte)(brightness * 85.333), 7).ToArray();
byte[] batteryPattern = Enumerable.Repeat((byte)(0x00), 7).ToArray(); byte[] batteryPattern = Enumerable.Repeat((byte)(0x00), 7).ToArray();
for (int i = 6; i > 6-bracket; i--) for (int i = 6; i > 6 - bracket; i--)
{ {
batteryPattern[i] = (byte)(brightness * 85.333); batteryPattern[i] = (byte)(brightness * 85.333);
} }
//set the "selected" bracket to the percentage of that bracket filled from 0 to 255 as a hex //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); batteryPattern[6 - bracket] = (byte)(((percentage % 14.2857) * brightness * 85.333) / 14.2857);
return batteryPattern; return batteryPattern;
} }
public void SetBatteryPattern(int brightness) public void SetBatteryPattern(int brightness)
{ {
SetCustom(GetBatteryPattern(brightness, 100*(GetBatteryChargePercentage()/AppConfig.Get("charge_limit",100)))); SetCustom(GetBatteryPattern(brightness, 100 * (GetBatteryChargePercentage() / AppConfig.Get("charge_limit", 100))));
} }
public void SetCustom(byte[] data) public void SetCustom(byte[] data)
{ {
Set(Packet<SlashPacket>(0xD2, 0x02, 0x01, 0x08, 0xAC), "Static"); Set(CreatePacket([0xD2, 0x02, 0x01, 0x08, 0xAC]), "Static");
Set(Packet<SlashPacket>(0xD3, 0x03, 0x01, 0x08, 0xAC, 0xFF, 0xFF, 0x01, 0x05, 0xFF, 0xFF), "StaticSettings"); Set(CreatePacket([0xD3, 0x03, 0x01, 0x08, 0xAC, 0xFF, 0xFF, 0x01, 0x05, 0xFF, 0xFF]), "StaticSettings");
Set(Packet<SlashPacket>(0xD4, 0x00, 0x00, 0x01, 0xAC), "StaticSave"); Set(CreatePacket([0xD4, 0x00, 0x00, 0x01, 0xAC]), "StaticSave");
byte[] payload = new byte[] { 0xD3, 0x00, 0x00, 0x07 }; byte[] payload = new byte[] { 0xD3, 0x00, 0x00, 0x07 };
Set(Packet<SlashPacket>(payload.Concat(data.Take(7)).ToArray()), "Static Data"); Set(CreatePacket(payload.Concat(data.Take(7)).ToArray()), "Static Data");
} }
public void SetOptions(bool status, int brightness = 0, int interval = 0) public void SetOptions(bool status, int brightness = 0, int interval = 0)
{ {
byte brightnessByte = (byte)(brightness * 85.333); byte brightnessByte = (byte)(brightness * 85.333);
Set(Packet<SlashPacket>(0xD3, 0x03, 0x01, 0x08, 0xAB, 0xFF, 0x01, status ? (byte)0x01 : (byte)0x00, 0x06, brightnessByte, 0xFF, (byte)interval), "SlashOptions"); Set(CreatePacket([0xD3, 0x03, 0x01, 0x08, 0xAB, 0xFF, 0x01, status ? (byte)0x01 : (byte)0x00, 0x06, brightnessByte, 0xFF, (byte)interval]), "SlashOptions");
} }
public void SetBatterySaver(bool status) public void SetBatterySaver(bool status)
{ {
Set(Packet<SlashPacket>(0xD8, 0x01, 0x00, 0x01, status ? (byte)0x80 : (byte)0x00), $"SlashBatterySaver {status}"); Set(CreatePacket([0xD8, 0x01, 0x00, 0x01, status ? (byte)0x80 : (byte)0x00]), $"SlashBatterySaver {status}");
} }
public void SetLidMode(bool status) public void SetLidMode(bool status)
{ {
Set(Packet<SlashPacket>(0xD8, 0x00, 0x00, 0x02, 0xA5, status ? (byte)0x80 : (byte)0x00), $"DisableLidClose {status}"); Set(CreatePacket([0xD8, 0x00, 0x00, 0x02, 0xA5, status ? (byte)0x80 : (byte)0x00]), $"DisableLidClose {status}");
} }
public void SetSleepActive(bool status) public void SetSleepActive(bool status)
{ {
Set(Packet<SlashPacket>(0xD2, 0x02, 0x01, 0x08, 0xA1), "SleepInit"); Set(CreatePacket([0xD2, 0x02, 0x01, 0x08, 0xA1]), "SleepInit");
Set(Packet<SlashPacket>(0xD3, 0x03, 0x01, 0x08, 0xA1, 0x00, 0xFF, status ? (byte)0x01 : (byte)0x00, 0x02, 0xFF, 0xFF), $"Sleep {status}"); Set(CreatePacket([0xD3, 0x03, 0x01, 0x08, 0xA1, 0x00, 0xFF, status ? (byte)0x01 : (byte)0x00, 0x02, 0xFF, 0xFF]), $"Sleep {status}");
} }
public void Set(Packet packet, string? log = null) public void Set(Packet packet, string? log = null)
{ {
_usbProvider?.Set(packet.Data); _usbProvider?.Set(packet.Data);
if (log is not null) Logger.WriteLine($"{log}:" + BitConverter.ToString(packet.Data).Substring(0,48)); if (log is not null) Logger.WriteLine($"{log}:" + BitConverter.ToString(packet.Data).Substring(0, 48));
}
}
public class SlashDeviceAura : SlashDevice
{
protected override byte reportID => 0x5D;
public SlashDeviceAura() : base(0x19B6)
{
} }
protected override SlashPacket CreatePacket(byte[] command)
{
return new SlashPacket(command, reportID);
}
} }
} }

View File

@@ -41,10 +41,19 @@ public static class AppConfig
{ {
config = JsonSerializer.Deserialize<Dictionary<string, object>>(text); config = JsonSerializer.Deserialize<Dictionary<string, object>>(text);
} }
catch catch (Exception ex)
{ {
Logger.WriteLine("Broken config: " + text); Logger.WriteLine($"Broken config: {ex.Message} {text}");
Init(); try
{
text = File.ReadAllText(configFile + ".bak");
config = JsonSerializer.Deserialize<Dictionary<string, object>>(text);
}
catch (Exception exb)
{
Logger.WriteLine($"Broken backup config: {exb.Message} {text}");
Init();
}
} }
} }
else else
@@ -377,6 +386,11 @@ public static class AppConfig
return ContainsModel("Vivobook") || ContainsModel("Zenbook"); return ContainsModel("Vivobook") || ContainsModel("Zenbook");
} }
public static bool IsVivoZenPro()
{
return ContainsModel("Vivobook") || ContainsModel("Zenbook") || ContainsModel("ProArt");
}
// Devices with bugged bios command to change brightness // Devices with bugged bios command to change brightness
public static bool SwappedBrightness() public static bool SwappedBrightness()
{ {
@@ -395,19 +409,29 @@ public static class AppConfig
return ContainsModel("GA401I") && !ContainsModel("GA401IHR"); return ContainsModel("GA401I") && !ContainsModel("GA401IHR");
} }
public static bool MediaKeys()
{
return NoAura() || ContainsModel("G712L");
}
public static bool IsSingleColor() public static bool IsSingleColor()
{ {
return ContainsModel("GA401") || ContainsModel("FX517Z") || ContainsModel("FX516P") || ContainsModel("X13") || IsARCNM() || ContainsModel("GA502IU"); return ContainsModel("GA401") || ContainsModel("FX517Z") || ContainsModel("FX516P") || ContainsModel("X13") || IsARCNM() || ContainsModel("GA502IU") || ContainsModel("FA617N") || ContainsModel("FA617X");
} }
public static bool IsSlash() public static bool IsSlash()
{ {
return ContainsModel("GA403") || ContainsModel("GU605"); return ContainsModel("GA403") || ContainsModel("GU605") || ContainsModel("GA605");
}
public static bool IsSlashAura()
{
return ContainsModel("GA605");
} }
public static bool IsInputBacklight() public static bool IsInputBacklight()
{ {
return ContainsModel("GA503") || IsSlash(); return ContainsModel("GA503") || IsSlash() || IsVivoZenPro();
} }
public static bool IsInvertedFNLock() public static bool IsInvertedFNLock()
@@ -517,7 +541,7 @@ public static class AppConfig
public static bool DynamicBoost20() public static bool DynamicBoost20()
{ {
return ContainsModel("GU605"); return ContainsModel("GU605") || ContainsModel("GA605");
} }
public static bool IsAdvantageEdition() public static bool IsAdvantageEdition()
@@ -527,7 +551,7 @@ public static class AppConfig
public static bool NoAutoUltimate() public static bool NoAutoUltimate()
{ {
return ContainsModel("G614") || ContainsModel("GU604") || ContainsModel("FX507") || ContainsModel("G513") || ContainsModel("FA617") || ContainsModel("G834") || ContainsModel("GA403") || ContainsModel("GU605") || ContainsModel("GU603VV"); return ContainsModel("G614") || ContainsModel("GU604") || ContainsModel("FX507") || ContainsModel("G513") || ContainsModel("FA617") || ContainsModel("G834") || ContainsModel("GA403") || ContainsModel("GU605") || ContainsModel("GA605") || ContainsModel("GU603VV");
} }
@@ -647,14 +671,14 @@ public static class AppConfig
public static bool IsChargeLimit6080() public static bool IsChargeLimit6080()
{ {
return ContainsModel("GA403U") || ContainsModel("GU605") || ContainsModel("GA503R") || (IsTUF() && !(ContainsModel("FX507Z") || ContainsModel("FA617"))); return ContainsModel("GA403U") || ContainsModel("GU605") || ContainsModel("GA605") || ContainsModel("GA503R") || (IsTUF() && !(ContainsModel("FX507Z") || ContainsModel("FA617")));
} }
// 2024 Models support Dynamic Lighting // 2024 Models support Dynamic Lighting
public static bool IsDynamicLighting() public static bool IsDynamicLighting()
{ {
return IsSlash() || ContainsModel("JIR") || ContainsModel("JZR") || ContainsModel("JVR") || ContainsModel("JYR") || ContainsModel("FA607P") || ContainsModel("FX607J") || ContainsModel("FA507U"); return IsSlash() || IsIntelHX() || ContainsModel("FA607P") || ContainsModel("FX607J") || ContainsModel("FA507U");
} }
public static bool IsForceMiniled() public static bool IsForceMiniled()

View File

@@ -46,6 +46,7 @@ public class AsusACPI
public const int KB_TouchpadToggle = 0x6b; public const int KB_TouchpadToggle = 0x6b;
public const int KB_MuteToggle = 0x7c; public const int KB_MuteToggle = 0x7c;
public const int KB_FNlockToggle = 0x4e;
public const int KB_DUO_PgUpDn = 0x4B; public const int KB_DUO_PgUpDn = 0x4B;
public const int KB_DUO_SecondDisplay = 0x6A; public const int KB_DUO_SecondDisplay = 0x6A;
@@ -66,12 +67,13 @@ public class AsusACPI
public const uint PerformanceMode = 0x00120075; // Performance modes public const uint PerformanceMode = 0x00120075; // Performance modes
public const uint VivoBookMode = 0x00110019; // Vivobook performance modes public const uint VivoBookMode = 0x00110019; // Vivobook performance modes
public const uint GPUEco = 0x00090020; public const uint GPUEcoROG = 0x00090020;
public const uint GPUEcoVivo = 0x00090120;
public const uint GPUXGConnected = 0x00090018; public const uint GPUXGConnected = 0x00090018;
public const uint GPUXG = 0x00090019; public const uint GPUXG = 0x00090019;
public const uint GPUMux = 0x00090016; public const uint GPUMuxROG = 0x00090016;
public const uint GPUMuxVivo = 0x00090026; public const uint GPUMuxVivo = 0x00090026;
public const uint BatteryLimit = 0x00120057; public const uint BatteryLimit = 0x00120057;
@@ -112,8 +114,11 @@ public class AsusACPI
public const int APU_MEM = 0x000600C1; public const int APU_MEM = 0x000600C1;
public const int TUF_KB_BRIGHTNESS = 0x00050021; public const int TUF_KB_BRIGHTNESS = 0x00050021;
public const int VIVO_KB_BRIGHTNESS = 0x0005002F;
public const int TUF_KB = 0x00100056; public const int TUF_KB = 0x00100056;
public const int TUF_KB2 = 0x0010005a; public const int TUF_KB2 = 0x0010005a;
public const int TUF_KB_STATE = 0x00100057; public const int TUF_KB_STATE = 0x00100057;
public const int MicMuteLed = 0x00040017; public const int MicMuteLed = 0x00040017;
@@ -170,6 +175,8 @@ public class AsusACPI
private bool? _allAMD = null; private bool? _allAMD = null;
private bool? _overdrive = null; private bool? _overdrive = null;
public static uint GPUEco => AppConfig.IsVivoZenPro() ? GPUEcoVivo : GPUEcoROG;
public static uint GPUMux => AppConfig.IsVivoZenPro() ? GPUMuxVivo : GPUMuxROG;
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)] [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
private static extern IntPtr CreateFile( private static extern IntPtr CreateFile(
@@ -445,14 +452,16 @@ public class AsusACPI
public int SetGPUEco(int eco) public int SetGPUEco(int eco)
{ {
int ecoFlag = DeviceGet(GPUEco); uint ecoEndpoint = GPUEco;
int ecoFlag = DeviceGet(ecoEndpoint);
if (ecoFlag < 0) return -1; if (ecoFlag < 0) return -1;
if (ecoFlag == 1 && eco == 0) if (ecoFlag == 1 && eco == 0)
return DeviceSet(GPUEco, eco, "GPUEco"); return DeviceSet(ecoEndpoint, eco, "GPUEco");
if (ecoFlag == 0 && eco == 1) if (ecoFlag == 0 && eco == 1)
return DeviceSet(GPUEco, eco, "GPUEco"); return DeviceSet(ecoEndpoint, eco, "GPUEco");
return -1; return -1;
} }
@@ -639,7 +648,7 @@ public class AsusACPI
public bool IsAllAmdPPT() public bool IsAllAmdPPT()
{ {
if (_allAMD is null) _allAMD = DeviceGet(PPT_CPUB0) >= 0 && DeviceGet(PPT_GPUC0) < 0; if (_allAMD is null) _allAMD = DeviceGet(PPT_CPUB0) >= 0 && DeviceGet(PPT_GPUC0) < 0 && !AppConfig.IsAlly();
return (bool)_allAMD; return (bool)_allAMD;
} }
@@ -779,6 +788,8 @@ public class AsusACPI
{ {
int param = 0x80 | (brightness & 0x7F); int param = 0x80 | (brightness & 0x7F);
DeviceSet(TUF_KB_BRIGHTNESS, param, "TUF Brightness"); DeviceSet(TUF_KB_BRIGHTNESS, param, "TUF Brightness");
if (AppConfig.IsVivoZenPro()) DeviceSet(VIVO_KB_BRIGHTNESS, param, "VIVO Brightness");
} }
public void TUFKeyboardRGB(AuraMode mode, Color color, int speed, string? log = "TUF RGB") public void TUFKeyboardRGB(AuraMode mode, Color color, int speed, string? log = "TUF RGB")
@@ -794,7 +805,13 @@ public class AsusACPI
setting[5] = (byte)speed; setting[5] = (byte)speed;
int result = DeviceSet(TUF_KB, setting, log); int result = DeviceSet(TUF_KB, setting, log);
if (result != 1) DeviceSet(TUF_KB2, setting, log); if (result != 1)
{
setting[0] = (byte)0xb3;
DeviceSet(TUF_KB2, setting, log);
setting[0] = (byte)0xb4;
DeviceSet(TUF_KB2, setting, log);
}
} }

View File

@@ -36,7 +36,13 @@ namespace GHelper.AutoUpdate
public void LoadReleases() public void LoadReleases()
{ {
Process.Start(new ProcessStartInfo(versionUrl) { UseShellExecute = true }); try
{
Process.Start(new ProcessStartInfo(versionUrl) { UseShellExecute = true });
} catch (Exception ex)
{
Logger.WriteLine("Failed to open releases page:" + ex.Message);
}
} }
async void CheckForUpdatesAsync() async void CheckForUpdatesAsync()

View File

@@ -153,6 +153,9 @@ namespace GHelper.Display
int frequency = ScreenNative.GetRefreshRate(laptopScreen); int frequency = ScreenNative.GetRefreshRate(laptopScreen);
int maxFrequency = ScreenNative.GetMaxRefreshRate(laptopScreen); int maxFrequency = ScreenNative.GetMaxRefreshRate(laptopScreen);
if (maxFrequency > 0) AppConfig.Set("max_frequency", maxFrequency);
else maxFrequency = AppConfig.Get("max_frequency");
bool screenAuto = AppConfig.Is("screen_auto"); bool screenAuto = AppConfig.Is("screen_auto");
bool overdriveSetting = Program.acpi.IsOverdriveSupported() && !AppConfig.IsNoOverdrive(); bool overdriveSetting = Program.acpi.IsOverdriveSupported() && !AppConfig.IsNoOverdrive();

View File

@@ -70,13 +70,13 @@ namespace GHelper.Display
public static SplendidGamut GetDefaultGamut() public static SplendidGamut GetDefaultGamut()
{ {
return AppConfig.IsVivoZenbook() ? SplendidGamut.VivoNative : SplendidGamut.Native; return AppConfig.IsVivoZenPro() ? SplendidGamut.VivoNative : SplendidGamut.Native;
} }
public static Dictionary<SplendidGamut, string> GetGamutModes() public static Dictionary<SplendidGamut, string> GetGamutModes()
{ {
bool isVivo = AppConfig.IsVivoZenbook(); bool isVivo = AppConfig.IsVivoZenPro();
Dictionary<SplendidGamut, string> _modes = new Dictionary<SplendidGamut, string>(); Dictionary<SplendidGamut, string> _modes = new Dictionary<SplendidGamut, string>();
@@ -148,13 +148,13 @@ namespace GHelper.Display
public static SplendidCommand GetDefaultVisualMode() public static SplendidCommand GetDefaultVisualMode()
{ {
return AppConfig.IsVivoZenbook() ? SplendidCommand.VivoNormal : SplendidCommand.Default; return AppConfig.IsVivoZenPro() ? SplendidCommand.VivoNormal : SplendidCommand.Default;
} }
public static Dictionary<SplendidCommand, string> GetVisualModes() public static Dictionary<SplendidCommand, string> GetVisualModes()
{ {
if (AppConfig.IsVivoZenbook()) if (AppConfig.IsVivoZenPro())
{ {
return new Dictionary<SplendidCommand, string> return new Dictionary<SplendidCommand, string>
{ {
@@ -291,7 +291,7 @@ namespace GHelper.Display
private static bool RunSplendid(SplendidCommand command, int? param1 = null, int? param2 = null) private static bool RunSplendid(SplendidCommand command, int? param1 = null, int? param2 = null)
{ {
var splendid = GetSplendidPath(); var splendid = GetSplendidPath();
bool isVivo = AppConfig.IsVivoZenbook(); bool isVivo = AppConfig.IsVivoZenPro();
bool isSplenddid = File.Exists(splendid); bool isSplenddid = File.Exists(splendid);
if (isSplenddid) if (isSplenddid)

View File

@@ -203,7 +203,7 @@ namespace GHelper
labelFNF4.Visible = comboFNF4.Visible = textFNF4.Visible = false; labelFNF4.Visible = comboFNF4.Visible = textFNF4.Visible = false;
} }
if (AppConfig.NoAura()) if (AppConfig.MediaKeys())
{ {
labelFNF4.Visible = comboFNF4.Visible = textFNF4.Visible = false; labelFNF4.Visible = comboFNF4.Visible = textFNF4.Visible = false;
} }
@@ -709,7 +709,10 @@ namespace GHelper
{ {
using (var amdControl = new AmdGpuControl()) using (var amdControl = new AmdGpuControl())
{ {
amdControl.SetVariBright(checkVariBright.Checked ? 1 : 0); if (NvidiaSmi.GetDisplayActiveStatus()) return; // Skip if Nvidia GPU is active
var status = checkVariBright.Checked ? 1 : 0;
var result = amdControl.SetVariBright(status);
Logger.WriteLine($"VariBright {status}: {result}");
ProcessHelper.KillByName("RadeonSoftware"); ProcessHelper.KillByName("RadeonSoftware");
} }
} }

View File

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

View File

@@ -25,8 +25,6 @@ namespace GHelper.Gpu
int eco = Program.acpi.DeviceGet(AsusACPI.GPUEco); int eco = Program.acpi.DeviceGet(AsusACPI.GPUEco);
int mux = Program.acpi.DeviceGet(AsusACPI.GPUMux); int mux = Program.acpi.DeviceGet(AsusACPI.GPUMux);
if (mux < 0) mux = Program.acpi.DeviceGet(AsusACPI.GPUMuxVivo);
Logger.WriteLine("Eco flag : " + eco); Logger.WriteLine("Eco flag : " + eco);
Logger.WriteLine("Mux flag : " + mux); Logger.WriteLine("Mux flag : " + mux);
@@ -83,7 +81,6 @@ namespace GHelper.Gpu
if (dialogResult == DialogResult.Yes) if (dialogResult == DialogResult.Yes)
{ {
status = Program.acpi.DeviceSet(AsusACPI.GPUMux, 1, "GPUMux"); status = Program.acpi.DeviceSet(AsusACPI.GPUMux, 1, "GPUMux");
if (status != 1) Program.acpi.DeviceSet(AsusACPI.GPUMuxVivo, 1, "GPUMuxVivo");
restart = true; restart = true;
changed = true; changed = true;
} }
@@ -95,11 +92,15 @@ namespace GHelper.Gpu
{ {
if (AppConfig.NoAutoUltimate()) if (AppConfig.NoAutoUltimate())
{ {
Program.acpi.SetGPUEco(0); int standardStatus = Program.acpi.SetGPUEco(0);
if (standardStatus == 0)
{
settings.VisualiseGPUMode();
return;
}
Thread.Sleep(100); Thread.Sleep(100);
} }
status = Program.acpi.DeviceSet(AsusACPI.GPUMux, 0, "GPUMux"); status = Program.acpi.DeviceSet(AsusACPI.GPUMux, 0, "GPUMux");
if (status != 1) Program.acpi.DeviceSet(AsusACPI.GPUMuxVivo, 0, "GPUMuxVivo");
restart = true; restart = true;
changed = true; changed = true;
} }
@@ -226,6 +227,7 @@ namespace GHelper.Gpu
if ((GpuAuto && !IsPlugged()) || (ForceGPU && GpuMode == AsusACPI.GPUModeEco)) if ((GpuAuto && !IsPlugged()) || (ForceGPU && GpuMode == AsusACPI.GPUModeEco))
{ {
if (Program.acpi.IsXGConnected()) return false;
if (HardwareControl.IsUsedGPU()) if (HardwareControl.IsUsedGPU())
{ {
DialogResult dialogResult = MessageBox.Show(Properties.Strings.AlertDGPU, Properties.Strings.AlertDGPUTitle, MessageBoxButtons.YesNo); DialogResult dialogResult = MessageBox.Show(Properties.Strings.AlertDGPU, Properties.Strings.AlertDGPUTitle, MessageBoxButtons.YesNo);

View File

@@ -32,7 +32,7 @@ public static class NvidiaSmi
public static int GetDefaultMaxGPUPower() public static int GetDefaultMaxGPUPower()
{ {
if (AppConfig.ContainsModel("GU605")) return 125; if (AppConfig.ContainsModel("GU605") || AppConfig.ContainsModel("GA605")) return 125;
if (AppConfig.ContainsModel("GA403")) return 90; if (AppConfig.ContainsModel("GA403")) return 90;
if (AppConfig.ContainsModel("FA607")) return 140; if (AppConfig.ContainsModel("FA607")) return 140;
else return 175; else return 175;

View File

@@ -7,6 +7,8 @@ namespace GHelper.Helpers
public static bool IsEnabled() public static bool IsEnabled()
{ {
if (Environment.OSVersion.Version.Build < 22000) return false;
using var key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Lighting"); using var key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Lighting");
var registryValueObject = key?.GetValue("AmbientLightingEnabled"); var registryValueObject = key?.GetValue("AmbientLightingEnabled");

View File

@@ -218,6 +218,9 @@ namespace GHelper.Input
case 3: case 3:
KeyboardHook.KeyKeyKeyPress((Keys)hexKeys[0], (Keys)hexKeys[1], (Keys)hexKeys[2]); KeyboardHook.KeyKeyKeyPress((Keys)hexKeys[0], (Keys)hexKeys[1], (Keys)hexKeys[2]);
break; break;
case 4:
KeyboardHook.KeyKeyKeyKeyPress((Keys)hexKeys[0], (Keys)hexKeys[1], (Keys)hexKeys[2], (Keys)hexKeys[3]);
break;
default: default:
LaunchProcess(command); LaunchProcess(command);
break; break;
@@ -278,6 +281,43 @@ namespace GHelper.Input
} }
} }
if (AppConfig.IsProArt())
{
switch (e.Key)
{
case Keys.F2:
KeyboardHook.KeyPress(Keys.VolumeDown);
return;
case Keys.F3:
KeyboardHook.KeyPress(Keys.VolumeUp);
return;
case Keys.F4:
HandleEvent(199); // Backlight cycle
return;
case Keys.F5:
SetBrightness(-10);
return;
case Keys.F6:
SetBrightness(+10);
return;
case Keys.F7:
KeyboardHook.KeyKeyPress(Keys.LWin, Keys.P);
return;
case Keys.F8:
HandleEvent(126); // Emojis
return;
case Keys.F9:
KeyProcess("m3"); // MicMute
return;
case Keys.F10:
HandleEvent(133); // Camera Toggle
return;
case Keys.F11:
KeyboardHook.KeyPress(Keys.Snapshot); // PrintScreen
return;
}
}
if (AppConfig.IsZ13() || AppConfig.IsDUO()) if (AppConfig.IsZ13() || AppConfig.IsDUO())
{ {
switch (e.Key) switch (e.Key)
@@ -288,7 +328,7 @@ namespace GHelper.Input
} }
} }
if (AppConfig.NoAura()) if (AppConfig.MediaKeys())
{ {
switch (e.Key) switch (e.Key)
{ {
@@ -655,6 +695,7 @@ namespace GHelper.Input
switch (EventID) switch (EventID)
{ {
case 134: // FN + F12 ON OLD DEVICES case 134: // FN + F12 ON OLD DEVICES
case 139: // ProArt F12
KeyProcess("m4"); KeyProcess("m4");
return; return;
case 124: // M3 case 124: // M3
@@ -666,9 +707,6 @@ namespace GHelper.Input
case 55: // Arconym case 55: // Arconym
KeyProcess("m6"); KeyProcess("m6");
return; return;
case 136: // FN + F12
if (!AppConfig.IsNoAirplaneMode()) Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Airplane, "Airplane");
return;
case 181: // FN + Numpad Enter case 181: // FN + Numpad Enter
KeyProcess("fne"); KeyProcess("fne");
return; return;
@@ -685,12 +723,6 @@ namespace GHelper.Input
case 158: // Fn + C case 158: // Fn + C
KeyProcess("fnc"); KeyProcess("fnc");
return; return;
case 78: // Fn + ESC
ToggleFnLock();
return;
case 75: // Fn + ESC
ToggleArrowLock();
return;
case 189: // Tablet mode case 189: // Tablet mode
TabletMode(); TabletMode();
return; return;
@@ -777,6 +809,18 @@ namespace GHelper.Input
case 53: // Fn+F6 on GA-502DU model case 53: // Fn+F6 on GA-502DU model
NativeMethods.TurnOffScreen(); NativeMethods.TurnOffScreen();
return; return;
case 126: // Fn+F8 emojis popup
KeyboardHook.KeyKeyPress(Keys.LWin, Keys.OemSemicolon);
return;
case 78: // Fn + ESC
ToggleFnLock();
return;
case 75: // Fn + Arrow Lock
ToggleArrowLock();
return;
case 136: // FN + F12
if (!AppConfig.IsNoAirplaneMode()) Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Airplane, "Airplane");
return;
} }

View File

@@ -77,6 +77,21 @@ public sealed class KeyboardHook : IDisposable
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero); keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
} }
public static void KeyKeyKeyKeyPress(Keys key, Keys key2, Keys key3, Keys key4, int sleep = 1)
{
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
keybd_event((byte)key2, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
keybd_event((byte)key3, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
keybd_event((byte)key4, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
Thread.Sleep(sleep);
keybd_event((byte)key4, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
keybd_event((byte)key3, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
keybd_event((byte)key2, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
}
/// <summary> /// <summary>
/// Represents the window that is used internally to get the messages. /// Represents the window that is used internally to get the messages.
/// </summary> /// </summary>

View File

@@ -282,19 +282,22 @@ namespace GHelper
} }
else else
{ {
var screen = Screen.PrimaryScreen;
if (screen is null) screen = Screen.FromControl(settingsForm);
settingsForm.Left = Screen.FromControl(settingsForm).WorkingArea.Width - 10 - settingsForm.Width; settingsForm.Location = screen.WorkingArea.Location;
settingsForm.Top = Screen.FromControl(settingsForm).WorkingArea.Height - 10 - settingsForm.Height; settingsForm.Left = screen.WorkingArea.Width - 10 - settingsForm.Width;
settingsForm.Top = screen.WorkingArea.Height - 10 - settingsForm.Height;
settingsForm.Show(); settingsForm.Show();
settingsForm.Activate(); settingsForm.Activate();
settingsForm.Left = Screen.FromControl(settingsForm).WorkingArea.Width - 10 - settingsForm.Width; settingsForm.Left = screen.WorkingArea.Width - 10 - settingsForm.Width;
if (AppConfig.IsAlly()) if (AppConfig.IsAlly())
settingsForm.Top = Math.Max(10, Screen.FromControl(settingsForm).Bounds.Height - 110 - settingsForm.Height); settingsForm.Top = Math.Max(10, screen.Bounds.Height - 110 - settingsForm.Height);
else else
settingsForm.Top = Screen.FromControl(settingsForm).WorkingArea.Height - 10 - settingsForm.Height; settingsForm.Top = screen.WorkingArea.Height - 10 - settingsForm.Height;
settingsForm.VisualiseGPUMode(); settingsForm.VisualiseGPUMode();
} }

View File

@@ -226,7 +226,7 @@
<value>Tout</value> <value>Tout</value>
</data> </data>
<data name="AuraZoneDock" xml:space="preserve"> <data name="AuraZoneDock" xml:space="preserve">
<value>Dock</value> <value>Station d'accueil</value>
</data> </data>
<data name="AuraZoneLogo" xml:space="preserve"> <data name="AuraZoneLogo" xml:space="preserve">
<value>Logo</value> <value>Logo</value>
@@ -495,7 +495,7 @@ Voulez-vous continuer ?</value>
<value>Écran</value> <value>Écran</value>
</data> </data>
<data name="LEDStatusIndicators" xml:space="preserve"> <data name="LEDStatusIndicators" xml:space="preserve">
<value>LED Status Indicators</value> <value>Indicateurs d'état LED</value>
</data> </data>
<data name="Lid" xml:space="preserve"> <data name="Lid" xml:space="preserve">
<value>Capot</value> <value>Capot</value>
@@ -507,7 +507,7 @@ Voulez-vous continuer ?</value>
<value>Éclairage</value> <value>Éclairage</value>
</data> </data>
<data name="LockScreen" xml:space="preserve"> <data name="LockScreen" xml:space="preserve">
<value>Lock Screen</value> <value>Écran de verrouillage</value>
</data> </data>
<data name="Logo" xml:space="preserve"> <data name="Logo" xml:space="preserve">
<value>Logo</value> <value>Logo</value>
@@ -585,10 +585,10 @@ Voulez-vous continuer ?</value>
<value>Synchroniser avec le pointeur</value> <value>Synchroniser avec le pointeur</value>
</data> </data>
<data name="Multizone" xml:space="preserve"> <data name="Multizone" xml:space="preserve">
<value>Multi Zone</value> <value>Multi-zones</value>
</data> </data>
<data name="MultizoneStrong" xml:space="preserve"> <data name="MultizoneStrong" xml:space="preserve">
<value>Multi Zone Strong</value> <value>Forte zone multiple</value>
</data> </data>
<data name="Muted" xml:space="preserve"> <data name="Muted" xml:space="preserve">
<value>Son désactivé</value> <value>Son désactivé</value>
@@ -741,7 +741,7 @@ Voulez-vous continuer ?</value>
<value>Allumer l'écran</value> <value>Allumer l'écran</value>
</data> </data>
<data name="ToggleTouchscreen" xml:space="preserve"> <data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value> <value>Activer/désactiver l'écran tactile</value>
</data> </data>
<data name="Touchscreen" xml:space="preserve"> <data name="Touchscreen" xml:space="preserve">
<value/> <value/>

View File

@@ -124,7 +124,7 @@
<value>Nepavyko prisijungti prie ASUS ACPI. Programėlė be jo negali veikti. Pabandykite įdiegti Asus System Control Interface</value> <value>Nepavyko prisijungti prie ASUS ACPI. Programėlė be jo negali veikti. Pabandykite įdiegti Asus System Control Interface</value>
</data> </data>
<data name="AlertAPUMemoryRestart" xml:space="preserve"> <data name="AlertAPUMemoryRestart" xml:space="preserve">
<value>Restart your device to apply changes</value> <value>Norėdami pritaikyti pakeitimus, paleiskite įrenginį iš naujo</value>
</data> </data>
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve"> <data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
<value>Paleisti iš naujo?</value> <value>Paleisti iš naujo?</value>
@@ -145,7 +145,7 @@
<value>Paleisti iš naujo dabar?</value> <value>Paleisti iš naujo dabar?</value>
</data> </data>
<data name="AllyController" xml:space="preserve"> <data name="AllyController" xml:space="preserve">
<value>Ally Controller</value> <value>Ally“ valdiklis</value>
</data> </data>
<data name="AnimationSpeed" xml:space="preserve"> <data name="AnimationSpeed" xml:space="preserve">
<value>Animacijos greitis</value> <value>Animacijos greitis</value>
@@ -163,7 +163,7 @@
<value>Taikyti</value> <value>Taikyti</value>
</data> </data>
<data name="ApplyFanCurve" xml:space="preserve"> <data name="ApplyFanCurve" xml:space="preserve">
<value>Taikyti tinkintą aušintuvo kreivę</value> <value>Taikyti tinkintą kreivę</value>
</data> </data>
<data name="ApplyPowerLimits" xml:space="preserve"> <data name="ApplyPowerLimits" xml:space="preserve">
<value>Taikyti galios ribas</value> <value>Taikyti galios ribas</value>
@@ -172,7 +172,7 @@
<value>Automatiškai derinti Windows energijos režimus</value> <value>Automatiškai derinti Windows energijos režimus</value>
</data> </data>
<data name="APUMemory" xml:space="preserve"> <data name="APUMemory" xml:space="preserve">
<value>Memory Assigned to GPU</value> <value>Atmintis priskirta vaizdo plokštei</value>
</data> </data>
<data name="AsusServicesRunning" xml:space="preserve"> <data name="AsusServicesRunning" xml:space="preserve">
<value>Veikiančios Asus tarnybos</value> <value>Veikiančios Asus tarnybos</value>
@@ -202,7 +202,7 @@
<value>Apšvietimo režimas</value> <value>Apšvietimo režimas</value>
</data> </data>
<data name="AuraNormal" xml:space="preserve"> <data name="AuraNormal" xml:space="preserve">
<value>Normalus</value> <value>Įprastas</value>
</data> </data>
<data name="AuraRainbow" xml:space="preserve"> <data name="AuraRainbow" xml:space="preserve">
<value>Vaivorykštė</value> <value>Vaivorykštė</value>
@@ -244,7 +244,7 @@
<value>Automatinis</value> <value>Automatinis</value>
</data> </data>
<data name="AutoRefreshTooltip" xml:space="preserve"> <data name="AutoRefreshTooltip" xml:space="preserve">
<value>Nustato 60Hz, kad taupytų energiją, ir atgal, kai įjungtas į lizdą</value> <value>Nustatomas 60Hz dažn. taupymui, ir atgal, kuomet įkraunama</value>
</data> </data>
<data name="Awake" xml:space="preserve"> <data name="Awake" xml:space="preserve">
<value>Pabudęs</value> <value>Pabudęs</value>
@@ -259,7 +259,7 @@
<value>Mid</value> <value>Mid</value>
</data> </data>
<data name="BacklightOff" xml:space="preserve"> <data name="BacklightOff" xml:space="preserve">
<value>Off</value> <value>Išjungta</value>
</data> </data>
<data name="BacklightTimeout" xml:space="preserve"> <data name="BacklightTimeout" xml:space="preserve">
<value>Laiko riba su lizdu / akumuliatoriumi (0 ĮJUNGTA)</value> <value>Laiko riba su lizdu / akumuliatoriumi (0 ĮJUNGTA)</value>
@@ -280,13 +280,13 @@
<value>Įkrovos riba</value> <value>Įkrovos riba</value>
</data> </data>
<data name="BatteryHealth" xml:space="preserve"> <data name="BatteryHealth" xml:space="preserve">
<value>Sveikata</value> <value>Baterijos būklė</value>
</data> </data>
<data name="BatteryLimitFull" xml:space="preserve"> <data name="BatteryLimitFull" xml:space="preserve">
<value>Vienkartinė įkrova iki 100%</value> <value>Vienkartinė įkrova iki 100%</value>
</data> </data>
<data name="Binding" xml:space="preserve"> <data name="Binding" xml:space="preserve">
<value>Binding</value> <value>Saistymas</value>
</data> </data>
<data name="BindingPrimary" xml:space="preserve"> <data name="BindingPrimary" xml:space="preserve">
<value>Pirminis</value> <value>Pirminis</value>
@@ -313,7 +313,7 @@
<value>Ryškumo didinimas</value> <value>Ryškumo didinimas</value>
</data> </data>
<data name="BWTrayIcon" xml:space="preserve"> <data name="BWTrayIcon" xml:space="preserve">
<value>Black and white tray icon</value> <value>Naudoti juodai baltą piktogramą</value>
</data> </data>
<data name="Calibrate" xml:space="preserve"> <data name="Calibrate" xml:space="preserve">
<value>Kalibruoti</value> <value>Kalibruoti</value>
@@ -325,10 +325,10 @@
<value>Spalva</value> <value>Spalva</value>
</data> </data>
<data name="Contrast" xml:space="preserve"> <data name="Contrast" xml:space="preserve">
<value>Contrast</value> <value>Kontrastas</value>
</data> </data>
<data name="Controller" xml:space="preserve"> <data name="Controller" xml:space="preserve">
<value>Controller</value> <value>Valdiklis</value>
</data> </data>
<data name="CPUBoost" xml:space="preserve"> <data name="CPUBoost" xml:space="preserve">
<value>CPU spartinimas</value> <value>CPU spartinimas</value>
@@ -343,10 +343,10 @@
<value>Numatytas</value> <value>Numatytas</value>
</data> </data>
<data name="DisableController" xml:space="preserve"> <data name="DisableController" xml:space="preserve">
<value>Disable Controller</value> <value>Išjungti valdiklį</value>
</data> </data>
<data name="DisableOnLidClose" xml:space="preserve"> <data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value> <value>Išjungti uždarius gaubtą</value>
</data> </data>
<data name="DisableOverdrive" xml:space="preserve"> <data name="DisableOverdrive" xml:space="preserve">
<value>Išjungti ekrano pikselių spartinimą</value> <value>Išjungti ekrano pikselių spartinimą</value>
@@ -355,7 +355,7 @@
<value>Iškrovimas</value> <value>Iškrovimas</value>
</data> </data>
<data name="DownloadColorProfiles" xml:space="preserve"> <data name="DownloadColorProfiles" xml:space="preserve">
<value>Download Color Profiles</value> <value>Atsisiųsti spalvų profilius</value>
</data> </data>
<data name="DownloadUpdate" xml:space="preserve"> <data name="DownloadUpdate" xml:space="preserve">
<value>Atsisiųsti</value> <value>Atsisiųsti</value>
@@ -364,13 +364,13 @@
<value>Tvarkyklės ir programinė įranga</value> <value>Tvarkyklės ir programinė įranga</value>
</data> </data>
<data name="EcoGPUTooltip" xml:space="preserve"> <data name="EcoGPUTooltip" xml:space="preserve">
<value>Išjungia dGPU, kad taupytų energiją</value> <value>Išjungia dGPU akumuliatoriaus taupymui</value>
</data> </data>
<data name="EcoMode" xml:space="preserve"> <data name="EcoMode" xml:space="preserve">
<value>Ekonomiškas</value> <value>Ekonomiškas</value>
</data> </data>
<data name="EnableGPUOnShutdown" xml:space="preserve"> <data name="EnableGPUOnShutdown" xml:space="preserve">
<value>Enable GPU on shutdown (prevents issue with Eco mode)</value> <value>Įgalinti GPU išjungimo metu (apsauga nuo „Eco“ režimo problemos)</value>
</data> </data>
<data name="EnableOptimusText" xml:space="preserve"> <data name="EnableOptimusText" xml:space="preserve">
<value>Jei ekrano režimas NVIDIA valdymo skyde yra nenustatytas į Optimus, kai dGPU yra išjungtas perjungus į ekonominį režimą, gali kilti problemų su ryškumo valdymu iki kito paleidimo iš naujo. <value>Jei ekrano režimas NVIDIA valdymo skyde yra nenustatytas į Optimus, kai dGPU yra išjungtas perjungus į ekonominį režimą, gali kilti problemų su ryškumo valdymu iki kito paleidimo iš naujo.
@@ -384,7 +384,7 @@ Vis tiek norite tęsti?</value>
<value>Energijos nustatymai</value> <value>Energijos nustatymai</value>
</data> </data>
<data name="Export" xml:space="preserve"> <data name="Export" xml:space="preserve">
<value>Export Profile</value> <value>Eksportuoti profilį</value>
</data> </data>
<data name="Extra" xml:space="preserve"> <data name="Extra" xml:space="preserve">
<value>Išplėstiniai</value> <value>Išplėstiniai</value>
@@ -420,16 +420,16 @@ Vis tiek norite tęsti?</value>
<value>Aušintuvai + galia</value> <value>Aušintuvai + galia</value>
</data> </data>
<data name="FlickerFreeDimming" xml:space="preserve"> <data name="FlickerFreeDimming" xml:space="preserve">
<value>Flicker-free Dimming</value> <value>Užtamsinimas be mirgėjimo</value>
</data> </data>
<data name="FnLock" xml:space="preserve"> <data name="FnLock" xml:space="preserve">
<value>Apdoroti Fn+F sparčiuosius klavišus be Fn</value> <value>Apdoroti Fn+F sparčiuosius klavišus be Fn</value>
</data> </data>
<data name="FnLockOff" xml:space="preserve"> <data name="FnLockOff" xml:space="preserve">
<value>FN-Lock Off</value> <value>FN užraktas išjungtas</value>
</data> </data>
<data name="FnLockOn" xml:space="preserve"> <data name="FnLockOn" xml:space="preserve">
<value>FN-Lock On</value> <value>FN užraktas įjungtas</value>
</data> </data>
<data name="GPUBoost" xml:space="preserve"> <data name="GPUBoost" xml:space="preserve">
<value>Dinaminis spartinimas</value> <value>Dinaminis spartinimas</value>
@@ -456,7 +456,7 @@ Vis tiek norite tęsti?</value>
<value>Tik dGPU</value> <value>Tik dGPU</value>
</data> </data>
<data name="GPUPower" xml:space="preserve"> <data name="GPUPower" xml:space="preserve">
<value>GPU Power</value> <value>GPU galia</value>
</data> </data>
<data name="GPUSettings" xml:space="preserve"> <data name="GPUSettings" xml:space="preserve">
<value>GPU nustatymai</value> <value>GPU nustatymai</value>
@@ -465,16 +465,16 @@ Vis tiek norite tęsti?</value>
<value>Temperatūros tikslas</value> <value>Temperatūros tikslas</value>
</data> </data>
<data name="HibernateAfter" xml:space="preserve"> <data name="HibernateAfter" xml:space="preserve">
<value>Minutės iki miego su akumuliatoriumi (0 IŠJUNGTA)</value> <value>Užmigimo laikas akumuliatoriaus režimu (0 IŠJUNGTA)</value>
</data> </data>
<data name="High" xml:space="preserve"> <data name="High" xml:space="preserve">
<value>Aukštas</value> <value>Aukštas</value>
</data> </data>
<data name="ImageRotation" xml:space="preserve"> <data name="ImageRotation" xml:space="preserve">
<value>Image Rotation</value> <value>Atvaizdo pasukimas</value>
</data> </data>
<data name="Import" xml:space="preserve"> <data name="Import" xml:space="preserve">
<value>Import Profile</value> <value>Importuoti profilį</value>
</data> </data>
<data name="KeyBindings" xml:space="preserve"> <data name="KeyBindings" xml:space="preserve">
<value>Klavišų priskyrimas</value> <value>Klavišų priskyrimas</value>
@@ -483,7 +483,7 @@ Vis tiek norite tęsti?</value>
<value>Klaviatūra</value> <value>Klaviatūra</value>
</data> </data>
<data name="KillGpuApps" xml:space="preserve"> <data name="KillGpuApps" xml:space="preserve">
<value>Sustabdyti visas GPU naudojančias programėles, kai perjungiama į ekonomišką režimą</value> <value>Sustabdyti visas GPU naudojančias programėles, kai perjungiama į ekon. režimą</value>
</data> </data>
<data name="LaptopBacklight" xml:space="preserve"> <data name="LaptopBacklight" xml:space="preserve">
<value>Apšvietimas</value> <value>Apšvietimas</value>
@@ -495,7 +495,7 @@ Vis tiek norite tęsti?</value>
<value>Ekranas</value> <value>Ekranas</value>
</data> </data>
<data name="LEDStatusIndicators" xml:space="preserve"> <data name="LEDStatusIndicators" xml:space="preserve">
<value>LED Status Indicators</value> <value>LED būsenos indikatoriai</value>
</data> </data>
<data name="Lid" xml:space="preserve"> <data name="Lid" xml:space="preserve">
<value>Dangtis</value> <value>Dangtis</value>
@@ -507,7 +507,7 @@ Vis tiek norite tęsti?</value>
<value>Apšvietimas</value> <value>Apšvietimas</value>
</data> </data>
<data name="LockScreen" xml:space="preserve"> <data name="LockScreen" xml:space="preserve">
<value>Lock Screen</value> <value>Užrakinimo ekranas</value>
</data> </data>
<data name="Logo" xml:space="preserve"> <data name="Logo" xml:space="preserve">
<value>Logotipas</value> <value>Logotipas</value>
@@ -516,7 +516,7 @@ Vis tiek norite tęsti?</value>
<value>Žemas</value> <value>Žemas</value>
</data> </data>
<data name="LSDeadzones" xml:space="preserve"> <data name="LSDeadzones" xml:space="preserve">
<value>Left Stick Deadzones</value> <value>Kairiojo jungiklio nejautrumo zonos</value>
</data> </data>
<data name="LTDeadzones" xml:space="preserve"> <data name="LTDeadzones" xml:space="preserve">
<value>Left Trigger Deadzones</value> <value>Left Trigger Deadzones</value>
@@ -549,10 +549,10 @@ Vis tiek norite tęsti?</value>
<value>Paveikslėlis</value> <value>Paveikslėlis</value>
</data> </data>
<data name="MaxRefreshTooltip" xml:space="preserve"> <data name="MaxRefreshTooltip" xml:space="preserve">
<value>Maksimalus kadrų dažnis mažesnę delsą</value> <value>Maksimalus kadrų dažnis mažesnei delsai</value>
</data> </data>
<data name="MinRefreshTooltip" xml:space="preserve"> <data name="MinRefreshTooltip" xml:space="preserve">
<value>60Hz kadrų dažnis, kad taupytumėte energiją</value> <value>60Hz kadrų dažnis energijos taupymui</value>
</data> </data>
<data name="Minute" xml:space="preserve"> <data name="Minute" xml:space="preserve">
<value>min.</value> <value>min.</value>
@@ -561,7 +561,7 @@ Vis tiek norite tęsti?</value>
<value>min.</value> <value>min.</value>
</data> </data>
<data name="MouseAngleSnapping" xml:space="preserve"> <data name="MouseAngleSnapping" xml:space="preserve">
<value>Angle Snapping</value> <value>Kampinis fiksavimas</value>
</data> </data>
<data name="MouseAutoPowerOff" xml:space="preserve"> <data name="MouseAutoPowerOff" xml:space="preserve">
<value>Automatiškai išjungti po</value> <value>Automatiškai išjungti po</value>
@@ -570,7 +570,7 @@ Vis tiek norite tęsti?</value>
<value>Klavišo atsakas</value> <value>Klavišo atsakas</value>
</data> </data>
<data name="MouseImportFailed" xml:space="preserve"> <data name="MouseImportFailed" xml:space="preserve">
<value>Import failed. Selected file is not a valid mouse profile or corrutpted.</value> <value>Importuoti nepavyko. Pasirinktas failas nėra galiojantis pelės profilis arba yra sugadintas.</value>
</data> </data>
<data name="MouseLiftOffDistance" xml:space="preserve"> <data name="MouseLiftOffDistance" xml:space="preserve">
<value>Pakilimo atstumas</value> <value>Pakilimo atstumas</value>
@@ -609,10 +609,10 @@ Vis tiek norite tęsti?</value>
<value>Neprijungta</value> <value>Neprijungta</value>
</data> </data>
<data name="Off" xml:space="preserve"> <data name="Off" xml:space="preserve">
<value>Off</value> <value>Išjungta</value>
</data> </data>
<data name="On" xml:space="preserve"> <data name="On" xml:space="preserve">
<value>On</value> <value>Įjungta</value>
</data> </data>
<data name="OneZone" xml:space="preserve"> <data name="OneZone" xml:space="preserve">
<value>One Zone</value> <value>One Zone</value>
@@ -624,10 +624,10 @@ Vis tiek norite tęsti?</value>
<value>Optimizuotas</value> <value>Optimizuotas</value>
</data> </data>
<data name="OptimizedGPUTooltip" xml:space="preserve"> <data name="OptimizedGPUTooltip" xml:space="preserve">
<value>Perjungti į ekonomišką, kai naudojamas akumuliatorius, ir į standartinį, kai įjungtas į lizdą</value> <value>Naudojant akumuliatorių įjungiamas ekon. režimas, įkraunant - stand. režimas</value>
</data> </data>
<data name="OptimizedUSBC" xml:space="preserve"> <data name="OptimizedUSBC" xml:space="preserve">
<value>Neįjungti GPU, kai naudojamas USB-C įkroviklis optimizuotame režime</value> <value>jungti GPU optimizuotame režime, kai naudojamas USB-C įkroviklis</value>
</data> </data>
<data name="Other" xml:space="preserve"> <data name="Other" xml:space="preserve">
<value>Kita</value> <value>Kita</value>
@@ -666,7 +666,7 @@ Vis tiek norite tęsti?</value>
<value>Išeiti</value> <value>Išeiti</value>
</data> </data>
<data name="Reset" xml:space="preserve"> <data name="Reset" xml:space="preserve">
<value>Reset</value> <value>Atstatyti</value>
</data> </data>
<data name="RestartGPU" xml:space="preserve"> <data name="RestartGPU" xml:space="preserve">
<value>Kažkas naudoja dGPU ir neleidžia įjungti ekonomiško režimo. Norite leisti G-Helper bandyti iš naujo paleisti dGPU įrenginių tvarkytuvėje? (Tęskite savo rizika)</value> <value>Kažkas naudoja dGPU ir neleidžia įjungti ekonomiško režimo. Norite leisti G-Helper bandyti iš naujo paleisti dGPU įrenginių tvarkytuvėje? (Tęskite savo rizika)</value>
@@ -756,7 +756,7 @@ Vis tiek norite tęsti?</value>
<value>Išjungti naudojant akumuliatorių</value> <value>Išjungti naudojant akumuliatorių</value>
</data> </data>
<data name="UltimateGPUTooltip" xml:space="preserve"> <data name="UltimateGPUTooltip" xml:space="preserve">
<value>Nukreipia ekraną į dGPU, kad maksimizuotų kadrų dažnį</value> <value>Maksimaliai padidinamas kadrų kiekis, nukreipiant ekraną į dGPU</value>
</data> </data>
<data name="UltimateMode" xml:space="preserve"> <data name="UltimateMode" xml:space="preserve">
<value>Maksimalus</value> <value>Maksimalus</value>
@@ -780,10 +780,10 @@ Vis tiek norite tęsti?</value>
<value>Vizualinis režimas</value> <value>Vizualinis režimas</value>
</data> </data>
<data name="VisualModesHDR" xml:space="preserve"> <data name="VisualModesHDR" xml:space="preserve">
<value>Visual Modes are not available when HDR is active</value> <value>Vizualiniai režimai nepasiekiami, kuomet įjungtas HDR</value>
</data> </data>
<data name="VisualModesScreen" xml:space="preserve"> <data name="VisualModesScreen" xml:space="preserve">
<value>Visual Modes are not available when laptop screen is off</value> <value>Vizualiniai režimai nepasiekiami, kuomet kompiuterio ekranas išjungtas</value>
</data> </data>
<data name="VolumeDown" xml:space="preserve"> <data name="VolumeDown" xml:space="preserve">
<value>Garsumo mažinimas</value> <value>Garsumo mažinimas</value>

View File

@@ -10,7 +10,7 @@ public static class AsusHid
public const byte INPUT_ID = 0x5a; public const byte INPUT_ID = 0x5a;
public const byte AURA_ID = 0x5d; public const byte AURA_ID = 0x5d;
static int[] deviceIds = { 0x1a30, 0x1854, 0x1869, 0x1866, 0x19b6, 0x1822, 0x1837, 0x1854, 0x184a, 0x183d, 0x8502, 0x1807, 0x17e0, 0x18c6, 0x1abe }; static int[] deviceIds = { 0x1a30, 0x1854, 0x1869, 0x1866, 0x19b6, 0x1822, 0x1837, 0x1854, 0x184a, 0x183d, 0x8502, 0x1807, 0x17e0, 0x18c6, 0x1abe, 0x1b4c };
static HidStream? auraStream; static HidStream? auraStream;

View File

@@ -79,7 +79,7 @@ namespace GHelper.USB
public static Color Color1 = Color.White; public static Color Color1 = Color.White;
public static Color Color2 = Color.Black; public static Color Color2 = Color.Black;
static bool isACPI = AppConfig.IsTUF() || AppConfig.IsVivoZenbook() || AppConfig.IsProArt(); static bool isACPI = AppConfig.IsTUF() || AppConfig.IsVivoZenPro();
static bool isStrix = AppConfig.IsAdvancedRGB() && !AppConfig.IsNoDirectRGB(); static bool isStrix = AppConfig.IsAdvancedRGB() && !AppConfig.IsNoDirectRGB();
static bool isStrix4Zone = AppConfig.Is4ZoneRGB(); static bool isStrix4Zone = AppConfig.Is4ZoneRGB();
@@ -254,7 +254,7 @@ namespace GHelper.USB
msg[6] = mono ? (byte)0 : color.B; // B msg[6] = mono ? (byte)0 : color.B; // B
msg[7] = (byte)speed; // aura.speed as u8; msg[7] = (byte)speed; // aura.speed as u8;
msg[8] = 0x00; // aura.direction as u8; msg[8] = 0x00; // aura.direction as u8;
msg[9] = (color.R == 0 && color.G == 0 && color.B == 0) ? (byte)0xFF : (byte)0x00; // random color flag msg[9] = (color.R == 0 && color.G == 0 && color.B == 0) ? (byte)0xFF : (mode == AuraMode.AuraBreathe ? (byte)0x01 : (byte)0x00); // random color flag
msg[10] = color2.R; // R msg[10] = color2.R; // R
msg[11] = mono ? (byte)0 : color2.G; // G msg[11] = mono ? (byte)0 : color2.G; // G
msg[12] = mono ? (byte)0 : color2.B; // B msg[12] = mono ? (byte)0 : color2.B; // B

View File

@@ -5,7 +5,7 @@
Small and lightweight Armoury Crate alternative for Asus laptops offering almost same functionality without extra load and unnecessary services. Small and lightweight Armoury Crate alternative for Asus laptops offering almost same functionality without extra load and unnecessary services.
Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, Flow Z13, TUF Series, Strix / Scar Series, ProArt, Vivobook, Zenbook, ROG Ally and many more! Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, Flow Z13, TUF Series, Strix or Scar Series, ProArt, Vivobook, Zenbook, ROG Ally / Ally X and many more!
# [:floppy_disk:Download](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip) # [:floppy_disk:Download](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
**⭐ If you like the app - please spread the word about it online** **⭐ If you like the app - please spread the word about it online**
@@ -16,8 +16,8 @@ Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13
<td > <td >
<a href="https://bit.ly/4c0ZWs9"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/paypal-eur.png" height="36" alt="PayPal EUR"></a>&nbsp; <a href="https://bit.ly/4c0ZWs9"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/paypal-eur.png" height="36" alt="PayPal EUR"></a>&nbsp;
<a href="https://bit.ly/4aGTyW8"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/paypal-usd.png" height="36" alt="PayPal USD"></a>&nbsp; <a href="https://bit.ly/4aGTyW8"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/paypal-usd.png" height="36" alt="PayPal USD"></a>&nbsp;
<a href="https://buy.stripe.com/bIY4hl8HbalH3G8bIJ"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/stripe.png" height="36" alt="Stripe"></a>&nbsp; <a href="https://buy.stripe.com/8wM6pt8HbgK50tWbIK"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/stripe.png" height="36" alt="Stripe"></a>&nbsp;
<a href="https://buy.stripe.com/bIY4hl8HbalH3G8bIJ"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/alipay.png" height="36" alt="Alipay"></a> <a href="https://buy.stripe.com/6oE29dg9D3Xj7Wo28b"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/alipay.png" height="36" alt="Alipay"></a>
</td> </td>
</tr> </tr>
</table> </table>