mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Compare commits
21 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8c5f4aa0f3 | ||
|
|
6f861957df | ||
|
|
8884b0d844 | ||
|
|
2987d750e3 | ||
|
|
b5e160bc00 | ||
|
|
fb33f426d3 | ||
|
|
163b35d6b0 | ||
|
|
325c6ff3ea | ||
|
|
7b34ec4a8c | ||
|
|
31b535a582 | ||
|
|
1fa2442023 | ||
|
|
39cc2b7563 | ||
|
|
8a37520453 | ||
|
|
fbfbe8e730 | ||
|
|
545e2cc705 | ||
|
|
a27b02ff62 | ||
|
|
06bfe8361d | ||
|
|
8531d903bb | ||
|
|
a3768bcedf | ||
|
|
ef1a823294 | ||
|
|
5e49c2e699 |
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@@ -1,20 +0,0 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
||||
46
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
46
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
name: Feature request
|
||||
description: Suggest an idea for this project
|
||||
body:
|
||||
- type: checkboxes
|
||||
id: rules
|
||||
attributes:
|
||||
label: Rules
|
||||
options:
|
||||
- label: I made myself familiar with the <a href='https://github.com/seerge/g-helper?tab=readme-ov-file'>Readme</a>, <a href='https://github.com/seerge/g-helper/wiki/FAQ'>FAQ</a> and <a href='https://github.com/seerge/g-helper/wiki/Troubleshooting'>Troubleshooting</a>.
|
||||
required: true
|
||||
- label: I understand that, if insufficient information will be provided, my issue will be closed without an answer.
|
||||
required: true
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Is your feature request related to a problem? Please describe
|
||||
placeholder: A clear and concise description of what the problem is.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: solution
|
||||
attributes:
|
||||
label: Describe the solution you'd like
|
||||
placeholder: A clear and concise description of what you want to happen.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: alternatives
|
||||
attributes:
|
||||
label: Describe alternatives you've considered
|
||||
placeholder: A clear and concise description of any alternative solutions or features you've considered.
|
||||
- type: input
|
||||
id: device
|
||||
attributes:
|
||||
label: Device and Model
|
||||
description: Which laptop do you use?
|
||||
placeholder: e.g. Asus Zephyrus G14 GA404RK
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: additional
|
||||
attributes:
|
||||
label: Additional information.
|
||||
placeholder: If applicable, add screenshots or other relevant information
|
||||
5
.github/workflows/release.yml
vendored
5
.github/workflows/release.yml
vendored
@@ -22,9 +22,10 @@ jobs:
|
||||
- name: Publish
|
||||
run: |
|
||||
dotnet publish app/GHelper.sln --configuration Release --runtime win-x64 -p:PublishSingleFile=true --no-self-contained
|
||||
powershell Compress-Archive app/bin/x64/Release/net7.0-windows/win-x64/publish/* GHelper.zip
|
||||
powershell Compress-Archive app/bin/x64/Release/net7.0-windows/win-x64/publish/GHelper.exe GHelper.zip
|
||||
powershell Compress-Archive app/bin/x64/Release/net7.0-windows/win-x64/publish/WinRing* PluginAdvancedSettings.zip
|
||||
- name: Upload
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
gh release upload ${{ github.ref_name }} GHelper.zip
|
||||
gh release upload ${{ github.ref_name }} GHelper.zip PluginAdvancedSettings.zip
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using GHelper.Gpu.AMD;
|
||||
using GHelper.Input;
|
||||
using GHelper.Mode;
|
||||
using GHelper.USB;
|
||||
using HidSharp;
|
||||
using System.Text;
|
||||
@@ -509,6 +510,11 @@ namespace GHelper.Ally
|
||||
|
||||
}
|
||||
|
||||
public static void ApplyXBoxStatus()
|
||||
{
|
||||
AsusHid.WriteInput(new byte[] { AsusHid.INPUT_ID, 0xD1, 0x0B, 0x01, AppConfig.Is("controller_disabled") ? (byte)0x02 : (byte)0x01 }, "Status");
|
||||
}
|
||||
|
||||
public static void ApplyMode(ControllerMode applyMode = ControllerMode.Auto)
|
||||
{
|
||||
Task.Run(() =>
|
||||
@@ -536,7 +542,7 @@ namespace GHelper.Ally
|
||||
InputDispatcher.SetBacklightAuto(true);
|
||||
WakeUp();
|
||||
|
||||
AsusHid.WriteInput(new byte[] { AsusHid.INPUT_ID, 0xd1, 0x01, 0x01, (byte)_applyMode }, "Controller");
|
||||
AsusHid.WriteInput(new byte[] { AsusHid.INPUT_ID, 0xD1, 0x01, 0x01, (byte)_applyMode }, "Controller");
|
||||
AsusHid.WriteInput(CommandSave, null);
|
||||
|
||||
BindZone(BindingZone.M1M2);
|
||||
@@ -580,7 +586,6 @@ namespace GHelper.Ally
|
||||
|
||||
public void ToggleMode()
|
||||
{
|
||||
|
||||
switch (_mode)
|
||||
{
|
||||
case ControllerMode.Auto:
|
||||
@@ -596,7 +601,6 @@ namespace GHelper.Ally
|
||||
SetMode(ControllerMode.Auto);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ using Starlight.AnimeMatrix;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Timers;
|
||||
|
||||
namespace GHelper.AnimeMatrix
|
||||
@@ -69,49 +68,51 @@ namespace GHelper.AnimeMatrix
|
||||
StopMatrixTimer();
|
||||
StopMatrixAudio();
|
||||
|
||||
try
|
||||
Task.Run(() =>
|
||||
{
|
||||
device.SetProvider();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine(ex.Message);
|
||||
return;
|
||||
}
|
||||
|
||||
if (wakeUp && AppConfig.ContainsModel("401")) device.WakeUp();
|
||||
|
||||
if (brightness == 0 || (auto && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online))
|
||||
{
|
||||
device.SetDisplayState(false);
|
||||
device.SetDisplayState(false); // some devices are dumb
|
||||
Logger.WriteLine("Matrix Off");
|
||||
}
|
||||
else
|
||||
{
|
||||
device.SetDisplayState(true);
|
||||
device.SetBrightness((BrightnessMode)brightness);
|
||||
|
||||
switch (running)
|
||||
try
|
||||
{
|
||||
case 2:
|
||||
SetMatrixPicture(AppConfig.GetString("matrix_picture"));
|
||||
break;
|
||||
case 3:
|
||||
SetMatrixClock();
|
||||
break;
|
||||
case 4:
|
||||
SetMatrixAudio();
|
||||
break;
|
||||
default:
|
||||
device.SetBuiltInAnimation(true, animation);
|
||||
Logger.WriteLine("Matrix builtin " + animation.AsByte);
|
||||
break;
|
||||
|
||||
device.SetProvider();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine(ex.Message);
|
||||
return;
|
||||
}
|
||||
|
||||
//mat.SetBrightness((BrightnessMode)brightness);
|
||||
}
|
||||
if (wakeUp && AppConfig.ContainsModel("401")) device.WakeUp();
|
||||
|
||||
if (brightness == 0 || (auto && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online))
|
||||
{
|
||||
device.SetDisplayState(false);
|
||||
device.SetDisplayState(false); // some devices are dumb
|
||||
Logger.WriteLine("Matrix Off");
|
||||
}
|
||||
else
|
||||
{
|
||||
device.SetDisplayState(true);
|
||||
device.SetBrightness((BrightnessMode)brightness);
|
||||
|
||||
switch (running)
|
||||
{
|
||||
case 2:
|
||||
SetMatrixPicture(AppConfig.GetString("matrix_picture"));
|
||||
break;
|
||||
case 3:
|
||||
SetMatrixClock();
|
||||
break;
|
||||
case 4:
|
||||
SetMatrixAudio();
|
||||
break;
|
||||
default:
|
||||
device.SetBuiltInAnimation(true, animation);
|
||||
Logger.WriteLine("Matrix builtin " + animation.AsByte);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
private void StartMatrixTimer(int interval = 100)
|
||||
@@ -358,10 +359,10 @@ namespace GHelper.AnimeMatrix
|
||||
|
||||
int matrixZoom = AppConfig.Get("matrix_zoom", 100);
|
||||
int matrixContrast = AppConfig.Get("matrix_contrast", 100);
|
||||
|
||||
|
||||
int matrixSpeed = AppConfig.Get("matrix_speed", 50);
|
||||
|
||||
MatrixRotation rotation = (MatrixRotation)AppConfig.Get("matrix_rotation", 0);
|
||||
MatrixRotation rotation = (MatrixRotation)AppConfig.Get("matrix_rotation", 0);
|
||||
|
||||
InterpolationMode matrixQuality = (InterpolationMode)AppConfig.Get("matrix_quality", 0);
|
||||
|
||||
@@ -382,7 +383,7 @@ namespace GHelper.AnimeMatrix
|
||||
device.GenerateFrame(image, matrixZoom, matrixX, matrixY, matrixQuality, matrixContrast);
|
||||
else
|
||||
device.GenerateFrameDiagonal(image, matrixZoom, matrixX, matrixY, matrixQuality, matrixContrast);
|
||||
|
||||
|
||||
device.AddFrame();
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
using GHelper.AnimeMatrix.Communication;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Drawing.Text;
|
||||
using System.Management;
|
||||
using System.Text;
|
||||
|
||||
namespace Starlight.AnimeMatrix
|
||||
@@ -107,9 +106,7 @@ namespace Starlight.AnimeMatrix
|
||||
|
||||
public AnimeMatrixDevice() : base(0x0B05, 0x193B, 640)
|
||||
{
|
||||
string model = GetModel();
|
||||
|
||||
if (model.Contains("401"))
|
||||
if (AppConfig.ContainsModel("401"))
|
||||
{
|
||||
_model = AnimeType.GA401;
|
||||
|
||||
@@ -124,7 +121,7 @@ namespace Starlight.AnimeMatrix
|
||||
LedStart = 1;
|
||||
}
|
||||
|
||||
if (model.Contains("GU604"))
|
||||
if (AppConfig.ContainsModel("GU604"))
|
||||
{
|
||||
_model = AnimeType.GU604;
|
||||
|
||||
@@ -154,18 +151,6 @@ namespace Starlight.AnimeMatrix
|
||||
System.Runtime.InteropServices.Marshal.FreeCoTaskMem(fontPtr);
|
||||
}
|
||||
|
||||
public string GetModel()
|
||||
{
|
||||
using (var searcher = new ManagementObjectSearcher(@"Select * from Win32_ComputerSystem"))
|
||||
{
|
||||
foreach (var process in searcher.Get())
|
||||
return process["Model"].ToString();
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
public byte[] GetBuffer()
|
||||
{
|
||||
return _displayBuffer;
|
||||
@@ -408,7 +393,7 @@ namespace Starlight.AnimeMatrix
|
||||
var pixel = bmp.GetPixel(x, y);
|
||||
var color = Math.Min((pixel.R + pixel.G + pixel.B) * contrast / 300, 255);
|
||||
if (color > 20)
|
||||
SetLedDiagonal(x, y, (byte)color, deltaX + (FullRows / 2) + 1, deltaY - (FullRows / 2) - 1);
|
||||
SetLedDiagonal(x, y, (byte)color, deltaX, deltaY - (FullRows / 2) - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -431,7 +416,7 @@ namespace Starlight.AnimeMatrix
|
||||
public void Text(string text, float fontSize = 10, int x = 0, int y = 0)
|
||||
{
|
||||
|
||||
int width = MaxRows - FullRows;
|
||||
int width = MaxRows;
|
||||
int height = MaxRows - FullRows;
|
||||
int textHeight, textWidth;
|
||||
|
||||
@@ -452,7 +437,7 @@ namespace Starlight.AnimeMatrix
|
||||
}
|
||||
}
|
||||
|
||||
SetBitmapDiagonal(bmp, 5 , height);
|
||||
SetBitmapDiagonal(bmp, 5, height);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -501,8 +486,11 @@ namespace Starlight.AnimeMatrix
|
||||
|
||||
public void GenerateFrameDiagonal(Image image, float zoom = 100, int panX = 0, int panY = 0, InterpolationMode quality = InterpolationMode.Default, int contrast = 100)
|
||||
{
|
||||
int width = MaxRows - FullRows;
|
||||
int height = MaxRows - FullRows*2;
|
||||
int width = MaxRows + FullRows;
|
||||
int height = MaxColumns + FullRows;
|
||||
|
||||
if ((image.Height / image.Width) > (height / width)) height = MaxColumns;
|
||||
|
||||
float scale;
|
||||
|
||||
using (Bitmap bmp = new Bitmap(width, height))
|
||||
@@ -518,7 +506,7 @@ namespace Starlight.AnimeMatrix
|
||||
graph.CompositingQuality = CompositingQuality.HighQuality;
|
||||
graph.SmoothingMode = SmoothingMode.AntiAlias;
|
||||
|
||||
graph.DrawImage(image, width - scaleWidth, height - scaleHeight, scaleWidth, scaleHeight);
|
||||
graph.DrawImage(image, (width - scaleWidth) / 2, height - scaleHeight, scaleWidth, scaleHeight);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -412,6 +412,11 @@ public static class AppConfig
|
||||
return ContainsModel("X13");
|
||||
}
|
||||
|
||||
public static bool IsG14AMD()
|
||||
{
|
||||
return ContainsModel("GA402R");
|
||||
}
|
||||
|
||||
public static bool DynamicBoost5()
|
||||
{
|
||||
return ContainsModel("GZ301ZE");
|
||||
|
||||
@@ -133,7 +133,7 @@ public class AsusACPI
|
||||
public const int MinTotal = 5;
|
||||
|
||||
public static int MaxTotal = 150;
|
||||
public static int DefaultTotal = 125;
|
||||
public static int DefaultTotal = 80;
|
||||
|
||||
public const int MinCPU = 5;
|
||||
public const int MaxCPU = 100;
|
||||
@@ -251,6 +251,11 @@ public class AsusACPI
|
||||
MaxTotal = 250;
|
||||
}
|
||||
|
||||
if (AppConfig.IsG14AMD())
|
||||
{
|
||||
DefaultTotal = 125;
|
||||
}
|
||||
|
||||
if (AppConfig.IsX13())
|
||||
{
|
||||
MaxTotal = 75;
|
||||
|
||||
@@ -101,13 +101,12 @@ namespace GHelper.Display
|
||||
int miniled1 = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled1);
|
||||
int miniled2 = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled2);
|
||||
|
||||
Logger.WriteLine($"Miniled: {miniled1} {miniled2}");
|
||||
|
||||
int miniled = (miniled1 >= 0) ? miniled1 : miniled2;
|
||||
bool hdr = false;
|
||||
|
||||
if (miniled >= 0)
|
||||
{
|
||||
Logger.WriteLine($"Miniled: {miniled1} {miniled2}");
|
||||
AppConfig.Set("miniled", miniled);
|
||||
hdr = ScreenCCD.GetHDRStatus();
|
||||
}
|
||||
|
||||
@@ -13,7 +13,6 @@ namespace GHelper
|
||||
{
|
||||
|
||||
ScreenControl screenControl = new ScreenControl();
|
||||
ModeControl modeControl = new ModeControl();
|
||||
ClamshellModeControl clamshellControl = new ClamshellModeControl();
|
||||
|
||||
const string EMPTY = "--------------";
|
||||
@@ -228,6 +227,8 @@ namespace GHelper
|
||||
|
||||
checkGpuApps.Visible = false;
|
||||
checkUSBC.Visible = false;
|
||||
checkAutoToggleClamshellMode.Visible = false;
|
||||
checkNoOverdrive.Visible = false;
|
||||
|
||||
int apuMem = Program.acpi.GetAPUMem();
|
||||
if (apuMem >= 0)
|
||||
|
||||
106
app/Fans.Designer.cs
generated
106
app/Fans.Designer.cs
generated
@@ -31,14 +31,14 @@ namespace GHelper
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
ChartArea chartArea5 = new ChartArea();
|
||||
Title title5 = new Title();
|
||||
ChartArea chartArea6 = new ChartArea();
|
||||
Title title6 = new Title();
|
||||
ChartArea chartArea7 = new ChartArea();
|
||||
Title title7 = new Title();
|
||||
ChartArea chartArea8 = new ChartArea();
|
||||
Title title8 = new Title();
|
||||
ChartArea chartArea1 = new ChartArea();
|
||||
Title title1 = new Title();
|
||||
ChartArea chartArea2 = new ChartArea();
|
||||
Title title2 = new Title();
|
||||
ChartArea chartArea3 = new ChartArea();
|
||||
Title title3 = new Title();
|
||||
ChartArea chartArea4 = new ChartArea();
|
||||
Title title4 = new Title();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Fans));
|
||||
panelFans = new Panel();
|
||||
labelTip = new Label();
|
||||
@@ -85,6 +85,8 @@ namespace GHelper
|
||||
panelTitleTemp = new Panel();
|
||||
pictureTemp = new PictureBox();
|
||||
labelTempLimit = new Label();
|
||||
panelDownload = new Panel();
|
||||
buttonDownload = new RButton();
|
||||
panelPower = new Panel();
|
||||
panelApplyPower = new Panel();
|
||||
checkApplyPower = new RCheckBox();
|
||||
@@ -168,6 +170,7 @@ namespace GHelper
|
||||
((System.ComponentModel.ISupportInitialize)trackTemp).BeginInit();
|
||||
panelTitleTemp.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureTemp).BeginInit();
|
||||
panelDownload.SuspendLayout();
|
||||
panelPower.SuspendLayout();
|
||||
panelApplyPower.SuspendLayout();
|
||||
panelCPU.SuspendLayout();
|
||||
@@ -257,8 +260,8 @@ namespace GHelper
|
||||
//
|
||||
// chartGPU
|
||||
//
|
||||
chartArea5.Name = "ChartArea1";
|
||||
chartGPU.ChartAreas.Add(chartArea5);
|
||||
chartArea1.Name = "ChartArea1";
|
||||
chartGPU.ChartAreas.Add(chartArea1);
|
||||
chartGPU.Dock = DockStyle.Fill;
|
||||
chartGPU.Location = new Point(12, 493);
|
||||
chartGPU.Margin = new Padding(2, 10, 2, 10);
|
||||
@@ -266,13 +269,13 @@ namespace GHelper
|
||||
chartGPU.Size = new Size(782, 463);
|
||||
chartGPU.TabIndex = 17;
|
||||
chartGPU.Text = "chartGPU";
|
||||
title5.Name = "Title1";
|
||||
chartGPU.Titles.Add(title5);
|
||||
title1.Name = "Title1";
|
||||
chartGPU.Titles.Add(title1);
|
||||
//
|
||||
// chartCPU
|
||||
//
|
||||
chartArea6.Name = "ChartArea1";
|
||||
chartCPU.ChartAreas.Add(chartArea6);
|
||||
chartArea2.Name = "ChartArea1";
|
||||
chartCPU.ChartAreas.Add(chartArea2);
|
||||
chartCPU.Dock = DockStyle.Fill;
|
||||
chartCPU.Location = new Point(12, 10);
|
||||
chartCPU.Margin = new Padding(2, 10, 2, 10);
|
||||
@@ -280,13 +283,13 @@ namespace GHelper
|
||||
chartCPU.Size = new Size(782, 463);
|
||||
chartCPU.TabIndex = 14;
|
||||
chartCPU.Text = "chartCPU";
|
||||
title6.Name = "Title1";
|
||||
chartCPU.Titles.Add(title6);
|
||||
title2.Name = "Title1";
|
||||
chartCPU.Titles.Add(title2);
|
||||
//
|
||||
// chartXGM
|
||||
//
|
||||
chartArea7.Name = "ChartAreaXGM";
|
||||
chartXGM.ChartAreas.Add(chartArea7);
|
||||
chartArea3.Name = "ChartAreaXGM";
|
||||
chartXGM.ChartAreas.Add(chartArea3);
|
||||
chartXGM.Dock = DockStyle.Fill;
|
||||
chartXGM.Location = new Point(12, 1459);
|
||||
chartXGM.Margin = new Padding(2, 10, 2, 10);
|
||||
@@ -294,14 +297,14 @@ namespace GHelper
|
||||
chartXGM.Size = new Size(782, 463);
|
||||
chartXGM.TabIndex = 14;
|
||||
chartXGM.Text = "chartXGM";
|
||||
title7.Name = "Title4";
|
||||
chartXGM.Titles.Add(title7);
|
||||
title3.Name = "Title4";
|
||||
chartXGM.Titles.Add(title3);
|
||||
chartXGM.Visible = false;
|
||||
//
|
||||
// chartMid
|
||||
//
|
||||
chartArea8.Name = "ChartArea3";
|
||||
chartMid.ChartAreas.Add(chartArea8);
|
||||
chartArea4.Name = "ChartArea3";
|
||||
chartMid.ChartAreas.Add(chartArea4);
|
||||
chartMid.Dock = DockStyle.Fill;
|
||||
chartMid.Location = new Point(12, 976);
|
||||
chartMid.Margin = new Padding(2, 10, 2, 10);
|
||||
@@ -309,8 +312,8 @@ namespace GHelper
|
||||
chartMid.Size = new Size(782, 463);
|
||||
chartMid.TabIndex = 14;
|
||||
chartMid.Text = "chartMid";
|
||||
title8.Name = "Title3";
|
||||
chartMid.Titles.Add(title8);
|
||||
title4.Name = "Title3";
|
||||
chartMid.Titles.Add(title4);
|
||||
chartMid.Visible = false;
|
||||
//
|
||||
// panelTitleFans
|
||||
@@ -528,10 +531,11 @@ namespace GHelper
|
||||
panelAdvanced.Controls.Add(panelTitleAdvanced);
|
||||
panelAdvanced.Controls.Add(panelTemperature);
|
||||
panelAdvanced.Controls.Add(panelTitleTemp);
|
||||
panelAdvanced.Controls.Add(panelDownload);
|
||||
panelAdvanced.Dock = DockStyle.Top;
|
||||
panelAdvanced.Location = new Point(10, 1644);
|
||||
panelAdvanced.Name = "panelAdvanced";
|
||||
panelAdvanced.Size = new Size(520, 888);
|
||||
panelAdvanced.Size = new Size(520, 992);
|
||||
panelAdvanced.TabIndex = 14;
|
||||
panelAdvanced.Visible = false;
|
||||
//
|
||||
@@ -540,7 +544,7 @@ namespace GHelper
|
||||
panelAdvancedAlways.AutoSize = true;
|
||||
panelAdvancedAlways.Controls.Add(checkApplyUV);
|
||||
panelAdvancedAlways.Dock = DockStyle.Top;
|
||||
panelAdvancedAlways.Location = new Point(0, 827);
|
||||
panelAdvancedAlways.Location = new Point(0, 931);
|
||||
panelAdvancedAlways.Name = "panelAdvancedAlways";
|
||||
panelAdvancedAlways.Padding = new Padding(16, 0, 16, 15);
|
||||
panelAdvancedAlways.Size = new Size(520, 61);
|
||||
@@ -566,7 +570,7 @@ namespace GHelper
|
||||
panelAdvancedApply.AutoSize = true;
|
||||
panelAdvancedApply.Controls.Add(buttonApplyAdvanced);
|
||||
panelAdvancedApply.Dock = DockStyle.Top;
|
||||
panelAdvancedApply.Location = new Point(0, 747);
|
||||
panelAdvancedApply.Location = new Point(0, 851);
|
||||
panelAdvancedApply.Name = "panelAdvancedApply";
|
||||
panelAdvancedApply.Padding = new Padding(15);
|
||||
panelAdvancedApply.Size = new Size(520, 80);
|
||||
@@ -595,7 +599,7 @@ namespace GHelper
|
||||
labelRisky.BackColor = Color.IndianRed;
|
||||
labelRisky.Dock = DockStyle.Top;
|
||||
labelRisky.ForeColor = SystemColors.ControlLightLight;
|
||||
labelRisky.Location = new Point(0, 504);
|
||||
labelRisky.Location = new Point(0, 608);
|
||||
labelRisky.Margin = new Padding(0);
|
||||
labelRisky.Name = "labelRisky";
|
||||
labelRisky.Padding = new Padding(10, 10, 10, 5);
|
||||
@@ -611,7 +615,7 @@ namespace GHelper
|
||||
panelUViGPU.Controls.Add(labelLeftUViGPU);
|
||||
panelUViGPU.Controls.Add(trackUViGPU);
|
||||
panelUViGPU.Dock = DockStyle.Top;
|
||||
panelUViGPU.Location = new Point(0, 380);
|
||||
panelUViGPU.Location = new Point(0, 484);
|
||||
panelUViGPU.Margin = new Padding(4);
|
||||
panelUViGPU.MaximumSize = new Size(0, 124);
|
||||
panelUViGPU.Name = "panelUViGPU";
|
||||
@@ -659,7 +663,7 @@ namespace GHelper
|
||||
panelUV.Controls.Add(labelLeftUV);
|
||||
panelUV.Controls.Add(trackUV);
|
||||
panelUV.Dock = DockStyle.Top;
|
||||
panelUV.Location = new Point(0, 256);
|
||||
panelUV.Location = new Point(0, 360);
|
||||
panelUV.Margin = new Padding(4);
|
||||
panelUV.MaximumSize = new Size(0, 124);
|
||||
panelUV.Name = "panelUV";
|
||||
@@ -704,7 +708,7 @@ namespace GHelper
|
||||
panelTitleAdvanced.Controls.Add(pictureUV);
|
||||
panelTitleAdvanced.Controls.Add(labelTitleUV);
|
||||
panelTitleAdvanced.Dock = DockStyle.Top;
|
||||
panelTitleAdvanced.Location = new Point(0, 190);
|
||||
panelTitleAdvanced.Location = new Point(0, 294);
|
||||
panelTitleAdvanced.Name = "panelTitleAdvanced";
|
||||
panelTitleAdvanced.Size = new Size(520, 66);
|
||||
panelTitleAdvanced.TabIndex = 48;
|
||||
@@ -740,7 +744,7 @@ namespace GHelper
|
||||
panelTemperature.Controls.Add(labelLeftTemp);
|
||||
panelTemperature.Controls.Add(trackTemp);
|
||||
panelTemperature.Dock = DockStyle.Top;
|
||||
panelTemperature.Location = new Point(0, 66);
|
||||
panelTemperature.Location = new Point(0, 170);
|
||||
panelTemperature.Margin = new Padding(4);
|
||||
panelTemperature.MaximumSize = new Size(0, 124);
|
||||
panelTemperature.Name = "panelTemperature";
|
||||
@@ -785,7 +789,7 @@ namespace GHelper
|
||||
panelTitleTemp.Controls.Add(pictureTemp);
|
||||
panelTitleTemp.Controls.Add(labelTempLimit);
|
||||
panelTitleTemp.Dock = DockStyle.Top;
|
||||
panelTitleTemp.Location = new Point(0, 0);
|
||||
panelTitleTemp.Location = new Point(0, 104);
|
||||
panelTitleTemp.Name = "panelTitleTemp";
|
||||
panelTitleTemp.Size = new Size(520, 66);
|
||||
panelTitleTemp.TabIndex = 50;
|
||||
@@ -813,6 +817,38 @@ namespace GHelper
|
||||
labelTempLimit.TabIndex = 47;
|
||||
labelTempLimit.Text = "Temp Limit";
|
||||
//
|
||||
// panelDownload
|
||||
//
|
||||
panelDownload.AutoSize = true;
|
||||
panelDownload.Controls.Add(buttonDownload);
|
||||
panelDownload.Dock = DockStyle.Top;
|
||||
panelDownload.Location = new Point(0, 0);
|
||||
panelDownload.Name = "panelDownload";
|
||||
panelDownload.Padding = new Padding(20);
|
||||
panelDownload.Size = new Size(520, 104);
|
||||
panelDownload.TabIndex = 52;
|
||||
panelDownload.Visible = false;
|
||||
//
|
||||
// buttonDownload
|
||||
//
|
||||
buttonDownload.Activated = false;
|
||||
buttonDownload.AutoSize = true;
|
||||
buttonDownload.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
buttonDownload.BackColor = SystemColors.ControlLight;
|
||||
buttonDownload.BorderColor = Color.Transparent;
|
||||
buttonDownload.BorderRadius = 2;
|
||||
buttonDownload.Dock = DockStyle.Top;
|
||||
buttonDownload.FlatStyle = FlatStyle.Flat;
|
||||
buttonDownload.Location = new Point(20, 20);
|
||||
buttonDownload.Margin = new Padding(20);
|
||||
buttonDownload.Name = "buttonDownload";
|
||||
buttonDownload.Padding = new Padding(10);
|
||||
buttonDownload.Secondary = true;
|
||||
buttonDownload.Size = new Size(480, 64);
|
||||
buttonDownload.TabIndex = 19;
|
||||
buttonDownload.Text = "Download Advanced Settings Plugin";
|
||||
buttonDownload.UseVisualStyleBackColor = false;
|
||||
//
|
||||
// panelPower
|
||||
//
|
||||
panelPower.AutoSize = true;
|
||||
@@ -1634,6 +1670,8 @@ namespace GHelper
|
||||
panelTitleTemp.ResumeLayout(false);
|
||||
panelTitleTemp.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureTemp).EndInit();
|
||||
panelDownload.ResumeLayout(false);
|
||||
panelDownload.PerformLayout();
|
||||
panelPower.ResumeLayout(false);
|
||||
panelPower.PerformLayout();
|
||||
panelApplyPower.ResumeLayout(false);
|
||||
@@ -1793,5 +1831,7 @@ namespace GHelper
|
||||
private Label labelSlow;
|
||||
private Label labelLeftSlow;
|
||||
private TrackBar trackSlow;
|
||||
private Panel panelDownload;
|
||||
private RButton buttonDownload;
|
||||
}
|
||||
}
|
||||
34
app/Fans.cs
34
app/Fans.cs
@@ -213,6 +213,8 @@ namespace GHelper
|
||||
|
||||
buttonCalibrate.Click += ButtonCalibrate_Click;
|
||||
|
||||
buttonDownload.Click += ButtonDownload_Click;
|
||||
|
||||
ToggleNavigation(0);
|
||||
|
||||
if (Program.acpi.DeviceGet(AsusACPI.DevsCPUFanCurve) < 0) buttonCalibrate.Visible = false;
|
||||
@@ -221,7 +223,21 @@ namespace GHelper
|
||||
|
||||
}
|
||||
|
||||
private void ButtonDownload_Click(object? sender, EventArgs e)
|
||||
{
|
||||
RyzenControl.DownloadRing();
|
||||
|
||||
panelAdvancedAlways.Visible = true;
|
||||
panelAdvancedApply.Visible = true;
|
||||
labelRisky.Visible = true;
|
||||
panelUViGPU.Visible = true;
|
||||
panelUV.Visible = true;
|
||||
panelTitleAdvanced.Visible = true;
|
||||
panelTemperature.Visible = true;
|
||||
panelTitleTemp.Visible = true;
|
||||
|
||||
VisualiseAdvanced();
|
||||
}
|
||||
|
||||
private void ButtonCalibrate_Click(object? sender, EventArgs e)
|
||||
{
|
||||
@@ -365,6 +381,24 @@ namespace GHelper
|
||||
|
||||
private void VisualiseAdvanced()
|
||||
{
|
||||
|
||||
if (!RyzenControl.IsRingExsists())
|
||||
{
|
||||
panelTitleAdvanced.Visible = false;
|
||||
labelRisky.Visible = false;
|
||||
panelUV.Visible = false;
|
||||
panelUViGPU.Visible = false;
|
||||
panelTitleTemp.Visible = false;
|
||||
panelTemperature.Visible = false;
|
||||
panelAdvancedAlways.Visible = false;
|
||||
panelAdvancedApply.Visible = false;
|
||||
panelDownload.Visible = true;
|
||||
|
||||
} else
|
||||
{
|
||||
panelDownload.Visible = false;
|
||||
}
|
||||
|
||||
if (!RyzenControl.IsSupportedUV())
|
||||
{
|
||||
panelTitleAdvanced.Visible = false;
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||
<AssemblyVersion>0.149</AssemblyVersion>
|
||||
<AssemblyVersion>0.150</AssemblyVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
||||
1273
app/Handheld.Designer.cs
generated
1273
app/Handheld.Designer.cs
generated
File diff suppressed because it is too large
Load Diff
145
app/Handheld.cs
145
app/Handheld.cs
@@ -6,6 +6,9 @@ namespace GHelper
|
||||
public partial class Handheld : RForm
|
||||
{
|
||||
|
||||
static string activeBinding = "";
|
||||
static RButton? activeButton;
|
||||
|
||||
public Handheld()
|
||||
{
|
||||
InitializeComponent();
|
||||
@@ -41,80 +44,131 @@ namespace GHelper
|
||||
|
||||
trackVibra.ValueChanged += Controller_Complete;
|
||||
|
||||
FillBinding("m1", "M1");
|
||||
FillBinding("m2", "M2");
|
||||
ButtonBinding("m1", "M1", buttonM1);
|
||||
ButtonBinding("m2", "M2", buttonM2);
|
||||
|
||||
FillBinding("a", "A");
|
||||
FillBinding("b", "B");
|
||||
FillBinding("x", "X");
|
||||
FillBinding("y", "Y");
|
||||
ButtonBinding("a", "A", buttonA);
|
||||
ButtonBinding("b", "B", buttonB);
|
||||
ButtonBinding("x", "X", buttonX);
|
||||
ButtonBinding("y", "Y", buttonY);
|
||||
|
||||
FillBinding("du", "DPadUp");
|
||||
FillBinding("dd", "DPadDown");
|
||||
|
||||
FillBinding("dl", "DPadLeft");
|
||||
FillBinding("dr", "DPadRight");
|
||||
ButtonBinding("du", "DPad Up", buttonDPU);
|
||||
ButtonBinding("dd", "DPad Down", buttonDPD);
|
||||
|
||||
FillBinding("rb", "RBumper");
|
||||
FillBinding("lb", "LBumper");
|
||||
ButtonBinding("dl", "DPad Left", buttonDPL);
|
||||
ButtonBinding("dr", "DPad Right", buttonDPR);
|
||||
|
||||
FillBinding("rs", "RStick");
|
||||
FillBinding("ll", "LStick");
|
||||
ButtonBinding("rt", "Right Trigger", buttonRT);
|
||||
ButtonBinding("lt", "Left Trigger", buttonLT);
|
||||
|
||||
ButtonBinding("rb", "Right Bumper", buttonRB);
|
||||
ButtonBinding("lb", "Left Bumper", buttonLB);
|
||||
|
||||
ButtonBinding("rs", "Right Stick", buttonRS);
|
||||
ButtonBinding("ll", "Left Stick", buttonLS);
|
||||
|
||||
ButtonBinding("vb", "View", buttonView);
|
||||
ButtonBinding("mb", "Menu", buttonMenu);
|
||||
|
||||
ComboBinding(comboPrimary);
|
||||
ComboBinding(comboSecondary);
|
||||
|
||||
checkController.Checked = AppConfig.Is("controller_disabled");
|
||||
checkController.CheckedChanged += CheckController_CheckedChanged;
|
||||
|
||||
FillBinding("vb", "View");
|
||||
FillBinding("mb", "Menu");
|
||||
}
|
||||
|
||||
private RComboBox ComboBinding(string name, string value)
|
||||
private void CheckController_CheckedChanged(object? sender, EventArgs e)
|
||||
{
|
||||
AppConfig.Set("controller_disabled", checkController.Checked ? 1 : 0);
|
||||
AllyControl.ApplyXBoxStatus();
|
||||
}
|
||||
|
||||
private void ComboBinding(RComboBox combo)
|
||||
{
|
||||
var combo = new RComboBox();
|
||||
combo.BorderColor = Color.White;
|
||||
combo.ButtonColor = Color.FromArgb(255, 255, 255);
|
||||
combo.Dock = DockStyle.Fill;
|
||||
combo.Name = name;
|
||||
combo.Margin = new Padding(5, 5, 5, 5);
|
||||
|
||||
combo.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||
combo.DisplayMember = "Value";
|
||||
combo.ValueMember = "Key";
|
||||
foreach (var item in AllyControl.BindCodes)
|
||||
{
|
||||
combo.Items.Add(new KeyValuePair<string, string>(item.Key, item.Value));
|
||||
if (item.Key == value) combo.SelectedItem = item;
|
||||
}
|
||||
|
||||
combo.SelectedValueChanged += Binding_SelectedValueChanged;
|
||||
|
||||
return combo;
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void FillBinding(string binding, string label)
|
||||
{
|
||||
tableBindings.RowStyles.Add(new RowStyle(SizeType.AutoSize));
|
||||
tableBindings.Controls.Add(new Label { Text = label, Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Padding = new Padding(5, 5, 5, 5) }, 0, tableBindings.RowCount);
|
||||
|
||||
tableBindings.Controls.Add(ComboBinding("bind_" + binding, AppConfig.GetString("bind_" + binding, "")), 1, tableBindings.RowCount);
|
||||
tableBindings.Controls.Add(ComboBinding("bind2_" + binding, AppConfig.GetString("bind2_" + binding, "")), 2, tableBindings.RowCount);
|
||||
|
||||
tableBindings.RowCount++;
|
||||
|
||||
}
|
||||
|
||||
private void Binding_SelectedValueChanged(object? sender, EventArgs e)
|
||||
{
|
||||
|
||||
if (sender is null) return;
|
||||
RComboBox combo = (RComboBox)sender;
|
||||
|
||||
string value = ((KeyValuePair<string, string>)combo.SelectedItem).Key;
|
||||
string binding = "bind" + (combo.Name == "comboPrimary" ? "" : "2") + "_" + activeBinding;
|
||||
|
||||
if (value != "") AppConfig.Set(combo.Name, value);
|
||||
else AppConfig.Remove(combo.Name);
|
||||
if (value != "") AppConfig.Set(binding, value);
|
||||
else AppConfig.Remove(binding);
|
||||
|
||||
VisualiseButton(activeButton, activeBinding);
|
||||
|
||||
AllyControl.ApplyMode();
|
||||
}
|
||||
|
||||
private void SetComboValue(RComboBox combo, string value)
|
||||
{
|
||||
foreach (var item in AllyControl.BindCodes)
|
||||
if (item.Key == value)
|
||||
{
|
||||
combo.SelectedItem = item;
|
||||
return;
|
||||
}
|
||||
|
||||
combo.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
private void VisualiseButton(RButton button, string binding)
|
||||
{
|
||||
if (button == null) return;
|
||||
|
||||
string primary = AppConfig.GetString("bind_" + binding, "");
|
||||
string secondary = AppConfig.GetString("bind2_" + binding, "");
|
||||
|
||||
if (primary != "" || secondary != "")
|
||||
{
|
||||
button.BorderColor = colorStandard;
|
||||
button.Activated = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
button.Activated = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void ButtonBinding(string binding, string label, RButton button)
|
||||
{
|
||||
button.Click += (sender, EventArgs) => { buttonBinding_Click(sender, EventArgs, binding, label); };
|
||||
VisualiseButton(button, binding);
|
||||
}
|
||||
|
||||
void buttonBinding_Click(object sender, EventArgs e, string binding, string label)
|
||||
{
|
||||
|
||||
if (sender is null) return;
|
||||
RButton button = (RButton)sender;
|
||||
|
||||
panelBinding.Visible = true;
|
||||
|
||||
activeButton = button;
|
||||
activeBinding = binding;
|
||||
|
||||
labelBinding.Text = "Binding: " + label;
|
||||
|
||||
SetComboValue(comboPrimary, AppConfig.GetString("bind_" + binding, ""));
|
||||
SetComboValue(comboSecondary, AppConfig.GetString("bind2_" + binding, ""));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void Controller_Complete(object? sender, EventArgs e)
|
||||
{
|
||||
AllyControl.SetDeadzones();
|
||||
@@ -201,5 +255,6 @@ namespace GHelper
|
||||
Top = Program.settingsForm.Top;
|
||||
Left = Program.settingsForm.Left - Width - 5;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,12 +69,14 @@ namespace GHelper.Helpers
|
||||
}
|
||||
public static void DisableClamshellMode()
|
||||
{
|
||||
if (PowerNative.GetLidAction(true) == GetDefaultLidAction()) return;
|
||||
PowerNative.SetLidAction(GetDefaultLidAction(), true);
|
||||
Logger.WriteLine("Disengaging Clamshell Mode");
|
||||
}
|
||||
|
||||
public static void EnableClamshellMode()
|
||||
{
|
||||
if (PowerNative.GetLidAction(true) == 0) return;
|
||||
PowerNative.SetLidAction(0, true);
|
||||
Logger.WriteLine("Engaging Clamshell Mode");
|
||||
}
|
||||
|
||||
@@ -37,14 +37,14 @@ namespace GHelper.Helpers
|
||||
return principal.IsInRole(WindowsBuiltInRole.Administrator);
|
||||
}
|
||||
|
||||
public static void RunAsAdmin(string? param = null)
|
||||
public static void RunAsAdmin(string? param = null, bool force = false)
|
||||
{
|
||||
|
||||
if (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastAdmin) < 2000) return;
|
||||
lastAdmin = DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
||||
|
||||
// Check if the current user is an administrator
|
||||
if (!IsUserAdministrator())
|
||||
if (!IsUserAdministrator() || force)
|
||||
{
|
||||
ProcessStartInfo startInfo = new ProcessStartInfo();
|
||||
startInfo.UseShellExecute = true;
|
||||
|
||||
@@ -415,6 +415,8 @@ namespace GHelper.Mode
|
||||
return;
|
||||
}
|
||||
|
||||
if (!RyzenControl.IsRingExsists()) return;
|
||||
|
||||
try
|
||||
{
|
||||
SetUV(AppConfig.GetMode("cpu_uv", 0));
|
||||
|
||||
20
app/Properties/Resources.Designer.cs
generated
20
app/Properties/Resources.Designer.cs
generated
@@ -60,6 +60,16 @@ namespace GHelper.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap ally {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("ally", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
@@ -680,6 +690,16 @@ namespace GHelper.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap icons8_xbox_rt_32 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("icons8-xbox-rt-32", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
|
||||
@@ -136,6 +136,9 @@
|
||||
<data name="icons8-bicycle-48 (1)" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-bicycle-48 (1).png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="standard" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\standard.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="eco" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\eco.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
@@ -154,8 +157,8 @@
|
||||
<data name="icons8-controller-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-controller-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_share_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-share-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<data name="icons8-controls-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-controls-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-next-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-next-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
@@ -187,6 +190,9 @@
|
||||
<data name="icons8-laptop-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-laptop-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="ally" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\ally.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_remove_64" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-remove-64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
@@ -307,8 +313,8 @@
|
||||
<data name="icons8_software_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-software-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="standard" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\standard.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<data name="icons8_share_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-share-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-soonvibes-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-soonvibes-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
@@ -319,7 +325,7 @@
|
||||
<data name="icons8-charging-battery-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-charging-battery-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-controls-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-controls-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<data name="icons8-xbox-rt-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-xbox-rt-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
BIN
app/Resources/ally.png
Normal file
BIN
app/Resources/ally.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
BIN
app/Resources/icons8-xbox-rt-32.png
Normal file
BIN
app/Resources/icons8-xbox-rt-32.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 448 B |
@@ -4,7 +4,10 @@
|
||||
//
|
||||
|
||||
|
||||
using GHelper.Helpers;
|
||||
using System.Management;
|
||||
using System.Net;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Ryzen
|
||||
{
|
||||
@@ -52,7 +55,8 @@ namespace Ryzen
|
||||
CPUName = obj["Name"].ToString();
|
||||
CPUModel = obj["Caption"].ToString();
|
||||
}
|
||||
} catch (Exception ex)
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine(ex.Message);
|
||||
}
|
||||
@@ -142,6 +146,54 @@ namespace Ryzen
|
||||
return CPUName.Contains("6900H") || CPUName.Contains("7945H") || CPUName.Contains("7845H");
|
||||
}
|
||||
|
||||
public static bool IsRingExsists()
|
||||
{
|
||||
string exeDir = Path.GetDirectoryName(Application.ExecutablePath);
|
||||
return File.Exists(exeDir + "\\" + "WinRing0x64.dll");
|
||||
}
|
||||
|
||||
public static void DownloadRing()
|
||||
{
|
||||
var appVersion = new Version(Assembly.GetExecutingAssembly().GetName().Version.ToString());
|
||||
string requestUri = "https://github.com/seerge/g-helper/releases/download/v" + appVersion.Major + "." + appVersion.Minor + "/PluginAdvancedSettings.zip";
|
||||
|
||||
Uri uri = new Uri(requestUri);
|
||||
|
||||
string exeDir = Path.GetDirectoryName(Application.ExecutablePath);
|
||||
string zipName = Path.GetFileName(uri.LocalPath);
|
||||
string zipLocation = exeDir + "\\" + zipName;
|
||||
|
||||
using (WebClient client = new WebClient())
|
||||
{
|
||||
Logger.WriteLine(requestUri);
|
||||
Logger.WriteLine(exeDir);
|
||||
Logger.WriteLine(zipName);
|
||||
|
||||
try
|
||||
{
|
||||
client.DownloadFile(uri, zipLocation);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine(ex.Message);
|
||||
Logger.WriteLine(ex.ToString());
|
||||
if (!ProcessHelper.IsUserAdministrator() && !ex.Message.Contains("remote server")) ProcessHelper.RunAsAdmin("uv");
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
System.IO.Compression.ZipFile.ExtractToDirectory(zipLocation, exeDir, overwriteFiles: true);
|
||||
File.Delete(zipLocation);
|
||||
ProcessHelper.RunAsAdmin("uv", true);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine(ex.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetAddresses()
|
||||
{
|
||||
|
||||
|
||||
@@ -1024,6 +1024,7 @@ namespace GHelper
|
||||
if (extraForm != null && extraForm.Text != "") extraForm.Close();
|
||||
if (updatesForm != null && updatesForm.Text != "") updatesForm.Close();
|
||||
if (matrixForm != null && matrixForm.Text != "") matrixForm.Close();
|
||||
if (handheldForm != null && handheldForm.Text != "") handheldForm.Close();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -1044,6 +1045,7 @@ namespace GHelper
|
||||
(extraForm != null && extraForm.ContainsFocus) ||
|
||||
(updatesForm != null && updatesForm.ContainsFocus) ||
|
||||
(matrixForm != null && matrixForm.ContainsFocus) ||
|
||||
(handheldForm != null && handheldForm.ContainsFocus) ||
|
||||
this.ContainsFocus ||
|
||||
(lostFocusCheck && Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastLostFocus) < 300);
|
||||
}
|
||||
|
||||
@@ -21,19 +21,6 @@ namespace GHelper.UI
|
||||
public static Color chartMain;
|
||||
public static Color chartGrid;
|
||||
|
||||
static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
|
||||
static readonly IntPtr HWND_NOTOPMOST = new IntPtr(-2);
|
||||
static readonly IntPtr HWND_TOP = new IntPtr(0);
|
||||
static readonly IntPtr HWND_BOTTOM = new IntPtr(1);
|
||||
const UInt32 SWP_NOSIZE = 0x0001;
|
||||
const UInt32 SWP_NOMOVE = 0x0002;
|
||||
const UInt32 TOPMOST_FLAGS = SWP_NOMOVE | SWP_NOSIZE;
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
|
||||
protected override bool ShowWithoutActivation => true;
|
||||
|
||||
[DllImport("UXTheme.dll", SetLastError = true, EntryPoint = "#138")]
|
||||
public static extern bool CheckSystemDarkModeStatus();
|
||||
|
||||
|
||||
@@ -343,7 +343,17 @@ namespace GHelper.USB
|
||||
if (flags.SleepRear) rear |= 1 << 6;
|
||||
if (flags.ShutdownRear) rear |= 1 << 7;
|
||||
|
||||
return new byte[] { 0x5d, 0xbd, 0x01, keyb, bar, lid, rear, 0xFF };
|
||||
return new byte[] { AsusHid.AURA_ID, 0xBD, 0x01, keyb, bar, lid, rear, 0xFF };
|
||||
}
|
||||
|
||||
private static void ApplyAllyPower(AuraPower flags)
|
||||
{
|
||||
byte power = 0x00;
|
||||
if (flags.BootKeyb) power |= 0x01;
|
||||
if (flags.AwakeKeyb) power |= 0x02;
|
||||
if (flags.SleepKeyb) power |= 0x04;
|
||||
if (flags.ShutdownKeyb) power |= 0x08;
|
||||
AsusHid.WriteInput(new byte[] { AsusHid.INPUT_ID, 0xD1, 0x09, 0x01, power }, "Aura");
|
||||
}
|
||||
|
||||
public static void ApplyPower()
|
||||
@@ -381,6 +391,12 @@ namespace GHelper.USB
|
||||
flags.SleepRear = AppConfig.IsNotFalse("keyboard_sleep_lid");
|
||||
flags.ShutdownRear = AppConfig.IsNotFalse("keyboard_shutdown_lid");
|
||||
|
||||
if (AppConfig.IsAlly())
|
||||
{
|
||||
ApplyAllyPower(flags);
|
||||
return;
|
||||
}
|
||||
|
||||
AsusHid.Write(AuraPowerMessage(flags));
|
||||
|
||||
if (isACPI)
|
||||
|
||||
@@ -82,13 +82,6 @@ Each BIOS mode is paired with matching Windows Power Mode. You can adjust this s
|
||||
|
||||

|
||||
|
||||
### 🔖 Important Notice
|
||||
|
||||
G-Helper is **NOT** an operating system, firmware or a driver. It **DOESN'T** "run" your hardware in realtime anyhow.
|
||||
|
||||
It's an app that lets you select (already predefined and stored in BIOS) operating modes and (optionally) set some settings that already exist on your device (same as Armoury Crate). If you use same mode / settings as in Armoury Crate - performance of your device won't be different.
|
||||
|
||||
Role of G-Helper for your laptop is similar to a role of a remote control for your TV.
|
||||
|
||||
### :mouse: Asus Mouse and other peripherals support
|
||||
|
||||
@@ -121,8 +114,13 @@ Huge thanks to [@IceStormNG](https://github.com/IceStormNG) 👑 for contributio
|
||||
- ``Fn + Shift + F7 / F8`` - Matrix brightness Down / Up
|
||||
- ``Fn + Shift + F7 / F8`` - Screenpad brightness Down / Up
|
||||
- ``Ctrl + Shift + F20`` - Mute Microphone
|
||||
- ``Ctrl + Shift + Alt + F14`` - Eco Mode
|
||||
- ``Ctrl + Shift + Alt + F15`` - Standard Mode
|
||||
- ``Ctrl + Shift + Alt + F14`` - Eco GPU Mode
|
||||
- ``Ctrl + Shift + Alt + F15`` - Standard GPU Mode
|
||||
- ``Ctrl + Shift + Alt + F16`` - Silent
|
||||
- ``Ctrl + Shift + Alt + F17`` - Balanced
|
||||
- ``Ctrl + Shift + Alt + F18`` - Turbo
|
||||
- ``Ctrl + Shift + Alt + F19`` - Custom 1 (if exists)
|
||||
- ``Ctrl + Shift + Alt + F20`` - Custom 2 (if exists)
|
||||
- [Custom keybindings / hotkeys](https://github.com/seerge/g-helper/wiki/Power-user-settings#custom-hotkey-actions)
|
||||
|
||||
------------------
|
||||
@@ -134,14 +132,24 @@ Huge thanks to [@IceStormNG](https://github.com/IceStormNG) 👑 for contributio
|
||||
|
||||
------------------
|
||||
|
||||
**Libraries and projects used**
|
||||
### 🔖 Important Notice
|
||||
|
||||
G-Helper is **NOT** an operating system, firmware, or driver. It **DOES NOT** "run" your hardware in real-time anyhow.
|
||||
|
||||
It's an app that lets you select one of the predefined operating modes created by Asus (and stored in BIOS) and optionally(!) set some settings that already exist on your device same as Armoury Crate can. It does it by using the Asus System Control Interface "driver" that Armoury uses for it.
|
||||
|
||||
If you use equivalent mode/settings as in Armoury Crate - the performance or the behavior of your device won't be different.
|
||||
|
||||
The role of G-Helper for your laptop is similar to the role of a remote control for your TV.
|
||||
|
||||
### Libraries and projects used
|
||||
- [Linux Kernel](https://github.com/torvalds/linux/blob/master/drivers/platform/x86/asus-wmi.c) for some basic endpoints in ASUS ACPI/WMI interface
|
||||
- [NvAPIWrapper](https://github.com/falahati/NvAPIWrapper) for accessing Nvidia API
|
||||
- [Starlight](https://github.com/vddCore/Starlight) for anime matrix communication protocol
|
||||
- [UXTU](https://github.com/JamesCJ60/Universal-x86-Tuning-Utility) for undervolting using Ryzen System Management Unit
|
||||
- [AsusCtl](https://gitlab.com/asus-linux/asusctl) for inspiration and some reverse engineering
|
||||
|
||||
**Disclaimers**
|
||||
### Disclaimers
|
||||
"ROG", "TUF", and "Armoury Crate" are trademarked by and belong to AsusTek Computer, Inc. I make no claims to these or any assets belonging to AsusTek Computer and use them purely for informational purposes only.
|
||||
|
||||
THE SOFTWARE IS PROVIDED “AS IS” AND WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. MISUSE OF THIS SOFTWARE COULD CAUSE SYSTEM INSTABILITY OR MALFUNCTION.
|
||||
|
||||
Reference in New Issue
Block a user