Compare commits

...

40 Commits

Author SHA1 Message Date
Serge
58b5221b3c Version bump 2024-08-31 11:56:57 +02:00
Serge
0192d59524 UI Tweaks 2024-08-31 11:06:42 +02:00
Serge
01cede58b5 UI Tweaks 2024-08-31 10:42:43 +02:00
Serge
3dbbddfa58 Startup counter 2024-08-31 10:03:16 +02:00
Serge
1b898b44d2 Cleanup 2024-08-31 09:52:48 +02:00
Serge
dc7362dab1 Added AsusPTPService to the stop/start list https://github.com/seerge/g-helper/issues/3031 2024-08-30 19:45:47 +02:00
Serge
cbd4a5e27c Exception handling https://github.com/seerge/g-helper/issues/3029 2024-08-29 23:12:34 +02:00
Serge
5e9b002013 Version bump 2024-08-26 10:03:42 +02:00
Serge
5077c30704 Power limits tweak for GA605 https://github.com/seerge/g-helper/issues/3017 2024-08-26 09:51:04 +02:00
Serge
d6363dee85 Shasl Battery timer refresh interval 2024-08-26 09:48:41 +02:00
Serge
359575d00d Log cleanup 2024-08-26 09:44:41 +02:00
Serge
9dc444fd33 Added ProArt P16 and X13 to OLED List 2024-08-24 20:09:28 +02:00
Serge
a5b8885ff6 Removed unsuppored backlight modes for ProArt X13 https://github.com/seerge/g-helper/issues/2912 2024-08-24 20:07:44 +02:00
Serge
56676005a5 Added Vivobook M550 to OLED list https://github.com/seerge/g-helper/issues/3015 2024-08-24 15:53:18 +02:00
Serge
0e59f9318e Invert FN-Lock for ProArt https://github.com/seerge/g-helper/issues/3012 2024-08-23 22:26:37 +02:00
Serge
21a2dca271 Hardware FN-Lock for ProArt https://github.com/seerge/g-helper/issues/2973 https://github.com/seerge/g-helper/issues/3012 2024-08-23 13:20:58 +02:00
Serge
e265a78b4f ProArt backlight init #2973 2024-08-22 23:31:22 +02:00
Serge
18b6dd794f Merge branch 'main' of https://github.com/seerge/g-helper 2024-08-22 14:18:05 +02:00
Serge
9fd9506177 Ryzen AI 9 undervolting https://github.com/seerge/g-helper/issues/3005 2024-08-22 14:18:02 +02:00
Serge
a30b202022 ProArt backlight init https://github.com/seerge/g-helper/issues/2973 2024-08-22 12:20:32 +02:00
Serge
b9534fdfe5 New translations strings.resx (Chinese Simplified) (#2998) 2024-08-22 12:20:11 +02:00
Serge
cb3bf3ea90 Swap brightness hotkeys for FA706IH https://github.com/seerge/g-helper/issues/3009 2024-08-22 11:30:38 +02:00
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
22 changed files with 170 additions and 73 deletions

View File

@@ -114,6 +114,7 @@ namespace GHelper.AnimeMatrix
switch ((SlashMode)running)
{
case SlashMode.Static:
Logger.WriteLine("Slash: Static");
var custom = AppConfig.GetString("slash_custom");
if (custom is not null && custom.Length > 0)
{
@@ -126,6 +127,7 @@ namespace GHelper.AnimeMatrix
break;
case SlashMode.BatteryLevel:
// call tick to immediately update the pattern
Logger.WriteLine("Slash: Battery Level");
SlashTimer_start();
SlashTimer_tick();
break;
@@ -278,7 +280,7 @@ namespace GHelper.AnimeMatrix
}
private void SlashTimer_start(int interval = 60000)
private void SlashTimer_start(int interval = 180000)
{
// 100% to 0% in 1hr = 1% every 36 seconds
// 1 bracket every 14.2857 * 36s = 514s ~ 8m 30s

View File

@@ -182,17 +182,17 @@ namespace GHelper.AnimeMatrix
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))), null);
}
public void SetCustom(byte[] data)
public void SetCustom(byte[] data, string? log = "Static Data")
{
Set(CreatePacket([0xD2, 0x02, 0x01, 0x08, 0xAC]), "Static");
Set(CreatePacket([0xD3, 0x03, 0x01, 0x08, 0xAC, 0xFF, 0xFF, 0x01, 0x05, 0xFF, 0xFF]), "StaticSettings");
Set(CreatePacket([0xD4, 0x00, 0x00, 0x01, 0xAC]), "StaticSave");
Set(CreatePacket([0xD2, 0x02, 0x01, 0x08, 0xAC]), null);
Set(CreatePacket([0xD3, 0x03, 0x01, 0x08, 0xAC, 0xFF, 0xFF, 0x01, 0x05, 0xFF, 0xFF]), null);
Set(CreatePacket([0xD4, 0x00, 0x00, 0x01, 0xAC]), null);
byte[] payload = new byte[] { 0xD3, 0x00, 0x00, 0x07 };
Set(CreatePacket(payload.Concat(data.Take(7)).ToArray()), "Static Data");
Set(CreatePacket(payload.Concat(data.Take(7)).ToArray()), log);
}
public void SetOptions(bool status, int brightness = 0, int interval = 0)

View File

@@ -41,10 +41,19 @@ public static class AppConfig
{
config = JsonSerializer.Deserialize<Dictionary<string, object>>(text);
}
catch
catch (Exception ex)
{
Logger.WriteLine("Broken config: " + text);
Init();
Logger.WriteLine($"Broken config: {ex.Message} {text}");
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
@@ -382,10 +391,15 @@ public static class AppConfig
return ContainsModel("Vivobook") || ContainsModel("Zenbook") || ContainsModel("ProArt");
}
public static bool IsHardwareFnLock()
{
return IsVivoZenPro();
}
// Devices with bugged bios command to change brightness
public static bool SwappedBrightness()
{
return ContainsModel("FA506IH") || ContainsModel("FA506IC") || ContainsModel("FX506LU") || ContainsModel("FX506IC") || ContainsModel("FX506LH") || ContainsModel("FA506IV") || ContainsModel("FA706IC");
return ContainsModel("FA506IH") || ContainsModel("FA506IC") || ContainsModel("FX506LU") || ContainsModel("FX506IC") || ContainsModel("FX506LH") || ContainsModel("FA506IV") || ContainsModel("FA706IC") || ContainsModel("FA706IH");
}
@@ -397,17 +411,17 @@ public static class AppConfig
// G14 2020 has no aura, but media keys instead
public static bool NoAura()
{
return ContainsModel("GA401I") && !ContainsModel("GA401IHR");
return (ContainsModel("GA401I") && !ContainsModel("GA401IHR")) || ContainsModel("HN7306");
}
public static bool MediaKeys()
{
return NoAura() || ContainsModel("G712L");
return (ContainsModel("GA401I") && !ContainsModel("GA401IHR")) || ContainsModel("G712L");
}
public static bool IsSingleColor()
{
return ContainsModel("GA401") || ContainsModel("FX517Z") || ContainsModel("FX516P") || ContainsModel("X13") || IsARCNM() || ContainsModel("GA502IU") || ContainsModel("FA617N") || ContainsModel("FA617X");
return ContainsModel("GA401") || ContainsModel("FX517Z") || ContainsModel("FX516P") || ContainsModel("X13") || IsARCNM() || ContainsModel("GA502IU") || ContainsModel("FA617N") || ContainsModel("FA617X") || NoAura();
}
public static bool IsSlash()
@@ -422,7 +436,7 @@ public static class AppConfig
public static bool IsInputBacklight()
{
return ContainsModel("GA503") || IsSlash();
return ContainsModel("GA503") || IsSlash() || IsVivoZenPro();
}
public static bool IsInvertedFNLock()
@@ -432,7 +446,7 @@ 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") || ContainsModel("S540") || ContainsModel("M7400") || ContainsModel("N650");
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("M550") || ContainsModel("K340") || ContainsModel("K350") || ContainsModel("M140") || ContainsModel("UM340") || ContainsModel("S540") || ContainsModel("M7400") || ContainsModel("N650") || ContainsModel("HN7306") || ContainsModel("H7606");
}
public static bool IsNoOverdrive()
@@ -598,12 +612,12 @@ public static class AppConfig
public static bool IsFanRequired()
{
return ContainsModel("GA402X") || ContainsModel("G513") || ContainsModel("G713R") || ContainsModel("G713P") || ContainsModel("GU605") || ContainsModel("GA403") || ContainsModel("G634J") || ContainsModel("G834J") || ContainsModel("G614J") || ContainsModel("G814J") || ContainsModel("FX507V");
return ContainsModel("GA402X") || ContainsModel("G513") || ContainsModel("G713R") || ContainsModel("G713P") || ContainsModel("GU605") || ContainsModel("GA605") || ContainsModel("GA403") || ContainsModel("G634J") || ContainsModel("G834J") || ContainsModel("G614J") || ContainsModel("G814J") || ContainsModel("FX507V");
}
public static bool IsAMDLight()
{
return ContainsModel("GA402X") || ContainsModel("GA403") || ContainsModel("FA507N") || ContainsModel("FA507X") || ContainsModel("FA707N") || ContainsModel("FA707X");
return ContainsModel("GA402X") || ContainsModel("GA605") || ContainsModel("GA403") || ContainsModel("FA507N") || ContainsModel("FA507X") || ContainsModel("FA707N") || ContainsModel("FA707X");
}
public static bool IsPowerRequired()

View File

@@ -114,8 +114,11 @@ public class AsusACPI
public const int APU_MEM = 0x000600C1;
public const int TUF_KB_BRIGHTNESS = 0x00050021;
public const int VIVO_KB_BRIGHTNESS = 0x0005002F;
public const int TUF_KB = 0x00100056;
public const int TUF_KB2 = 0x0010005a;
public const int TUF_KB_STATE = 0x00100057;
public const int MicMuteLed = 0x00040017;
@@ -785,6 +788,8 @@ public class AsusACPI
{
int param = 0x80 | (brightness & 0x7F);
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")
@@ -800,7 +805,13 @@ public class AsusACPI
setting[5] = (byte)speed;
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

@@ -16,7 +16,10 @@ namespace GHelper.Display
var modes = new DISPLAYCONFIG_MODE_INFO[modeCount];
err = QueryDisplayConfig(QDC.QDC_ONLY_ACTIVE_PATHS, ref pathCount, paths, ref modeCount, modes, IntPtr.Zero);
if (err != 0)
throw new Win32Exception(err);
{
Logger.WriteLine("HDR Detection Error: " + new Win32Exception(err).Message);
return false;
}
string internalName = AppConfig.GetString("internal_display");

View File

@@ -709,7 +709,10 @@ namespace GHelper
{
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");
}
}

View File

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

View File

@@ -92,7 +92,12 @@ namespace GHelper.Gpu
{
if (AppConfig.NoAutoUltimate())
{
Program.acpi.SetGPUEco(0);
int standardStatus = Program.acpi.SetGPUEco(0);
if (standardStatus == 0)
{
settings.VisualiseGPUMode();
return;
}
Thread.Sleep(100);
}
status = Program.acpi.DeviceSet(AsusACPI.GPUMux, 0, "GPUMux");
@@ -222,6 +227,7 @@ namespace GHelper.Gpu
if ((GpuAuto && !IsPlugged()) || (ForceGPU && GpuMode == AsusACPI.GPUModeEco))
{
if (Program.acpi.IsXGConnected()) return false;
if (HardwareControl.IsUsedGPU())
{
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()
{
if (AppConfig.ContainsModel("GU605")) return 125;
if (AppConfig.ContainsModel("GU605") || AppConfig.ContainsModel("GA605")) return 125;
if (AppConfig.ContainsModel("GA403")) return 90;
if (AppConfig.ContainsModel("FA607")) return 140;
else return 175;

View File

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

View File

@@ -20,6 +20,8 @@ namespace GHelper.Helpers
"AsusCertService"
};
//"AsusPTPService",
static List<string> processesAC = new() {
"ArmouryCrateSE.Service",
"ArmouryCrate.Service",

View File

@@ -85,8 +85,7 @@ namespace GHelper.Input
InitBacklightTimer();
if (AppConfig.IsVivoZenbook())
Program.acpi.DeviceSet(AsusACPI.FnLock, AppConfig.Is("fn_lock") ^ AppConfig.IsInvertedFNLock() ? 1 : 0, "FnLock");
if (AppConfig.IsHardwareFnLock()) HardwareFnLock(AppConfig.Is("fn_lock"));
}
@@ -155,7 +154,7 @@ namespace GHelper.Input
// FN-Lock group
if (AppConfig.Is("fn_lock") && !AppConfig.IsVivoZenbook())
if (AppConfig.Is("fn_lock") && !AppConfig.IsHardwareFnLock())
for (Keys i = Keys.F1; i <= Keys.F11; i++) hook.RegisterHotKey(ModifierKeys.None, i);
// Arrow-lock group
@@ -629,13 +628,19 @@ namespace GHelper.Input
Program.toast.RunToast("Arrow-Lock " + (arLock == 1 ? Properties.Strings.On : Properties.Strings.Off), ToastIcon.FnLock);
}
public static void HardwareFnLock(bool fnLock)
{
Program.acpi.DeviceSet(AsusACPI.FnLock, fnLock ^ AppConfig.IsInvertedFNLock() ? 1 : 0, "FnLock");
AsusHid.WriteInput([AsusHid.INPUT_ID, 0xD0, 0x4E, fnLock ? (byte)0x00 : (byte)0x01], "USB FnLock");
}
public static void ToggleFnLock()
{
bool fnLock = !AppConfig.Is("fn_lock");
AppConfig.Set("fn_lock", fnLock ? 1 : 0);
if (AppConfig.IsVivoZenbook())
Program.acpi.DeviceSet(AsusACPI.FnLock, fnLock ^ AppConfig.IsInvertedFNLock() ? 1 : 0, "FnLock");
if (AppConfig.IsHardwareFnLock())
HardwareFnLock(fnLock);
else
Program.settingsForm.BeginInvoke(Program.inputDispatcher.RegisterKeys);
@@ -707,9 +712,6 @@ namespace GHelper.Input
case 55: // Arconym
KeyProcess("m6");
return;
case 136: // FN + F12
if (!AppConfig.IsNoAirplaneMode()) Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Airplane, "Airplane");
return;
case 181: // FN + Numpad Enter
KeyProcess("fne");
return;
@@ -726,12 +728,6 @@ namespace GHelper.Input
case 158: // Fn + C
KeyProcess("fnc");
return;
case 78: // Fn + ESC
ToggleFnLock();
return;
case 75: // Fn + Arrow Lock
ToggleArrowLock();
return;
case 189: // Tablet mode
TabletMode();
return;
@@ -821,6 +817,15 @@ namespace GHelper.Input
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

@@ -69,6 +69,10 @@ namespace GHelper
Logger.WriteLine("------------");
Logger.WriteLine("App launched: " + AppConfig.GetModel() + " :" + Assembly.GetExecutingAssembly().GetName().Version.ToString() + CultureInfo.CurrentUICulture + (ProcessHelper.IsUserAdministrator() ? "." : ""));
var startCount = AppConfig.Get("start_count") + 1;
AppConfig.Set("start_count", startCount);
Logger.WriteLine("Start Count: " + startCount);
acpi = new AsusACPI();
if (!acpi.IsConnected() && AppConfig.IsASUS())
@@ -282,19 +286,22 @@ namespace GHelper
}
else
{
var screen = Screen.PrimaryScreen;
if (screen is null) screen = Screen.FromControl(settingsForm);
settingsForm.Left = Screen.FromControl(settingsForm).WorkingArea.Width - 10 - settingsForm.Width;
settingsForm.Top = Screen.FromControl(settingsForm).WorkingArea.Height - 10 - settingsForm.Height;
settingsForm.Location = screen.WorkingArea.Location;
settingsForm.Left = screen.WorkingArea.Width - 10 - settingsForm.Width;
settingsForm.Top = screen.WorkingArea.Height - 10 - settingsForm.Height;
settingsForm.Show();
settingsForm.Activate();
settingsForm.Left = Screen.FromControl(settingsForm).WorkingArea.Width - 10 - settingsForm.Width;
settingsForm.Left = screen.WorkingArea.Width - 10 - settingsForm.Width;
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
settingsForm.Top = Screen.FromControl(settingsForm).WorkingArea.Height - 10 - settingsForm.Height;
settingsForm.Top = screen.WorkingArea.Height - 10 - settingsForm.Height;
settingsForm.VisualiseGPUMode();
}

View File

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

View File

@@ -163,7 +163,7 @@
<value>Taikyti</value>
</data>
<data name="ApplyFanCurve" xml:space="preserve">
<value>Taikyti tinkintą aušintuvo kreivę</value>
<value>Taikyti tinkintą kreivę</value>
</data>
<data name="ApplyPowerLimits" xml:space="preserve">
<value>Taikyti galios ribas</value>
@@ -244,7 +244,7 @@
<value>Automatinis</value>
</data>
<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 name="Awake" xml:space="preserve">
<value>Pabudęs</value>
@@ -280,7 +280,7 @@
<value>Įkrovos riba</value>
</data>
<data name="BatteryHealth" xml:space="preserve">
<value>Sveikata</value>
<value>Baterijos būklė</value>
</data>
<data name="BatteryLimitFull" xml:space="preserve">
<value>Vienkartinė įkrova iki 100%</value>
@@ -313,7 +313,7 @@
<value>Ryškumo didinimas</value>
</data>
<data name="BWTrayIcon" xml:space="preserve">
<value>Black and white tray icon</value>
<value>Naudoti juodai baltą piktogramą</value>
</data>
<data name="Calibrate" xml:space="preserve">
<value>Kalibruoti</value>
@@ -346,7 +346,7 @@
<value>Išjungti valdiklį</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value>
<value>Išjungti uždarius gaubtą</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Išjungti ekrano pikselių spartinimą</value>
@@ -364,7 +364,7 @@
<value>Tvarkyklės ir programinė įranga</value>
</data>
<data name="EcoGPUTooltip" xml:space="preserve">
<value>Išjungia dGPU, kad taupytų energiją</value>
<value>Išjungia dGPU akumuliatoriaus taupymui</value>
</data>
<data name="EcoMode" xml:space="preserve">
<value>Ekonomiškas</value>
@@ -465,7 +465,7 @@ Vis tiek norite tęsti?</value>
<value>Temperatūros tikslas</value>
</data>
<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 name="High" xml:space="preserve">
<value>Aukštas</value>
@@ -483,7 +483,7 @@ Vis tiek norite tęsti?</value>
<value>Klaviatūra</value>
</data>
<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 name="LaptopBacklight" xml:space="preserve">
<value>Apšvietimas</value>
@@ -549,10 +549,10 @@ Vis tiek norite tęsti?</value>
<value>Paveikslėlis</value>
</data>
<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 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 name="Minute" xml:space="preserve">
<value>min.</value>
@@ -561,7 +561,7 @@ Vis tiek norite tęsti?</value>
<value>min.</value>
</data>
<data name="MouseAngleSnapping" xml:space="preserve">
<value>Angle Snapping</value>
<value>Kampinis fiksavimas</value>
</data>
<data name="MouseAutoPowerOff" xml:space="preserve">
<value>Automatiškai išjungti po</value>
@@ -570,7 +570,7 @@ Vis tiek norite tęsti?</value>
<value>Klavišo atsakas</value>
</data>
<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 name="MouseLiftOffDistance" xml:space="preserve">
<value>Pakilimo atstumas</value>
@@ -609,10 +609,10 @@ Vis tiek norite tęsti?</value>
<value>Neprijungta</value>
</data>
<data name="Off" xml:space="preserve">
<value>Off</value>
<value>Išjungta</value>
</data>
<data name="On" xml:space="preserve">
<value>On</value>
<value>Įjungta</value>
</data>
<data name="OneZone" xml:space="preserve">
<value>One Zone</value>
@@ -624,10 +624,10 @@ Vis tiek norite tęsti?</value>
<value>Optimizuotas</value>
</data>
<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 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 name="Other" xml:space="preserve">
<value>Kita</value>
@@ -756,7 +756,7 @@ Vis tiek norite tęsti?</value>
<value>Išjungti naudojant akumuliatorių</value>
</data>
<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 name="UltimateMode" xml:space="preserve">
<value>Maksimalus</value>

View File

@@ -741,7 +741,7 @@
<value>关闭屏幕</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
<value>切换触摸屏</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>

View File

@@ -40,7 +40,7 @@ namespace Ryzen
//PHEONIX - 9
//RAPHAEL/DRAGON RANGE - 10
//MENDOCINO - 11
//HAWKPOINT - 12
//HAWKPOINT/STRIXPOINT - 12
public static void Init()
{
@@ -77,7 +77,7 @@ namespace Ryzen
FAMID = 1; //PICASSO
}
if (CPUModel.Contains("Model " + Convert.ToString(32)))
if (CPUModel.Contains("Family " + Convert.ToString(23)) && CPUModel.Contains("Model " + Convert.ToString(32)))
{
FAMID = 2; //DALI
}
@@ -127,6 +127,11 @@ namespace Ryzen
FAMID = 12; //HAWKPOINT
}
if (CPUModel.Contains("Family " + Convert.ToString(26)) && CPUModel.Contains("Model " + Convert.ToString(36)))
{
FAMID = 12; //STRIXPOINT
}
Logger.WriteLine($"CPU: {FAMID} - {CPUName} - {CPUModel}");
SetAddresses();
@@ -141,7 +146,7 @@ namespace Ryzen
public static bool IsSupportedUV()
{
if (CPUName.Length == 0) Init();
return CPUName.Contains("Ryzen 9") || CPUName.Contains("4900H") || CPUName.Contains("4800H") || CPUName.Contains("4600H");
return CPUName.Contains("Ryzen AI 9") || CPUName.Contains("Ryzen 9") || CPUName.Contains("4900H") || CPUName.Contains("4800H") || CPUName.Contains("4600H");
}
public static bool IsSupportedUViGPU()

View File

@@ -21,7 +21,7 @@ namespace Ryzen
//PHEONIX - 9
//RAPHAEL/DRAGON RANGE - 10
//MENDOCINO - 11
//HAWKPOINT - 12
//HAWKPOINT/STRIXPOINT - 12
public static Smu RyzenAccess = new Smu(false);
public static int FAMID = RyzenControl.FAMID;

View File

@@ -270,6 +270,12 @@ namespace GHelper
labelCharge.Click += LabelCharge_Click;
buttonDonate.Click += ButtonDonate_Click;
if (AppConfig.Get("start_count") > 10 && !AppConfig.Is("donate_click"))
{
buttonDonate.BorderColor = colorTurbo;
buttonDonate.Badge = true;
}
labelDynamicLighting.Click += LabelDynamicLighting_Click;
@@ -279,6 +285,8 @@ namespace GHelper
private void ButtonDonate_Click(object? sender, EventArgs e)
{
AppConfig.Set("donate_click", 1);
buttonDonate.Badge = false;
Process.Start(new ProcessStartInfo("https://github.com/seerge/g-helper/wiki/Support-Project") { UseShellExecute = true });
}

View File

@@ -52,6 +52,16 @@ namespace GHelper.UI
}
}
private bool badge = false;
public bool Badge
{
get { return badge; }
set
{
badge = value;
}
}
public RButton()
{
DoubleBuffered = true;
@@ -99,6 +109,15 @@ namespace GHelper.UI
pevent.Graphics.DrawPath(penBorder, pathBorder);
}
if (badge)
{
using (Brush brush = new SolidBrush(borderColor))
{
var radius = ratio * 10;
pevent.Graphics.FillEllipse(brush, rectSurface.Width - rectSurface.Height / 2 - radius, rectSurface.Height / 2 - radius, radius + radius, radius + radius);
}
}
if (!Enabled && ForeColor != SystemColors.ControlText)
{
var rect = pevent.ClipRectangle;

View File

@@ -268,6 +268,16 @@ namespace GHelper.USB
Encoding.ASCII.GetBytes("]ASUS Tech.Inc."),
new byte[] { AsusHid.AURA_ID, 0x05, 0x20, 0x31, 0, 0x1A },
}, "Init");
if (AppConfig.IsProArt())
{
AsusHid.WriteInput([AsusHid.INPUT_ID, 0x05, 0x20, 0x31, 0x00, 0x08], "ProArt Init");
//AsusHid.WriteInput([AsusHid.INPUT_ID, 0xD0, 0x4E], "ProArt Init");
AsusHid.WriteInput([AsusHid.INPUT_ID, 0xBA, 0xC5, 0xC4], "ProArt Init");
AsusHid.WriteInput([AsusHid.INPUT_ID, 0xD0, 0x8F, 0x01], "ProArt Init");
AsusHid.WriteInput([AsusHid.INPUT_ID, 0xD0, 0x85, 0xFF], "ProArt Init");
//AsusHid.WriteInput([AsusHid.INPUT_ID, 0xD0, 0x4E], "ProArt Init");
}
}

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.
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 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)
**⭐ If you like the app - please spread the word about it online**
@@ -17,7 +17,7 @@ Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13
<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://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/8wM6pt8HbgK50tWbIK"><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>
</tr>
</table>