Compare commits

...

35 Commits

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

* implemented battery charge pattern

* changed defaults

* immediately refresh pattern

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

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

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

* Adds support for ROG Strix Impact III (P518)

* Import/Export feature for mice.

* Suppor for Strix Impact (P303)

* Support for Strix Impact II Electro Punk

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

* Respect top-most setting of GHelper

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

* Basic support for the Galdius III EVA02

* Gladius wireless and wired PIDs were switched

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

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

* Adds Support for Galdius III (wired) P514

* Support for P504 Glaidus II PKN

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

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

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

* Adds support for ROG Strix Impact III (P518)

* Import/Export feature for mice.

* Suppor for Strix Impact (P303)

* Support for Strix Impact II Electro Punk

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

* Respect top-most setting of GHelper

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

* Basic support for the Galdius III EVA02

* Gladius wireless and wired PIDs were switched

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

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

* Adds Support for Galdius III (wired) P514

* Support for P504 Glaidus II PKN
2024-05-29 11:19:47 +02:00
Serge
ced4eac341 Gladius II Origin PNK 2024-05-29 00:46:28 +02:00
Serge
51c7738f15 Factory Defaults tweak 2024-05-28 19:36:11 +02:00
Hoang Pham Anh Duy
b62fe46759 Polling rate fix for Keris Wireless Aimpoint (#2644)
On newest firmware (April 2024), on packet 13, instead start from 0 for polling rate values, they bump it to 96.
2024-05-28 19:34:38 +02:00
Serge
51c099163e Toast corner aliasing https://github.com/seerge/g-helper/issues/2642 2024-05-28 10:25:36 +02:00
21 changed files with 628 additions and 172 deletions

13
.github/FUNDING.yml vendored
View File

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

View File

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

View File

@@ -1,5 +1,7 @@
using GHelper.AnimeMatrix.Communication;
using System.Management;
using System.Text;
using System.Timers;
namespace GHelper.AnimeMatrix
{
@@ -20,7 +22,8 @@ namespace GHelper.AnimeMatrix
GameOver,
Start,
Buzzer,
Static
Static,
BatteryLevel,
}
internal class SlashPacket : Packet
@@ -54,7 +57,9 @@ namespace GHelper.AnimeMatrix
{ SlashMode.GameOver, "Game Over"},
{ SlashMode.Start, "Start"},
{ SlashMode.Buzzer, "Buzzer"},
{ SlashMode.Static, "Static"},
{ SlashMode.BatteryLevel, "Battery Level"}
};
private static Dictionary<SlashMode, byte> modeCodes = new Dictionary<SlashMode, byte>
@@ -127,7 +132,50 @@ namespace GHelper.AnimeMatrix
public void SetStatic(int brightness = 0)
{
SetCustom(Enumerable.Repeat((byte)(brightness * 85.333), 7).ToArray());
}
public static double GetBatteryChargePercentage()
{
double batteryCharge = 0;
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Battery");
foreach (ManagementObject battery in searcher.Get())
{
batteryCharge = Convert.ToDouble(battery["EstimatedChargeRemaining"]);
break; // Assuming only one battery
}
}
catch (ManagementException e)
{
Console.WriteLine("An error occurred while querying for WMI data: " + e.Message);
}
return batteryCharge;
}
private byte[] GetBatteryPattern(int brightness, double percentage)
{
// because 7 segments, within each led segment represents a percentage bracket of (100/7 = 14.2857%)
// set brightness to reflect battery's percentage within that range
int bracket = (int)Math.Floor(percentage / 14.2857);
if(bracket >= 7) return Enumerable.Repeat((byte)(brightness * 85.333), 7).ToArray();
byte[] batteryPattern = Enumerable.Repeat((byte)(0x00), 7).ToArray();
for (int i = 6; i > 6-bracket; i--)
{
batteryPattern[i] = (byte)(brightness * 85.333);
}
//set the "selected" bracket to the percentage of that bracket filled from 0 to 255 as a hex
batteryPattern[6-bracket] = (byte)(((percentage % 14.2857) * brightness * 85.333) / 14.2857);
return batteryPattern;
}
public void SetBatteryPattern(int brightness)
{
SetCustom(GetBatteryPattern(brightness, 100*(GetBatteryChargePercentage()/AppConfig.Get("charge_limit",100))));
}
public void SetCustom(byte[] data)

View File

@@ -109,7 +109,8 @@ public static class AppConfig
break;
}
}
} catch (Exception ex)
}
catch (Exception ex)
{
Logger.WriteLine(ex.Message);
}
@@ -337,7 +338,7 @@ public static class AppConfig
public static bool IsAlly()
{
return ContainsModel("RC71");
return ContainsModel("RC71") || ContainsModel("RC72");
}
public static bool NoMKeys()
@@ -625,6 +626,21 @@ public static class AppConfig
return IsAlly() || Is("stop_ac");
}
public static bool IsChargeLimit80()
{
return ContainsModel("GA403UI");
}
public static bool IsChargeLimit6080()
{
return ContainsModel("GA403UU") || ContainsModel("GA403UV") || ContainsModel("GU605") || ContainsModel("GA503R") || (IsTUF() && !(ContainsModel("FX507Z") || ContainsModel("FA617")));
}
// 2024 Models support Dynamic Lighting
public static bool IsDynamicLighting()
{
return IsSlash() || ContainsModel("JIR") || ContainsModel("JZR") || ContainsModel("JVR") || ContainsModel("JYR") || ContainsModel("FA607P") || ContainsModel("FX607J") || ContainsModel("FA507U");
}
}

View File

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

220
app/Fans.Designer.cs generated
View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -188,10 +188,11 @@ namespace GHelper.Peripherals
DetectMouse(new GladiusIIIAimpoint());
DetectMouse(new GladiusIIIAimpointWired());
DetectMouse(new GladiusIIOrigin());
DetectMouse(new GladiusIIOriginPink());
DetectMouse(new GladiusII());
DetectMouse(new ROGKerisWireless());
DetectMouse(new ROGKerisWirelessWired());
DetectMouse(new ROGKerisWirelessWiredC());
DetectMouse(new ROGKeris());
DetectMouse(new ROGKerisWirelessEvaEdition());
DetectMouse(new ROGKerisWirelessEvaEditionWired());
DetectMouse(new TUFM4Wirelss());

View File

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

View File

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

View File

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

View File

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

View File

@@ -7,7 +7,6 @@ Small and lightweight Armoury Crate alternative for Asus laptops offering almost
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!
# [:floppy_disk:Download](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
### Support project : [:euro: Paypal EUR](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA) | [💵 Paypal USD](https://www.paypal.com/donate/?hosted_button_id=SRM6QUX6ACXDY)
- [FAQ](https://github.com/seerge/g-helper/wiki/FAQ)
- [Setup and Requirements](https://github.com/seerge/g-helper/wiki/Requirements)
@@ -23,8 +22,8 @@ Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13
| [Josh Cravey](https://www.youtube.com/watch?v=hqe-PjuE-K8) | [cbutters Tech](https://www.youtube.com/watch?v=6aVdwJKZSSc) |
## 📰 Articles
1. https://binaryfork.com/ghelper-armoury-crate-alternative-10216/
2. https://www.digitaltrends.com/computing/g-helper-armoury-crate-alternative/
1. https://www.digitaltrends.com/computing/g-helper-armoury-crate-alternative/
2. https://binaryfork.com/ghelper-armoury-crate-alternative-10216/
## :gift: Advantages
@@ -95,6 +94,7 @@ Each BIOS mode is paired with matching Windows Power Mode. You can adjust this s
- ROG Gladius III
- ROG Gladius III Wireless
- ROG Harpe Ace Aim Lab Edition
- ROG Keris (P509)
- ROG Keris Wireless
- ROG Strix Carry (P508)
- ROG Strix III Gladius III Aimpoint Wireless (P711)
@@ -137,13 +137,6 @@ Huge thanks to [@IceStormNG](https://github.com/IceStormNG) 👑 for contributio
- ``M + X`` - Screenshot
- ``M + Right Stick Click`` - Controller Mode
------------------
#### If you like the app you can make a Donation
| [Paypal in EUR](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA) | [Paypal in USD](https://www.paypal.com/donate/?hosted_button_id=SRM6QUX6ACXDY) |
| ------------------------------------------ | ----------------------------------------------- |
| [![QR Code](https://user-images.githubusercontent.com/5920850/233658717-0441494d-fede-4a2c-b4f2-4b16a184a69a.png)](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA) | [![QR Code](https://github-production-user-asset-6210df.s3.amazonaws.com/5920850/239492811-b487e89a-3df6-42ea-bdb8-24c455ab2310.png)](https://www.paypal.com/donate/?hosted_button_id=SRM6QUX6ACXDY) |
------------------
### 🔖 Important Notice