mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Compare commits
42 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f3fd590be4 | ||
|
|
6a9d47a61d | ||
|
|
3848ef9a43 | ||
|
|
84c7fdb3bf | ||
|
|
013c83fd60 | ||
|
|
b31ed8338a | ||
|
|
6f9eb1e9c5 | ||
|
|
f19ea5eaf6 | ||
|
|
0db3665dd2 | ||
|
|
68c17368f0 | ||
|
|
12a2a147d4 | ||
|
|
1b10be93ed | ||
|
|
1e29aeda17 | ||
|
|
32c4f6168c | ||
|
|
5d945d6b7c | ||
|
|
1c27eee293 | ||
|
|
1efc722f93 | ||
|
|
4a1e585c69 | ||
|
|
3bab1a271b | ||
|
|
5b2017299c | ||
|
|
f4cc4b4ac5 | ||
|
|
36d6d6af48 | ||
|
|
93d639fc6f | ||
|
|
1f6a2a9ac5 | ||
|
|
8bcac73824 | ||
|
|
4e46a20eff | ||
|
|
1d2f1d3bb2 | ||
|
|
eeaa906749 | ||
|
|
22bfc77a7a | ||
|
|
267cf6387f | ||
|
|
45e7e5551e | ||
|
|
bb796b8818 | ||
|
|
d9b615ce2d | ||
|
|
035c60da2e | ||
|
|
e096699909 | ||
|
|
bf1ffddf15 | ||
|
|
fad7396c8f | ||
|
|
af4a5e8af7 | ||
|
|
3d2be97cf6 | ||
|
|
b6fe7c9ddf | ||
|
|
f2085b836b | ||
|
|
ccf2ae9eed |
@@ -355,7 +355,12 @@ public static class AppConfig
|
||||
|
||||
public static bool IsStrixLimitedRGB()
|
||||
{
|
||||
return ContainsModel("G614JV") || ContainsModel("G614JZ") || ContainsModel("G512LI") || ContainsModel("G513RS") || ContainsModel("G513RM");
|
||||
return ContainsModel("G614JV") || ContainsModel("G614JZ") || ContainsModel("G512LI") || ContainsModel("G513RS") || ContainsModel("G513RM") || ContainsModel("G713PV") || ContainsModel("G513IE") || ContainsModel("G513QM") || ContainsModel("G713RC");
|
||||
}
|
||||
|
||||
public static bool IsStrixNumpad()
|
||||
{
|
||||
return ContainsModel("G713R");
|
||||
}
|
||||
|
||||
public static bool IsZ13()
|
||||
@@ -423,7 +428,7 @@ public static class AppConfig
|
||||
|
||||
public static bool IsGPUFixNeeded()
|
||||
{
|
||||
return ContainsModel("GA402X") || ContainsModel("GV302") || ContainsModel("GZ301") || ContainsModel("FX506") || ContainsModel("GU603V") || ContainsModel("GU603Z");
|
||||
return ContainsModel("GA402X") || ContainsModel("GV302") || ContainsModel("GV301") || ContainsModel("GZ301") || ContainsModel("FX506") || ContainsModel("GU603V") || ContainsModel("GU603Z");
|
||||
}
|
||||
|
||||
public static bool IsGPUFix()
|
||||
@@ -446,4 +451,8 @@ public static class AppConfig
|
||||
return ContainsModel("FA507");
|
||||
}
|
||||
|
||||
public static bool IsASUS()
|
||||
{
|
||||
return ContainsModel("ROG") || ContainsModel("TUF") || ContainsModel("Vivobook") || ContainsModel("Zenbook");
|
||||
}
|
||||
}
|
||||
|
||||
115
app/AsusACPI.cs
115
app/AsusACPI.cs
@@ -36,7 +36,7 @@ public class AsusACPI
|
||||
const uint INIT = 0x54494E49;
|
||||
|
||||
public const uint UniversalControl = 0x00100021;
|
||||
|
||||
|
||||
public const int KB_Light_Up = 0xc4;
|
||||
public const int KB_Light_Down = 0xc5;
|
||||
public const int Brightness_Down = 0x10;
|
||||
@@ -94,6 +94,8 @@ public class AsusACPI
|
||||
public const int PPT_APUC1 = 0x001200C1; // fPPT (fast boost limit)
|
||||
public const int PPT_GPUC2 = 0x001200C2; // NVIDIA GPU Temp Target (75.. 87 C)
|
||||
|
||||
public const int APU_MEM = 0x000600C1;
|
||||
|
||||
public const int TUF_KB_BRIGHTNESS = 0x00050021;
|
||||
public const int TUF_KB = 0x00100056;
|
||||
public const int TUF_KB2 = 0x0010005a;
|
||||
@@ -183,6 +185,7 @@ public class AsusACPI
|
||||
private static extern bool WaitForSingleObject(IntPtr hHandle, int dwMilliseconds);
|
||||
|
||||
private IntPtr eventHandle;
|
||||
private bool _connected = false;
|
||||
|
||||
// still works only with asus optimization service on , if someone knows how to get ACPI events from asus without that - let me know
|
||||
public void RunListener()
|
||||
@@ -209,22 +212,33 @@ public class AsusACPI
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsConnected()
|
||||
{
|
||||
return _connected;
|
||||
}
|
||||
|
||||
public AsusACPI()
|
||||
{
|
||||
handle = CreateFile(
|
||||
FILE_NAME,
|
||||
GENERIC_READ | GENERIC_WRITE,
|
||||
FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
IntPtr.Zero,
|
||||
OPEN_EXISTING,
|
||||
FILE_ATTRIBUTE_NORMAL,
|
||||
IntPtr.Zero
|
||||
);
|
||||
|
||||
if (handle == new IntPtr(-1))
|
||||
try
|
||||
{
|
||||
throw new Exception("Can't connect to ACPI");
|
||||
handle = CreateFile(
|
||||
FILE_NAME,
|
||||
GENERIC_READ | GENERIC_WRITE,
|
||||
FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
IntPtr.Zero,
|
||||
OPEN_EXISTING,
|
||||
FILE_ATTRIBUTE_NORMAL,
|
||||
IntPtr.Zero
|
||||
);
|
||||
|
||||
//handle = new IntPtr(-1);
|
||||
//throw new Exception("ERROR");
|
||||
_connected = true;
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine($"Can't connect to ACPI: {ex.Message}");
|
||||
}
|
||||
|
||||
if (AppConfig.IsAdvantageEdition()) MaxTotal = 250;
|
||||
@@ -387,7 +401,7 @@ public class AsusACPI
|
||||
|
||||
byte min = (byte)(curve[8] * 255 / 100);
|
||||
byte max = (byte)(curve[15] * 255 / 100);
|
||||
byte[] range = { min, max};
|
||||
byte[] range = { min, max };
|
||||
|
||||
int result;
|
||||
switch (device)
|
||||
@@ -419,7 +433,7 @@ public class AsusACPI
|
||||
|
||||
// it seems to be a bug, when some old model's bios can go nuts if fan is set to 100%
|
||||
|
||||
for (int i = 8; i < curve.Length; i++) curve[i] = (byte)(Math.Max((byte)0, Math.Min((byte)100, curve[i])) * fanScale / 100);
|
||||
for (int i = 8; i < curve.Length; i++) curve[i] = (byte)(Math.Max((byte)0, Math.Min((byte)100, curve[i])) * fanScale / 100);
|
||||
|
||||
switch (device)
|
||||
{
|
||||
@@ -525,6 +539,75 @@ public class AsusACPI
|
||||
return DeviceGet(PPT_CPUB0) >= 0 && DeviceGet(PPT_GPUC0) < 0;
|
||||
}
|
||||
|
||||
public void SetAPUMem(int memory = 4)
|
||||
{
|
||||
if (memory < 0 || memory > 8) return;
|
||||
|
||||
int mem = 0;
|
||||
|
||||
switch (memory)
|
||||
{
|
||||
case 0:
|
||||
mem = 0;
|
||||
break;
|
||||
case 1:
|
||||
mem = 258;
|
||||
break;
|
||||
case 2:
|
||||
mem = 259;
|
||||
break;
|
||||
case 3:
|
||||
mem = 260;
|
||||
break;
|
||||
case 4:
|
||||
mem = 261;
|
||||
break;
|
||||
case 5:
|
||||
mem = 263;
|
||||
break;
|
||||
case 6:
|
||||
mem = 264;
|
||||
break;
|
||||
case 7:
|
||||
mem = 265;
|
||||
break;
|
||||
case 8:
|
||||
mem = 262;
|
||||
break;
|
||||
}
|
||||
|
||||
Program.acpi.DeviceSet(APU_MEM, mem, "APU Mem");
|
||||
}
|
||||
|
||||
public int GetAPUMem()
|
||||
{
|
||||
int memory = Program.acpi.DeviceGet(APU_MEM);
|
||||
if (memory < 0) return -1;
|
||||
|
||||
switch (memory)
|
||||
{
|
||||
case 256:
|
||||
return 0;
|
||||
case 258:
|
||||
return 1;
|
||||
case 259:
|
||||
return 2;
|
||||
case 260:
|
||||
return 3;
|
||||
case 261:
|
||||
return 4;
|
||||
case 262:
|
||||
return 8;
|
||||
case 263:
|
||||
return 5;
|
||||
case 264:
|
||||
return 6;
|
||||
case 265:
|
||||
return 7;
|
||||
default:
|
||||
return 4;
|
||||
}
|
||||
}
|
||||
|
||||
public void ScanRange()
|
||||
{
|
||||
@@ -554,7 +637,7 @@ public class AsusACPI
|
||||
{
|
||||
|
||||
byte[] setting = new byte[6];
|
||||
|
||||
|
||||
setting[0] = (byte)0xb4;
|
||||
setting[1] = (byte)mode;
|
||||
setting[2] = color.R;
|
||||
|
||||
99
app/Extra.Designer.cs
generated
99
app/Extra.Designer.cs
generated
@@ -106,6 +106,7 @@ namespace GHelper
|
||||
checkAutoToggleClamshellMode = new CheckBox();
|
||||
checkTopmost = new CheckBox();
|
||||
checkNoOverdrive = new CheckBox();
|
||||
checkBootSound = new CheckBox();
|
||||
checkUSBC = new CheckBox();
|
||||
checkVariBright = new CheckBox();
|
||||
checkGpuApps = new CheckBox();
|
||||
@@ -115,7 +116,10 @@ namespace GHelper
|
||||
labelHibernateAfter = new Label();
|
||||
pictureHibernate = new PictureBox();
|
||||
toolTip = new ToolTip(components);
|
||||
checkBootSound = new CheckBox();
|
||||
panelAPU = new Panel();
|
||||
comboAPU = new RComboBox();
|
||||
pictureAPUMem = new PictureBox();
|
||||
labelAPUMem = new Label();
|
||||
panelServices.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureService).BeginInit();
|
||||
panelBindingsHeader.SuspendLayout();
|
||||
@@ -138,6 +142,8 @@ namespace GHelper
|
||||
panelPower.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)numericHibernateAfter).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)pictureHibernate).BeginInit();
|
||||
panelAPU.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureAPUMem).BeginInit();
|
||||
SuspendLayout();
|
||||
//
|
||||
// panelServices
|
||||
@@ -148,7 +154,7 @@ namespace GHelper
|
||||
panelServices.Controls.Add(labelServices);
|
||||
panelServices.Controls.Add(buttonServices);
|
||||
panelServices.Dock = DockStyle.Top;
|
||||
panelServices.Location = new Point(15, 1321);
|
||||
panelServices.Location = new Point(15, 1378);
|
||||
panelServices.Name = "panelServices";
|
||||
panelServices.Size = new Size(983, 75);
|
||||
panelServices.TabIndex = 5;
|
||||
@@ -1072,7 +1078,7 @@ namespace GHelper
|
||||
panelSettings.Controls.Add(checkGpuApps);
|
||||
panelSettings.Controls.Add(checkGPUFix);
|
||||
panelSettings.Dock = DockStyle.Top;
|
||||
panelSettings.Location = new Point(15, 921);
|
||||
panelSettings.Location = new Point(15, 978);
|
||||
panelSettings.Name = "panelSettings";
|
||||
panelSettings.Padding = new Padding(20, 5, 11, 5);
|
||||
panelSettings.Size = new Size(983, 346);
|
||||
@@ -1116,6 +1122,19 @@ namespace GHelper
|
||||
checkNoOverdrive.Text = Strings.DisableOverdrive;
|
||||
checkNoOverdrive.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBootSound
|
||||
//
|
||||
checkBootSound.AutoSize = true;
|
||||
checkBootSound.Dock = DockStyle.Top;
|
||||
checkBootSound.Location = new Point(20, 173);
|
||||
checkBootSound.Margin = new Padding(4, 3, 4, 3);
|
||||
checkBootSound.Name = "checkBootSound";
|
||||
checkBootSound.Padding = new Padding(3);
|
||||
checkBootSound.Size = new Size(952, 42);
|
||||
checkBootSound.TabIndex = 10;
|
||||
checkBootSound.Text = "Boot Sound";
|
||||
checkBootSound.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkUSBC
|
||||
//
|
||||
checkUSBC.AutoSize = true;
|
||||
@@ -1174,7 +1193,7 @@ namespace GHelper
|
||||
panelPower.Controls.Add(labelHibernateAfter);
|
||||
panelPower.Controls.Add(pictureHibernate);
|
||||
panelPower.Dock = DockStyle.Top;
|
||||
panelPower.Location = new Point(15, 1267);
|
||||
panelPower.Location = new Point(15, 1324);
|
||||
panelPower.Name = "panelPower";
|
||||
panelPower.Size = new Size(983, 54);
|
||||
panelPower.TabIndex = 4;
|
||||
@@ -1211,18 +1230,58 @@ namespace GHelper
|
||||
pictureHibernate.TabIndex = 22;
|
||||
pictureHibernate.TabStop = false;
|
||||
//
|
||||
// checkBootSound
|
||||
// panelAPU
|
||||
//
|
||||
checkBootSound.AutoSize = true;
|
||||
checkBootSound.Dock = DockStyle.Top;
|
||||
checkBootSound.Location = new Point(20, 173);
|
||||
checkBootSound.Margin = new Padding(4, 3, 4, 3);
|
||||
checkBootSound.Name = "checkBootSound";
|
||||
checkBootSound.Padding = new Padding(3);
|
||||
checkBootSound.Size = new Size(952, 42);
|
||||
checkBootSound.TabIndex = 10;
|
||||
checkBootSound.Text = "Boot Sound";
|
||||
checkBootSound.UseVisualStyleBackColor = true;
|
||||
panelAPU.AutoSize = true;
|
||||
panelAPU.Controls.Add(comboAPU);
|
||||
panelAPU.Controls.Add(pictureAPUMem);
|
||||
panelAPU.Controls.Add(labelAPUMem);
|
||||
panelAPU.Dock = DockStyle.Top;
|
||||
panelAPU.Location = new Point(15, 921);
|
||||
panelAPU.Name = "panelAPU";
|
||||
panelAPU.Padding = new Padding(11, 5, 11, 0);
|
||||
panelAPU.Size = new Size(983, 57);
|
||||
panelAPU.TabIndex = 46;
|
||||
panelAPU.Visible = false;
|
||||
panelAPU.Paint += panelAPU_Paint;
|
||||
//
|
||||
// comboAPU
|
||||
//
|
||||
comboAPU.AccessibleName = "Keyboard Animation Speed";
|
||||
comboAPU.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||
comboAPU.BorderColor = Color.White;
|
||||
comboAPU.ButtonColor = SystemColors.ControlLight;
|
||||
comboAPU.FlatStyle = FlatStyle.Flat;
|
||||
comboAPU.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
comboAPU.FormattingEnabled = true;
|
||||
comboAPU.ItemHeight = 32;
|
||||
comboAPU.Items.AddRange(new object[] { "Auto", "1G", "2G", "3G", "4G", "5G", "6G", "7G", "8G" });
|
||||
comboAPU.Location = new Point(663, 8);
|
||||
comboAPU.Margin = new Padding(4, 12, 4, 9);
|
||||
comboAPU.Name = "comboAPU";
|
||||
comboAPU.Size = new Size(293, 40);
|
||||
comboAPU.TabIndex = 12;
|
||||
comboAPU.TabStop = false;
|
||||
//
|
||||
// pictureAPUMem
|
||||
//
|
||||
pictureAPUMem.BackgroundImage = Resources.icons8_video_48;
|
||||
pictureAPUMem.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
pictureAPUMem.Location = new Point(20, 11);
|
||||
pictureAPUMem.Name = "pictureAPUMem";
|
||||
pictureAPUMem.Size = new Size(32, 32);
|
||||
pictureAPUMem.TabIndex = 1;
|
||||
pictureAPUMem.TabStop = false;
|
||||
//
|
||||
// labelAPUMem
|
||||
//
|
||||
labelAPUMem.AutoSize = true;
|
||||
labelAPUMem.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelAPUMem.Location = new Point(56, 11);
|
||||
labelAPUMem.Name = "labelAPUMem";
|
||||
labelAPUMem.Size = new Size(309, 32);
|
||||
labelAPUMem.TabIndex = 0;
|
||||
labelAPUMem.Text = "Memory Assigned to GPU";
|
||||
//
|
||||
// Extra
|
||||
//
|
||||
@@ -1230,10 +1289,11 @@ namespace GHelper
|
||||
AutoScaleMode = AutoScaleMode.Dpi;
|
||||
AutoSize = true;
|
||||
AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
ClientSize = new Size(1013, 1467);
|
||||
ClientSize = new Size(1013, 1515);
|
||||
Controls.Add(panelServices);
|
||||
Controls.Add(panelPower);
|
||||
Controls.Add(panelSettings);
|
||||
Controls.Add(panelAPU);
|
||||
Controls.Add(panelSettingsHeader);
|
||||
Controls.Add(panelBacklight);
|
||||
Controls.Add(panelBacklightHeader);
|
||||
@@ -1282,6 +1342,9 @@ namespace GHelper
|
||||
panelPower.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)numericHibernateAfter).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)pictureHibernate).EndInit();
|
||||
panelAPU.ResumeLayout(false);
|
||||
panelAPU.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureAPUMem).EndInit();
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
||||
}
|
||||
@@ -1372,5 +1435,9 @@ namespace GHelper
|
||||
private CheckBox checkGPUFix;
|
||||
private ToolTip toolTip;
|
||||
private CheckBox checkBootSound;
|
||||
private Panel panelAPU;
|
||||
private PictureBox pictureAPUMem;
|
||||
private Label labelAPUMem;
|
||||
private RComboBox comboAPU;
|
||||
}
|
||||
}
|
||||
38
app/Extra.cs
38
app/Extra.cs
@@ -13,6 +13,7 @@ namespace GHelper
|
||||
{
|
||||
|
||||
ScreenControl screenControl = new ScreenControl();
|
||||
ModeControl modeControl = new ModeControl();
|
||||
ClamshellModeControl clamshellControl = new ClamshellModeControl();
|
||||
|
||||
const string EMPTY = "--------------";
|
||||
@@ -138,6 +139,8 @@ namespace GHelper
|
||||
checkGpuApps.Text = Properties.Strings.KillGpuApps;
|
||||
labelHibernateAfter.Text = Properties.Strings.HibernateAfter;
|
||||
|
||||
labelAPUMem.Text = Properties.Strings.APUMemory;
|
||||
|
||||
Text = Properties.Strings.ExtraSettings;
|
||||
|
||||
if (AppConfig.IsARCNM())
|
||||
@@ -147,14 +150,14 @@ namespace GHelper
|
||||
labelM2.Visible = comboM2.Visible = textM2.Visible = false;
|
||||
labelM4.Visible = comboM4.Visible = textM4.Visible = false;
|
||||
labelFNF4.Visible = comboFNF4.Visible = textFNF4.Visible = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (AppConfig.NoMKeys())
|
||||
{
|
||||
labelM1.Text = "FN+F2";
|
||||
labelM2.Text = "FN+F3";
|
||||
labelM3.Text = "FN+F4";
|
||||
labelM4.Visible = comboM4.Visible = textM4.Visible = AppConfig.IsDUO();
|
||||
labelM4.Visible = comboM4.Visible = textM4.Visible = AppConfig.IsDUO();
|
||||
labelFNF4.Visible = comboFNF4.Visible = textFNF4.Visible = false;
|
||||
}
|
||||
|
||||
@@ -195,6 +198,17 @@ namespace GHelper
|
||||
SetKeyCombo(comboM4, textM4, "m4");
|
||||
SetKeyCombo(comboFNF4, textFNF4, "paddle");
|
||||
|
||||
|
||||
int apuMem = Program.acpi.GetAPUMem();
|
||||
if (apuMem >= 0)
|
||||
{
|
||||
panelAPU.Visible = true;
|
||||
comboAPU.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||
comboAPU.SelectedIndex = apuMem;
|
||||
}
|
||||
|
||||
comboAPU.SelectedIndexChanged += ComboAPU_SelectedIndexChanged;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -348,6 +362,19 @@ namespace GHelper
|
||||
InitHibernate();
|
||||
}
|
||||
|
||||
private void ComboAPU_SelectedIndexChanged(object? sender, EventArgs e)
|
||||
{
|
||||
int mem = comboAPU.SelectedIndex;
|
||||
Program.acpi.SetAPUMem(mem);
|
||||
|
||||
DialogResult dialogResult = MessageBox.Show(Properties.Strings.AlertAPUMemoryRestart, Properties.Strings.AlertAPUMemoryRestartTitle, MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
Process.Start("shutdown", "/r /t 1");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void CheckBootSound_CheckedChanged(object? sender, EventArgs e)
|
||||
{
|
||||
Program.acpi.DeviceSet(AsusACPI.BootSound, (checkBootSound.Checked ? 1 : 0), "BootSound");
|
||||
@@ -604,5 +631,10 @@ namespace GHelper
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void panelAPU_Paint(object sender, PaintEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||
<AssemblyVersion>0.133</AssemblyVersion>
|
||||
<AssemblyVersion>0.136</AssemblyVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
||||
@@ -181,6 +181,12 @@ namespace GHelper.Gpu
|
||||
Program.modeControl.SetGPUClocks(false);
|
||||
}
|
||||
|
||||
if (AppConfig.Is("mode_reapply"))
|
||||
{
|
||||
await Task.Delay(TimeSpan.FromMilliseconds(3000));
|
||||
Program.modeControl.AutoPerformance();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
@@ -116,6 +116,9 @@ namespace GHelper.Input
|
||||
|
||||
if (keyApp != Keys.None) hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control, keyApp);
|
||||
|
||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F14);
|
||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F15);
|
||||
|
||||
if (!AppConfig.Is("skip_hotkeys"))
|
||||
{
|
||||
hook.RegisterHotKey(ModifierKeys.Control, Keys.VolumeDown);
|
||||
@@ -345,6 +348,16 @@ namespace GHelper.Input
|
||||
if (e.Modifier == (ModifierKeys.Control | ModifierKeys.Shift | ModifierKeys.Alt))
|
||||
{
|
||||
if (e.Key == keyProfile) modeControl.CyclePerformanceMode(true);
|
||||
|
||||
switch (e.Key)
|
||||
{
|
||||
case Keys.F14:
|
||||
Program.settingsForm.gpuControl.SetGPUMode(AsusACPI.GPUModeEco);
|
||||
break;
|
||||
case Keys.F15:
|
||||
Program.settingsForm.gpuControl.SetGPUMode(AsusACPI.GPUModeStandard);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -640,7 +653,7 @@ namespace GHelper.Input
|
||||
case 106: // Screenpad button on DUO
|
||||
if (Control.ModifierKeys == Keys.Shift)
|
||||
ToggleScreenpad();
|
||||
else
|
||||
else
|
||||
SetScreenpad(100);
|
||||
break;
|
||||
|
||||
|
||||
211
app/Peripherals/Mouse/Models/ChakramCore.cs
Normal file
211
app/Peripherals/Mouse/Models/ChakramCore.cs
Normal file
@@ -0,0 +1,211 @@
|
||||
|
||||
namespace GHelper.Peripherals.Mouse.Models
|
||||
{
|
||||
//P511
|
||||
public class ChakramCore : AsusMouse
|
||||
{
|
||||
public ChakramCore() : base(0x0B05, 0x1958, "mi_00", false) {
|
||||
|
||||
}
|
||||
|
||||
public override int DPIProfileCount()
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "ROG Chakram Core";
|
||||
}
|
||||
|
||||
public override PollingRate[] SupportedPollingrates()
|
||||
{
|
||||
return new PollingRate[] {
|
||||
PollingRate.PR125Hz,
|
||||
PollingRate.PR250Hz,
|
||||
PollingRate.PR500Hz,
|
||||
PollingRate.PR1000Hz
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
public override int ProfileCount()
|
||||
{
|
||||
return 3;
|
||||
}
|
||||
public override int MaxDPI()
|
||||
{
|
||||
return 16_000;
|
||||
}
|
||||
|
||||
public override bool HasDebounceSetting()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool HasLiftOffSetting()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public override int DPIIncrements()
|
||||
{
|
||||
return 100;
|
||||
}
|
||||
|
||||
public override bool HasRGB()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public override int MaxBrightness()
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
public override LightingZone[] SupportedLightingZones()
|
||||
{
|
||||
return new LightingZone[] { LightingZone.Logo, LightingZone.Scrollwheel };
|
||||
}
|
||||
|
||||
public override bool IsLightingModeSupported(LightingMode lightingMode)
|
||||
{
|
||||
return lightingMode == LightingMode.Static
|
||||
|| lightingMode == LightingMode.Breathing
|
||||
|| lightingMode == LightingMode.ColorCycle
|
||||
|| lightingMode == LightingMode.React;
|
||||
}
|
||||
|
||||
//Mouse has React mapped to 0x03 instead of 0x04 like other mice
|
||||
protected override byte IndexForLightingMode(LightingMode lightingMode)
|
||||
{
|
||||
if (lightingMode == LightingMode.React)
|
||||
{
|
||||
return 0x03;
|
||||
}
|
||||
return ((byte)lightingMode);
|
||||
}
|
||||
|
||||
//Mouse has React mapped to 0x03 instead of 0x04 like other mice
|
||||
protected override LightingMode LightingModeForIndex(byte lightingMode)
|
||||
{
|
||||
if (lightingMode == 0x03)
|
||||
{
|
||||
return LightingMode.React;
|
||||
}
|
||||
return base.LightingModeForIndex(lightingMode);
|
||||
|
||||
}
|
||||
|
||||
public override bool HasBattery()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool HasAngleSnapping()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasAngleTuning()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
protected override byte[] GetReadLightingModePacket(LightingZone zone)
|
||||
{
|
||||
return new byte[] { 0x00, 0x12, 0x03, 0x00 };
|
||||
}
|
||||
|
||||
protected LightingSetting? ParseLightingSetting(byte[] packet, LightingZone zone)
|
||||
{
|
||||
if (packet[1] != 0x12 || packet[2] != 0x03)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
int offset = 5 + (((int)zone) * 5);
|
||||
|
||||
LightingSetting setting = new LightingSetting();
|
||||
|
||||
setting.LightingMode = LightingModeForIndex(packet[offset + 0]);
|
||||
setting.Brightness = packet[offset + 1];
|
||||
|
||||
setting.RGBColor = Color.FromArgb(packet[offset + 2], packet[offset + 3], packet[offset + 4]);
|
||||
|
||||
setting.AnimationDirection = SupportsAnimationDirection(setting.LightingMode)
|
||||
? (AnimationDirection)packet[21]
|
||||
: AnimationDirection.Clockwise;
|
||||
|
||||
if (setting.AnimationDirection != AnimationDirection.Clockwise
|
||||
&& setting.AnimationDirection != AnimationDirection.CounterClockwise)
|
||||
{
|
||||
setting.AnimationDirection = AnimationDirection.Clockwise;
|
||||
}
|
||||
|
||||
setting.RandomColor = SupportsRandomColor(setting.LightingMode) && packet[22] == 0x01;
|
||||
setting.AnimationSpeed = SupportsAnimationSpeed(setting.LightingMode)
|
||||
? (AnimationSpeed)packet[23]
|
||||
: AnimationSpeed.Medium;
|
||||
|
||||
//If the mouse reports an out of range value, which it does when the current setting has no speed option, chose medium as default
|
||||
if (setting.AnimationSpeed != AnimationSpeed.Fast
|
||||
&& setting.AnimationSpeed != AnimationSpeed.Medium
|
||||
&& setting.AnimationSpeed != AnimationSpeed.Slow)
|
||||
{
|
||||
setting.AnimationSpeed = AnimationSpeed.Medium;
|
||||
}
|
||||
return setting;
|
||||
}
|
||||
|
||||
public override void ReadLightingSetting()
|
||||
{
|
||||
if (!HasRGB())
|
||||
{
|
||||
return;
|
||||
}
|
||||
//Mouse sends all lighting zones in one response
|
||||
//21: Direction
|
||||
//22: Random
|
||||
//23: Speed
|
||||
// 20 21 22 23
|
||||
//00 12 03 00 00 [03 04 00 00 ff] [03 04 00 00 ff] [03 04 00 00 ff] 00 04 00 00
|
||||
//00 12 03 00 00 [05 02 ff 00 ff] [05 02 ff 00 ff] [05 02 ff 00 ff] 00 01 01 00
|
||||
//00 12 03 00 00 [03 01 00 00 ff] [03 01 00 00 ff] [03 01 00 00 ff] 00 01 00 01
|
||||
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;
|
||||
}
|
||||
|
||||
Logger.WriteLine(GetDisplayName() + ": Read RGB Setting for Zone " + lz[i].ToString() + ": " + ls.ToString());
|
||||
LightingSetting[i] = ls;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool CanChangeDPIProfile()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
protected override LiftOffDistance ParseLiftOffDistance(byte[] packet)
|
||||
{
|
||||
if (packet[1] != 0x12 || packet[2] != 0x06)
|
||||
{
|
||||
return LiftOffDistance.Low;
|
||||
}
|
||||
|
||||
return (LiftOffDistance)packet[5];
|
||||
}
|
||||
|
||||
protected override byte[] GetUpdateLiftOffDistancePacket(LiftOffDistance liftOffDistance)
|
||||
{
|
||||
return new byte[] { 0x00, 0x51, 0x35, 0x00, 0x00, ((byte)liftOffDistance) };
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -208,6 +208,7 @@ namespace GHelper.Peripherals
|
||||
DetectMouse(new StrixImpactII());
|
||||
DetectMouse(new Chakram());
|
||||
DetectMouse(new ChakramWired());
|
||||
DetectMouse(new ChakramCore());
|
||||
}
|
||||
|
||||
public static void DetectMouse(AsusMouse am)
|
||||
|
||||
@@ -64,11 +64,12 @@ namespace GHelper
|
||||
|
||||
ProcessHelper.CheckAlreadyRunning();
|
||||
|
||||
try
|
||||
{
|
||||
acpi = new AsusACPI();
|
||||
}
|
||||
catch
|
||||
Logger.WriteLine("------------");
|
||||
Logger.WriteLine("App launched: " + AppConfig.GetModel() + " :" + Assembly.GetExecutingAssembly().GetName().Version.ToString() + CultureInfo.CurrentUICulture + (ProcessHelper.IsUserAdministrator() ? "." : ""));
|
||||
|
||||
acpi = new AsusACPI();
|
||||
|
||||
if (!acpi.IsConnected() && AppConfig.IsASUS())
|
||||
{
|
||||
DialogResult dialogResult = MessageBox.Show(Properties.Strings.ACPIError, Properties.Strings.StartupError, MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
@@ -80,9 +81,6 @@ namespace GHelper
|
||||
return;
|
||||
}
|
||||
|
||||
Logger.WriteLine("------------");
|
||||
Logger.WriteLine("App launched: " + AppConfig.GetModel() + " :" + Assembly.GetExecutingAssembly().GetName().Version.ToString() + CultureInfo.CurrentUICulture + (ProcessHelper.IsUserAdministrator() ? "." : ""));
|
||||
|
||||
Application.EnableVisualStyles();
|
||||
|
||||
HardwareControl.RecreateGpuControl();
|
||||
@@ -119,13 +117,42 @@ namespace GHelper
|
||||
|
||||
if (Environment.CurrentDirectory.Trim('\\') == Application.StartupPath.Trim('\\') || action.Length > 0)
|
||||
{
|
||||
SettingsToggle(action, false);
|
||||
SettingsToggle(false);
|
||||
}
|
||||
|
||||
switch (action)
|
||||
{
|
||||
case "cpu":
|
||||
Startup.ReScheduleAdmin();
|
||||
settingsForm.FansToggle();
|
||||
break;
|
||||
case "gpu":
|
||||
Startup.ReScheduleAdmin();
|
||||
settingsForm.FansToggle(1);
|
||||
break;
|
||||
case "gpurestart":
|
||||
gpuControl.RestartGPU(false);
|
||||
break;
|
||||
case "services":
|
||||
settingsForm.extraForm = new Extra();
|
||||
settingsForm.extraForm.Show();
|
||||
settingsForm.extraForm.ServiesToggle();
|
||||
break;
|
||||
case "uv":
|
||||
Startup.ReScheduleAdmin();
|
||||
settingsForm.FansToggle(2);
|
||||
modeControl.SetRyzen();
|
||||
break;
|
||||
default:
|
||||
Startup.StartupCheck();
|
||||
break;
|
||||
}
|
||||
|
||||
Application.Run();
|
||||
|
||||
}
|
||||
|
||||
|
||||
private static void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
|
||||
{
|
||||
gpuControl.StandardModeFix();
|
||||
@@ -213,7 +240,7 @@ namespace GHelper
|
||||
SetAutoModes(true);
|
||||
}
|
||||
|
||||
public static void SettingsToggle(string action = "", bool checkForFocus = true, bool trayClick = false)
|
||||
public static void SettingsToggle(bool checkForFocus = true, bool trayClick = false)
|
||||
{
|
||||
if (settingsForm.Visible)
|
||||
{
|
||||
@@ -241,34 +268,6 @@ namespace GHelper
|
||||
settingsForm.Top = Screen.FromControl(settingsForm).WorkingArea.Height - 10 - settingsForm.Height;
|
||||
|
||||
settingsForm.VisualiseGPUMode();
|
||||
|
||||
switch (action)
|
||||
{
|
||||
case "cpu":
|
||||
Startup.ReScheduleAdmin();
|
||||
settingsForm.FansToggle();
|
||||
break;
|
||||
case "gpu":
|
||||
Startup.ReScheduleAdmin();
|
||||
settingsForm.FansToggle(1);
|
||||
break;
|
||||
case "gpurestart":
|
||||
gpuControl.RestartGPU(false);
|
||||
break;
|
||||
case "services":
|
||||
settingsForm.extraForm = new Extra();
|
||||
settingsForm.extraForm.Show();
|
||||
settingsForm.extraForm.ServiesToggle();
|
||||
break;
|
||||
case "uv":
|
||||
Startup.ReScheduleAdmin();
|
||||
settingsForm.FansToggle(2);
|
||||
modeControl.SetRyzen();
|
||||
break;
|
||||
default:
|
||||
Startup.StartupCheck();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
18
app/Properties/Resources.Designer.cs
generated
18
app/Properties/Resources.Designer.cs
generated
@@ -111,32 +111,32 @@ namespace GHelper.Properties {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Icon dot_eco {
|
||||
internal static System.Drawing.Bitmap dot_eco {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("dot_eco", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Icon dot_standard {
|
||||
internal static System.Drawing.Bitmap dot_standard {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("dot_standard", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Icon dot_ultimate {
|
||||
internal static System.Drawing.Bitmap dot_ultimate {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("dot_ultimate", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -293,12 +293,12 @@
|
||||
<value>..\Resources\Font.otf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="dot_eco" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\dot-eco.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<value>..\Resources\dot-eco.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="dot_standard" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\dot-standard.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<value>..\Resources\dot-standard.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="dot_ultimate" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\dot-ultimate.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<value>..\Resources\dot-ultimate.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
27
app/Properties/Strings.Designer.cs
generated
27
app/Properties/Strings.Designer.cs
generated
@@ -78,6 +78,24 @@ namespace GHelper.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Restart your device to apply changes.
|
||||
/// </summary>
|
||||
internal static string AlertAPUMemoryRestart {
|
||||
get {
|
||||
return ResourceManager.GetString("AlertAPUMemoryRestart", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Restart now?.
|
||||
/// </summary>
|
||||
internal static string AlertAPUMemoryRestartTitle {
|
||||
get {
|
||||
return ResourceManager.GetString("AlertAPUMemoryRestartTitle", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Looks like GPU is in heavy use, disable it?.
|
||||
/// </summary>
|
||||
@@ -195,6 +213,15 @@ namespace GHelper.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Memory Assigned to GPU.
|
||||
/// </summary>
|
||||
internal static string APUMemory {
|
||||
get {
|
||||
return ResourceManager.GetString("APUMemory", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Asus Services Running.
|
||||
/// </summary>
|
||||
|
||||
@@ -123,6 +123,12 @@
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Verbindung zu ASUS ACPI fehlgeschlagen. G-Helper kann nicht ausgeführt werden. Bitte installiere ASUS System Control Interface.</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestart" xml:space="preserve">
|
||||
<value>Restart your device to apply changes</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
|
||||
<value>Restart now?</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>Die GPU wird gerade verwendet. Trotzdem deaktivieren?</value>
|
||||
</data>
|
||||
@@ -162,6 +168,9 @@
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<value>Windows Leistungsmodus automatisch anpassen</value>
|
||||
</data>
|
||||
<data name="APUMemory" xml:space="preserve">
|
||||
<value>Memory Assigned to GPU</value>
|
||||
</data>
|
||||
<data name="AsusServicesRunning" xml:space="preserve">
|
||||
<value>ASUS Dienste laufen</value>
|
||||
</data>
|
||||
|
||||
@@ -123,6 +123,12 @@
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>No se pudo conectar con ASUS ACPI. La aplicación no puede funcionar sin el recurso. Instale Asus System Control Interface</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestart" xml:space="preserve">
|
||||
<value>Reinicia el dispositivo para aplicar los cambios</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
|
||||
<value>¿Reiniciar ahora?</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>Detectado uso intensivo de la GPU, ¿deshabilitarla?</value>
|
||||
</data>
|
||||
@@ -162,6 +168,9 @@
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<value>Autoajustar plan de energía Windows</value>
|
||||
</data>
|
||||
<data name="APUMemory" xml:space="preserve">
|
||||
<value>Memoria asignada a GPU</value>
|
||||
</data>
|
||||
<data name="AsusServicesRunning" xml:space="preserve">
|
||||
<value>Servicios de Asus en ejecución</value>
|
||||
</data>
|
||||
|
||||
@@ -123,6 +123,12 @@
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Connexion impossible avec ASUS ACPI. L'application ne peut fonctionner sans. Veuillez installer Asus System Control Interface</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestart" xml:space="preserve">
|
||||
<value>Restart your device to apply changes</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
|
||||
<value>Restart now?</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>Le GPU semble être surchargé, voulez vous le désactiver ?</value>
|
||||
</data>
|
||||
@@ -162,6 +168,9 @@
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<value>Ajustement auto des modes de gestion alim. Windows</value>
|
||||
</data>
|
||||
<data name="APUMemory" xml:space="preserve">
|
||||
<value>Memory Assigned to GPU</value>
|
||||
</data>
|
||||
<data name="AsusServicesRunning" xml:space="preserve">
|
||||
<value>Services Asus actifs</value>
|
||||
</data>
|
||||
|
||||
@@ -123,6 +123,12 @@
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Nem sikerült csatlakozni az ASUS ACPI-hez, az alkalmazás nem működik enélkül. Próbáld meg telepíteni az ASUS rendszervezérlő interfész-t</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestart" xml:space="preserve">
|
||||
<value>Restart your device to apply changes</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
|
||||
<value>Restart now?</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>Úgy tűnik használatban van a GPU. Biztosan letiltod?</value>
|
||||
</data>
|
||||
@@ -162,6 +168,9 @@
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<value>A Windows energiagazdálkodási módok automatikus beállítása</value>
|
||||
</data>
|
||||
<data name="APUMemory" xml:space="preserve">
|
||||
<value>Memory Assigned to GPU</value>
|
||||
</data>
|
||||
<data name="AsusServicesRunning" xml:space="preserve">
|
||||
<value>Asus szolgáltatások futnak</value>
|
||||
</data>
|
||||
|
||||
@@ -123,6 +123,12 @@
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Tidak dapat terhubung ke ASUS ACPI. tanpanya aplikasi tidak dapat berfungsi. Cobalah untuk menginstal Asus System Control Interface</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestart" xml:space="preserve">
|
||||
<value>Restart your device to apply changes</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
|
||||
<value>Restart now?</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>Tampaknya GPU sedang digunakan intensif, nonaktifkan?</value>
|
||||
</data>
|
||||
@@ -162,6 +168,9 @@
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<value>Otomatis sesuaikan Mode Daya Windows</value>
|
||||
</data>
|
||||
<data name="APUMemory" xml:space="preserve">
|
||||
<value>Memory Assigned to GPU</value>
|
||||
</data>
|
||||
<data name="AsusServicesRunning" xml:space="preserve">
|
||||
<value>Layanan Asus Berjalan</value>
|
||||
</data>
|
||||
|
||||
@@ -123,6 +123,12 @@
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Impossibile connettersi ad ASUS ACPI. Senza di essa l'applicazione non può funzionare. Prova ad installare Asus System Control Interface</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestart" xml:space="preserve">
|
||||
<value>Restart your device to apply changes</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
|
||||
<value>Restart now?</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>Uso intensivo della GPU, disabilitare?</value>
|
||||
</data>
|
||||
@@ -162,6 +168,9 @@
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<value>Regola Piano Energetico di Windows in automatico</value>
|
||||
</data>
|
||||
<data name="APUMemory" xml:space="preserve">
|
||||
<value>Memory Assigned to GPU</value>
|
||||
</data>
|
||||
<data name="AsusServicesRunning" xml:space="preserve">
|
||||
<value>Servizi Asus in Esecuzione</value>
|
||||
</data>
|
||||
|
||||
@@ -123,6 +123,12 @@
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>ASUS ACPI에 연결할 수 없어 응용 프로그램이 작동하지 않습니다. Asus System Control Interface를 먼저 설치하십시오.</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestart" xml:space="preserve">
|
||||
<value>Restart your device to apply changes</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
|
||||
<value>Restart now?</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>GPU 사용량이 높습니다. 비활성화 하시겠습니까?</value>
|
||||
</data>
|
||||
@@ -162,6 +168,9 @@
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<value>윈도우 전원 모드 자동조절</value>
|
||||
</data>
|
||||
<data name="APUMemory" xml:space="preserve">
|
||||
<value>Memory Assigned to GPU</value>
|
||||
</data>
|
||||
<data name="AsusServicesRunning" xml:space="preserve">
|
||||
<value>실행중인 Asus 서비스</value>
|
||||
</data>
|
||||
|
||||
@@ -123,6 +123,12 @@
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Nepavyko prisijungti prie ASUS ACPI. Programėlė be jo negali veikti. Pabandykite įdiegti Asus System Control Interface</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestart" xml:space="preserve">
|
||||
<value>Restart your device to apply changes</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
|
||||
<value>Restart now?</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>Panašu, kad jūsų GPU yra intensyviai naudojamas. Išjungti jį?</value>
|
||||
</data>
|
||||
@@ -162,6 +168,9 @@
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<value>Automatiškai derinti Windows energijos režimus</value>
|
||||
</data>
|
||||
<data name="APUMemory" xml:space="preserve">
|
||||
<value>Memory Assigned to GPU</value>
|
||||
</data>
|
||||
<data name="AsusServicesRunning" xml:space="preserve">
|
||||
<value>Veikiančios Asus tarnybos</value>
|
||||
</data>
|
||||
|
||||
@@ -123,6 +123,12 @@
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Nie można odnaleźć sterownika ASUS ACPI. Aplikacja nie może bez niego funkcjonować. Spróbuj zainstalować Asus System Control Interface</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestart" xml:space="preserve">
|
||||
<value>Uruchom ponownie, aby zastosować ustawienia</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
|
||||
<value>Uruchomić ponownie teraz?</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>Wygląda na to, że GPU jest mocno obciążone. Wyłączyć?</value>
|
||||
</data>
|
||||
@@ -162,6 +168,9 @@
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<value>Dostosuj systemowy Tryb Zasilania</value>
|
||||
</data>
|
||||
<data name="APUMemory" xml:space="preserve">
|
||||
<value>Pamięć przypisana do GPU</value>
|
||||
</data>
|
||||
<data name="AsusServicesRunning" xml:space="preserve">
|
||||
<value>Uruchomione usługi Asus</value>
|
||||
</data>
|
||||
|
||||
@@ -123,6 +123,12 @@
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Não foi possível conectar ao ASUS ACPI. O aplicativo não pode funcionar sem isso. Tente instalar Asus System Controle Interface</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestart" xml:space="preserve">
|
||||
<value>Restart your device to apply changes</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
|
||||
<value>Restart now?</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>Parece que o GPU está em uso pesado.</value>
|
||||
</data>
|
||||
@@ -162,6 +168,9 @@
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<value>Ajuste automático dos modos de energia do Windows</value>
|
||||
</data>
|
||||
<data name="APUMemory" xml:space="preserve">
|
||||
<value>Memory Assigned to GPU</value>
|
||||
</data>
|
||||
<data name="AsusServicesRunning" xml:space="preserve">
|
||||
<value>Serviços da Asus em execução</value>
|
||||
</data>
|
||||
|
||||
@@ -123,6 +123,12 @@
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Não foi possível conectar ao ASUS ACPI. O programa não funciona sem esse serviço. Tente instalar Asus System Control Interface</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestart" xml:space="preserve">
|
||||
<value>Restart your device to apply changes</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
|
||||
<value>Restart now?</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>Parece que o GPU está em uso pesado, desativá-lo?</value>
|
||||
</data>
|
||||
@@ -162,6 +168,9 @@
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<value>Ajuste automático dos modos de energia do Windows</value>
|
||||
</data>
|
||||
<data name="APUMemory" xml:space="preserve">
|
||||
<value>Memory Assigned to GPU</value>
|
||||
</data>
|
||||
<data name="AsusServicesRunning" xml:space="preserve">
|
||||
<value>Serviços da Asus em execução</value>
|
||||
</data>
|
||||
@@ -253,7 +262,7 @@
|
||||
<value>Estado da bateria</value>
|
||||
</data>
|
||||
<data name="BatteryLimitFull" xml:space="preserve">
|
||||
<value>One time charge to 100%</value>
|
||||
<value>Carregamento único até 100%</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>Atualizações de Drivers e da BIOS</value>
|
||||
@@ -262,7 +271,7 @@
|
||||
<value>Ao ligar</value>
|
||||
</data>
|
||||
<data name="BootSound" xml:space="preserve">
|
||||
<value>Boot Sound</value>
|
||||
<value>Som de ligar</value>
|
||||
</data>
|
||||
<data name="Brightness" xml:space="preserve">
|
||||
<value>Nível do brilho</value>
|
||||
@@ -274,7 +283,7 @@
|
||||
<value>Aumentar o brilho</value>
|
||||
</data>
|
||||
<data name="Calibrate" xml:space="preserve">
|
||||
<value>Calibrate</value>
|
||||
<value>Calibrar</value>
|
||||
</data>
|
||||
<data name="Charging" xml:space="preserve">
|
||||
<value>Carregando</value>
|
||||
|
||||
@@ -123,6 +123,12 @@
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Can't connect to ASUS ACPI. Application can't function without it. Try to install Asus System Control Interface</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestart" xml:space="preserve">
|
||||
<value>Restart your device to apply changes</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
|
||||
<value>Restart now?</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>Looks like GPU is in heavy use, disable it?</value>
|
||||
</data>
|
||||
@@ -162,6 +168,9 @@
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<value>Auto adjust Windows Power Modes</value>
|
||||
</data>
|
||||
<data name="APUMemory" xml:space="preserve">
|
||||
<value>Memory Assigned to GPU</value>
|
||||
</data>
|
||||
<data name="AsusServicesRunning" xml:space="preserve">
|
||||
<value>Asus Services Running</value>
|
||||
</data>
|
||||
|
||||
@@ -123,6 +123,12 @@
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Nu se poate conecta la ASUS ACPI. Aplicația nu poate funcționa fără aceasta. Încercați să instalați Asus System Control Interface</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestart" xml:space="preserve">
|
||||
<value>Restart your device to apply changes</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
|
||||
<value>Restart now?</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>Se pare că GPU-ul este folosit intens, dezactivați?</value>
|
||||
</data>
|
||||
@@ -162,6 +168,9 @@
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<value>Reglare automată a modului de alimentare Windows</value>
|
||||
</data>
|
||||
<data name="APUMemory" xml:space="preserve">
|
||||
<value>Memory Assigned to GPU</value>
|
||||
</data>
|
||||
<data name="AsusServicesRunning" xml:space="preserve">
|
||||
<value>Servicii Asus în derulare</value>
|
||||
</data>
|
||||
|
||||
@@ -123,6 +123,12 @@
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>ASUS ACPI'ye bağlanılamıyor. Uygulama o olmadan çalışamaz. Asus Sistem Kontrol Arayüzü'nü yüklemeyi deneyin.</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestart" xml:space="preserve">
|
||||
<value>Restart your device to apply changes</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
|
||||
<value>Restart now?</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>Görünüşe göre GPU yoğun bir şekilde kullanılıyor, devre dışı bırakılsın mı?</value>
|
||||
</data>
|
||||
@@ -162,6 +168,9 @@
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<value>Windows Güç Modunu otomatik ayarla</value>
|
||||
</data>
|
||||
<data name="APUMemory" xml:space="preserve">
|
||||
<value>Memory Assigned to GPU</value>
|
||||
</data>
|
||||
<data name="AsusServicesRunning" xml:space="preserve">
|
||||
<value>Çalışan Asus Hizmetleri</value>
|
||||
</data>
|
||||
|
||||
@@ -123,6 +123,12 @@
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Не вдається під'єднатися до ASUS ACPI. Програма не може працювати без нього. Спробуйте встановити Asus System Control Interface</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestart" xml:space="preserve">
|
||||
<value>Restart your device to apply changes</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
|
||||
<value>Restart now?</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>Здається, що GPU використовується, вимкнути її?</value>
|
||||
</data>
|
||||
@@ -162,6 +168,9 @@
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<value>Автоматично застосовувати Windows Power Modes</value>
|
||||
</data>
|
||||
<data name="APUMemory" xml:space="preserve">
|
||||
<value>Memory Assigned to GPU</value>
|
||||
</data>
|
||||
<data name="AsusServicesRunning" xml:space="preserve">
|
||||
<value>Кількість запущених сервісів Asus</value>
|
||||
</data>
|
||||
|
||||
@@ -123,6 +123,12 @@
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Không thể kết nối đến ASUS ACPI. Chương trình cần nó để có thể hoạt động. Hãy thử cài lại Asus System Control Interface</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestart" xml:space="preserve">
|
||||
<value>Restart your device to apply changes</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
|
||||
<value>Restart now?</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>Có vẻ như GPU rời đang được sử dụng nhiều, tắt nó?</value>
|
||||
</data>
|
||||
@@ -162,6 +168,9 @@
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<value>Tự động điều chỉnh Kế hoạch nguồn của Windows</value>
|
||||
</data>
|
||||
<data name="APUMemory" xml:space="preserve">
|
||||
<value>Memory Assigned to GPU</value>
|
||||
</data>
|
||||
<data name="AsusServicesRunning" xml:space="preserve">
|
||||
<value>Dịch vụ Asus đang chạy</value>
|
||||
</data>
|
||||
|
||||
@@ -123,6 +123,12 @@
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>无法连接到ASUS ACPI。 没有它应用程序将无法运行。 请尝试安装Asus System Control Interface驱动。</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestart" xml:space="preserve">
|
||||
<value>Restart your device to apply changes</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
|
||||
<value>Restart now?</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>看起来 GPU 正在被重度使用,是否禁用?</value>
|
||||
</data>
|
||||
@@ -162,6 +168,9 @@
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<value>自动调整Windows电源模式</value>
|
||||
</data>
|
||||
<data name="APUMemory" xml:space="preserve">
|
||||
<value>Memory Assigned to GPU</value>
|
||||
</data>
|
||||
<data name="AsusServicesRunning" xml:space="preserve">
|
||||
<value>正在运行的 Asus 服务</value>
|
||||
</data>
|
||||
|
||||
@@ -123,6 +123,12 @@
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>無法連結到華碩 ACPI。 没有它,應用程式將無法執行。 嘗試安裝Asus System Control Interface</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestart" xml:space="preserve">
|
||||
<value>Restart your device to apply changes</value>
|
||||
</data>
|
||||
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
|
||||
<value>Restart now?</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>看起来 GPU 正在大量使用,是否禁用它?</value>
|
||||
</data>
|
||||
@@ -162,6 +168,9 @@
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<value>自動調整Windows電源模式</value>
|
||||
</data>
|
||||
<data name="APUMemory" xml:space="preserve">
|
||||
<value>Memory Assigned to GPU</value>
|
||||
</data>
|
||||
<data name="AsusServicesRunning" xml:space="preserve">
|
||||
<value>執行中的華碩服務</value>
|
||||
</data>
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 17 KiB |
BIN
app/Resources/dot-eco.png
Normal file
BIN
app/Resources/dot-eco.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 730 B |
Binary file not shown.
|
Before Width: | Height: | Size: 17 KiB |
BIN
app/Resources/dot-standard.png
Normal file
BIN
app/Resources/dot-standard.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 735 B |
Binary file not shown.
|
Before Width: | Height: | Size: 17 KiB |
BIN
app/Resources/dot-ultimate.png
Normal file
BIN
app/Resources/dot-ultimate.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 551 B |
9
app/Settings.Designer.cs
generated
9
app/Settings.Designer.cs
generated
@@ -206,10 +206,10 @@ namespace GHelper
|
||||
comboMatrixRunning.FormattingEnabled = true;
|
||||
comboMatrixRunning.ItemHeight = 32;
|
||||
comboMatrixRunning.Items.AddRange(new object[] { Properties.Strings.MatrixBanner, Properties.Strings.MatrixLogo, Properties.Strings.MatrixPicture, Properties.Strings.MatrixClock, Properties.Strings.MatrixAudio });
|
||||
comboMatrixRunning.Location = new Point(266, 11);
|
||||
comboMatrixRunning.Margin = new Padding(4, 11, 4, 8);
|
||||
comboMatrixRunning.Location = new Point(269, 11);
|
||||
comboMatrixRunning.Margin = new Padding(7, 11, 7, 8);
|
||||
comboMatrixRunning.Name = "comboMatrixRunning";
|
||||
comboMatrixRunning.Size = new Size(254, 40);
|
||||
comboMatrixRunning.Size = new Size(248, 40);
|
||||
comboMatrixRunning.TabIndex = 17;
|
||||
//
|
||||
// buttonMatrix
|
||||
@@ -1439,7 +1439,6 @@ namespace GHelper
|
||||
MinimumSize = new Size(822, 71);
|
||||
Name = "SettingsForm";
|
||||
Padding = new Padding(11);
|
||||
ShowIcon = false;
|
||||
StartPosition = FormStartPosition.CenterScreen;
|
||||
Text = "G-Helper";
|
||||
panelMatrix.ResumeLayout(false);
|
||||
@@ -1574,4 +1573,4 @@ namespace GHelper
|
||||
private RButton buttonFnLock;
|
||||
private RButton buttonBatteryFull;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,14 +16,12 @@ using System.Timers;
|
||||
|
||||
namespace GHelper
|
||||
{
|
||||
|
||||
public partial class SettingsForm : RForm
|
||||
{
|
||||
|
||||
ContextMenuStrip contextMenuStrip = new CustomContextMenu();
|
||||
ToolStripMenuItem menuSilent, menuBalanced, menuTurbo, menuEco, menuStandard, menuUltimate, menuOptimized;
|
||||
|
||||
GPUModeControl gpuControl;
|
||||
public GPUModeControl gpuControl;
|
||||
ScreenControl screenControl = new ScreenControl();
|
||||
AutoUpdateControl updateControl;
|
||||
|
||||
@@ -1151,7 +1149,6 @@ namespace GHelper
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public void VisualiseGPUMode(int GPUMode = -1)
|
||||
{
|
||||
ButtonEnabled(buttonOptimized, true);
|
||||
@@ -1177,13 +1174,13 @@ namespace GHelper
|
||||
buttonOptimized.Activated = GPUAuto;
|
||||
labelGPU.Text = Properties.Strings.GPUMode + ": " + Properties.Strings.GPUModeEco;
|
||||
Program.trayIcon.Icon = Properties.Resources.eco;
|
||||
Icon = Properties.Resources.dot_eco;
|
||||
IconHelper.SetIcon(this, Properties.Resources.dot_eco);
|
||||
break;
|
||||
case AsusACPI.GPUModeUltimate:
|
||||
buttonUltimate.Activated = true;
|
||||
labelGPU.Text = Properties.Strings.GPUMode + ": " + Properties.Strings.GPUModeUltimate;
|
||||
Program.trayIcon.Icon = Properties.Resources.ultimate;
|
||||
Icon = Properties.Resources.dot_ultimate;
|
||||
IconHelper.SetIcon(this, Properties.Resources.dot_ultimate);
|
||||
break;
|
||||
default:
|
||||
buttonOptimized.BorderColor = colorStandard;
|
||||
@@ -1191,7 +1188,7 @@ namespace GHelper
|
||||
buttonOptimized.Activated = GPUAuto;
|
||||
labelGPU.Text = Properties.Strings.GPUMode + ": " + Properties.Strings.GPUModeStandard;
|
||||
Program.trayIcon.Icon = Properties.Resources.standard;
|
||||
Icon = Properties.Resources.dot_standard;
|
||||
IconHelper.SetIcon(this, Properties.Resources.dot_standard);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
31
app/UI/IconHelper.cs
Normal file
31
app/UI/IconHelper.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
using System.Diagnostics;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace GHelper.UI
|
||||
{
|
||||
public class IconHelper
|
||||
{
|
||||
|
||||
[DllImport("user32.dll", CharSet = CharSet.Auto)]
|
||||
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
|
||||
|
||||
private const uint WM_SETICON = 0x80u;
|
||||
private const int ICON_SMALL = 0;
|
||||
private const int ICON_BIG = 1;
|
||||
|
||||
|
||||
public static void SetIcon(Form form, Bitmap icon)
|
||||
{
|
||||
try
|
||||
{
|
||||
SendMessage(form.Handle, WM_SETICON, ICON_BIG, Icon.ExtractAssociatedIcon(Application.ExecutablePath)!.Handle);
|
||||
SendMessage(form.Handle, WM_SETICON, ICON_SMALL, icon.GetHicon());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine($"Error setting icon {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -12,66 +12,96 @@ public static class AsusHid
|
||||
|
||||
static int[] deviceIds = { 0x1a30, 0x1854, 0x1869, 0x1866, 0x19b6, 0x1822, 0x1837, 0x1854, 0x184a, 0x183d, 0x8502, 0x1807, 0x17e0, 0x18c6, 0x1abe };
|
||||
|
||||
static HidStream auraStream;
|
||||
static HidStream? auraStream;
|
||||
|
||||
public static HidStream FindHidStream(byte reportId, int minFeatureLength = 1)
|
||||
public static IEnumerable<HidDevice>? FindDevices(byte reportId)
|
||||
{
|
||||
HidDeviceLoader loader = new HidDeviceLoader();
|
||||
IEnumerable<HidDevice> deviceList;
|
||||
|
||||
try
|
||||
{
|
||||
var deviceList = loader.GetDevices(ASUS_ID).Where(device => deviceIds.Contains(device.ProductID) && device.CanOpen);
|
||||
foreach (var device in deviceList)
|
||||
{
|
||||
var config = new OpenConfiguration();
|
||||
config.SetOption(OpenOption.Interruptible, false);
|
||||
config.SetOption(OpenOption.Exclusive, false);
|
||||
config.SetOption(OpenOption.Priority, 10);
|
||||
HidStream hidStream = device.Open();
|
||||
|
||||
if (device.GetMaxFeatureReportLength() >= minFeatureLength)
|
||||
{
|
||||
var reportDescriptor = device.GetReportDescriptor();
|
||||
if (reportDescriptor.TryGetReport(ReportType.Feature, reportId, out _))
|
||||
{
|
||||
return hidStream;
|
||||
}
|
||||
}
|
||||
|
||||
hidStream.Close();
|
||||
hidStream.Dispose();
|
||||
}
|
||||
deviceList = loader.GetDevices(ASUS_ID).Where(device => deviceIds.Contains(device.ProductID) && device.CanOpen && device.GetMaxFeatureReportLength() > 0);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine($"Error accessing HID device: {ex.Message}");
|
||||
Logger.WriteLine($"Error enumerating HID devices: {ex.Message}");
|
||||
yield break;
|
||||
}
|
||||
|
||||
foreach (var device in deviceList)
|
||||
if (device.GetReportDescriptor().TryGetReport(ReportType.Feature, reportId, out _))
|
||||
yield return device;
|
||||
}
|
||||
|
||||
public static HidStream? FindHidStream(byte reportId)
|
||||
{
|
||||
try
|
||||
{
|
||||
var devices = FindDevices(reportId);
|
||||
if (devices is null) return null;
|
||||
|
||||
if (AppConfig.IsZ13())
|
||||
{
|
||||
var z13 = devices.Where(device => device.ProductID == 0x1a30).FirstOrDefault();
|
||||
if (z13 is not null) return z13.Open();
|
||||
}
|
||||
|
||||
return devices.FirstOrDefault()?.Open();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine($"Error accessing HID device: {ex.Message}");
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
static void WriteData(HidStream stream, byte[] data, string log = "USB")
|
||||
public static void WriteInput(byte[] data, string log = "USB")
|
||||
{
|
||||
try
|
||||
foreach (var device in FindDevices(INPUT_ID))
|
||||
{
|
||||
stream.Write(data);
|
||||
Logger.WriteLine($"{log} " + stream.Device.ProductID + ": " + BitConverter.ToString(data));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine($"Error writing {log} to HID device: {ex.Message} {BitConverter.ToString(data)}");
|
||||
try
|
||||
{
|
||||
using (var stream = device.Open())
|
||||
{
|
||||
var payload = new byte[device.GetMaxFeatureReportLength()];
|
||||
Array.Copy(data, payload, data.Length);
|
||||
stream.SetFeature(payload);
|
||||
Logger.WriteLine($"{log} Feature {device.ProductID.ToString("X")}|{device.GetMaxFeatureReportLength()}: {BitConverter.ToString(data)}");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine($"Error setting feature {device.GetMaxFeatureReportLength()} {device.DevicePath}: {BitConverter.ToString(data)} {ex.Message}");
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void Write(byte[] data, byte reportId = AURA_ID, string log = "USB")
|
||||
public static void Write(byte[] data, string log = "USB")
|
||||
{
|
||||
using (var stream = FindHidStream(reportId))
|
||||
WriteData(stream, data, log);
|
||||
Write(new List<byte[]> { data }, log);
|
||||
}
|
||||
public static void Write(List<byte[]> dataList, byte reportId = AURA_ID)
|
||||
|
||||
public static void Write(List<byte[]> dataList, string log = "USB")
|
||||
{
|
||||
using (var stream = FindHidStream(reportId))
|
||||
foreach (var data in dataList)
|
||||
WriteData(stream, data);
|
||||
var devices = FindDevices(AURA_ID);
|
||||
if (devices is null) return;
|
||||
|
||||
foreach (var device in devices)
|
||||
using (var stream = device.Open())
|
||||
foreach (var data in dataList)
|
||||
try
|
||||
{
|
||||
stream.Write(data);
|
||||
Logger.WriteLine($"{log} {device.ProductID.ToString("X")}: {BitConverter.ToString(data)}");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine($"Error writing {log} {device.ProductID.ToString("X")}: {ex.Message} {BitConverter.ToString(data)} ");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void WriteAura(byte[] data)
|
||||
@@ -87,7 +117,7 @@ public static class AsusHid
|
||||
catch (Exception ex)
|
||||
{
|
||||
auraStream.Dispose();
|
||||
Debug.WriteLine($"Error writing data to HID device: {ex.Message}");
|
||||
Debug.WriteLine($"Error writing data to HID device: {ex.Message} {BitConverter.ToString(data)}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
220
app/USB/Aura.cs
220
app/USB/Aura.cs
@@ -68,7 +68,7 @@ namespace GHelper.USB
|
||||
static byte[] MESSAGE_APPLY = { AsusHid.AURA_ID, 0xb4 };
|
||||
static byte[] MESSAGE_SET = { AsusHid.AURA_ID, 0xb5, 0, 0, 0 };
|
||||
|
||||
static readonly int AURA_ZONES = 0x12;
|
||||
static readonly int AURA_ZONES = 8;
|
||||
|
||||
private static AuraMode mode = AuraMode.AuraStatic;
|
||||
private static AuraSpeed speed = AuraSpeed.Normal;
|
||||
@@ -79,6 +79,9 @@ namespace GHelper.USB
|
||||
static bool isACPI = AppConfig.IsTUF() || AppConfig.IsVivobook();
|
||||
static bool isStrix = AppConfig.IsStrix();
|
||||
|
||||
static bool isStrix4Zone = AppConfig.IsStrixLimitedRGB();
|
||||
static bool isStrixNumpad = AppConfig.IsStrixNumpad();
|
||||
|
||||
static public bool isSingleColor = false;
|
||||
|
||||
static bool isOldHeatmap = AppConfig.Is("old_heatmap");
|
||||
@@ -128,12 +131,12 @@ namespace GHelper.USB
|
||||
isSingleColor = AppConfig.IsSingleColor(); // Mono Color
|
||||
|
||||
if (AppConfig.ContainsModel("GA402X") || AppConfig.ContainsModel("GA402N"))
|
||||
using (var stream = AsusHid.FindHidStream(AsusHid.AURA_ID))
|
||||
{
|
||||
if (stream is null) return;
|
||||
if (stream.Device.ReleaseNumberBcd == 22 || stream.Device.ReleaseNumberBcd == 23) isSingleColor = true;
|
||||
stream.Close();
|
||||
}
|
||||
{
|
||||
var device = AsusHid.FindDevices(AsusHid.AURA_ID).FirstOrDefault();
|
||||
if (device is null) return;
|
||||
Logger.WriteLine($"GA402: {device.ReleaseNumberBcd} {device.ReleaseNumber}");
|
||||
if (device.ReleaseNumberBcd >= 22 && device.ReleaseNumberBcd <= 25) isSingleColor = true;
|
||||
}
|
||||
}
|
||||
|
||||
public static Dictionary<AuraSpeed, string> GetSpeeds()
|
||||
@@ -250,8 +253,8 @@ namespace GHelper.USB
|
||||
new byte[] { AsusHid.AURA_ID, 0xb9 },
|
||||
Encoding.ASCII.GetBytes("]ASUS Tech.Inc."),
|
||||
new byte[] { AsusHid.AURA_ID, 0x05, 0x20, 0x31, 0, 0x1a },
|
||||
Encoding.ASCII.GetBytes("^ASUS Tech.Inc."),
|
||||
new byte[] { 0x5e, 0x05, 0x20, 0x31, 0, 0x1a }
|
||||
//Encoding.ASCII.GetBytes("^ASUS Tech.Inc."),
|
||||
//new byte[] { 0x5e, 0x05, 0x20, 0x31, 0, 0x1a }
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -264,9 +267,9 @@ namespace GHelper.USB
|
||||
if (delay) await Task.Delay(TimeSpan.FromSeconds(1));
|
||||
if (isACPI) Program.acpi.TUFKeyboardBrightness(brightness);
|
||||
|
||||
AsusHid.Write(new byte[] { AsusHid.AURA_ID, 0xba, 0xc5, 0xc4, (byte)brightness }, AsusHid.AURA_ID, log);
|
||||
AsusHid.Write(new byte[] { AsusHid.AURA_ID, 0xba, 0xc5, 0xc4, (byte)brightness }, log);
|
||||
if (AppConfig.ContainsModel("GA503"))
|
||||
AsusHid.Write(new byte[] { AsusHid.INPUT_ID, 0xba, 0xc5, 0xc4, (byte)brightness }, AsusHid.INPUT_ID, log);
|
||||
AsusHid.WriteInput(new byte[] { AsusHid.INPUT_ID, 0xba, 0xc5, 0xc4, (byte)brightness }, log);
|
||||
});
|
||||
|
||||
|
||||
@@ -359,28 +362,106 @@ namespace GHelper.USB
|
||||
|
||||
}
|
||||
|
||||
public static void ApplyColorStrix(Color[] color, bool init = false)
|
||||
static byte[] packetMap = new byte[]
|
||||
{
|
||||
byte[] msg = new byte[0x40];
|
||||
/* VDN VUP MICM HPFN ARMC */
|
||||
2, 3, 4, 5, 6,
|
||||
/* ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 DEL15 DEL17 PAUS PRT HOME */
|
||||
21, 23, 24, 25, 26, 28, 29, 30, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41,
|
||||
/* BKTK 1 2 3 4 5 6 7 8 9 0 - = BSPC BSPC BSPC PLY15 NMLK NMDV NMTM NMMI */
|
||||
42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
|
||||
/* TAB Q W E R T Y U I O P [ ] \ STP15 NM7 NM8 NM9 NMPL */
|
||||
63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 79, 80, 81, 82, 83,
|
||||
/* CPLK A S D F G H J K L ; " # ENTR ENTR ENTR PRV15 NM4 NM5 NM6 NMPL */
|
||||
84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
|
||||
/* LSFT ISO\ Z X C V B N M , . / RSFT RSFT RSFT ARWU NXT15 NM1 NM2 NM3 NMER */
|
||||
105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 139, 121, 122, 123, 124, 125,
|
||||
/* LCTL LFNC LWIN LALT SPC RALT RFNC RCTL ARWL ARWD ARWR PRT15 NM0 NMPD NMER */
|
||||
126, 127, 128, 129, 131, 135, 136, 137, 159, 160, 161, 142, 144, 145, 146,
|
||||
/* LB1 LB2 LB3 LB4 LB5 LB6 */
|
||||
174, 173, 172, 171, 170, 169,
|
||||
/* KSTN LOGO LIDL LIDR */
|
||||
0, 167, 176, 177,
|
||||
|
||||
byte start = 9;
|
||||
byte maxLeds = 0x93;
|
||||
};
|
||||
|
||||
msg[0] = AsusHid.AURA_ID;
|
||||
msg[1] = 0xbc;
|
||||
msg[2] = 0;
|
||||
msg[3] = 1;
|
||||
msg[4] = 1;
|
||||
msg[5] = 1;
|
||||
msg[6] = 0;
|
||||
msg[7] = 0x10;
|
||||
|
||||
for (byte i = 0; i < AURA_ZONES; i++)
|
||||
{
|
||||
msg[start + i * 3] = color[i].R; // R
|
||||
msg[start + 1 + i * 3] = color[i].G; // G
|
||||
msg[start + 2 + i * 3] = color[i].B; // B
|
||||
}
|
||||
static byte[] packetZone = new byte[]
|
||||
{
|
||||
/* VDN VUP MICM HPFN ARMC */
|
||||
0, 0, 1, 1, 1,
|
||||
/* ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 DEL15 DEL17 PAUS PRT HOM */
|
||||
0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3,
|
||||
/* BKTK 1 2 3 4 5 6 7 8 9 0 - = BSPC BSPC BSPC PLY15 NMLK NMDV NMTM NMMI */
|
||||
0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
||||
/* TAB Q W E R T Y U I O P [ ] \ STP15 NM7 NM8 NM9 NMPL */
|
||||
0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3,
|
||||
/* CPLK A S D F G H J K L ; " # ENTR ENTR ENTR PRV15 NM4 NM5 NM6 NMPL */
|
||||
0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
||||
/* LSFT ISO\ Z X C V B N M , . / RSFT RSFT RSFT ARWU NXT15 NM1 NM2 NM3 NMER */
|
||||
0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
||||
/* LCTL LFNC LWIN LALT SPC RALT RFNC RCTL ARWL ARWD ARWR PRT15 NM0 NMPD NMER */
|
||||
0, 0, 0, 0, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3,
|
||||
/* LB1 LB1 LB3 LB4 LB5 LB6 */
|
||||
5, 5, 4, 6, 7, 7,
|
||||
/* KSTN LOGO LIDL LIDR */
|
||||
3, 0, 0, 3,
|
||||
|
||||
};
|
||||
|
||||
|
||||
static byte[] packetZoneNumpad = new byte[]
|
||||
{
|
||||
/* VDN VUP MICM HPFN ARMC */
|
||||
0, 0, 0, 1, 1,
|
||||
/* ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 DEL15 DEL17 PAUS PRT HOM */
|
||||
0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3,
|
||||
/* BKTK 1 2 3 4 5 6 7 8 9 0 - = BSPC BSPC BSPC PLY15 NMLK NMDV NMTM NMMI */
|
||||
0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
|
||||
/* TAB Q W E R T Y U I O P [ ] \ STP15 NM7 NM8 NM9 NMPL */
|
||||
0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3,
|
||||
/* CPLK A S D F G H J K L ; " # ENTR ENTR ENTR PRV15 NM4 NM5 NM6 NMPL */
|
||||
0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
|
||||
/* LSFT ISO\ Z X C V B N M , . / RSFT RSFT RSFT ARWU NXT15 NM1 NM2 NM3 NMER */
|
||||
0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
|
||||
/* LCTL LFNC LWIN LALT SPC RALT RFNC RCTL ARWL ARWD ARWR PRT15 NM0 NMPD NMER */
|
||||
0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3,
|
||||
/* LB1 LB1 LB3 LB4 LB5 LB6 */
|
||||
5, 5, 4, 6, 7, 7,
|
||||
/* KSTN LOGO LIDL LIDR */
|
||||
3, 0, 0, 3,
|
||||
|
||||
};
|
||||
|
||||
static byte[] packet4Zone = new byte[]
|
||||
{
|
||||
/*01 Z1 Z2 Z3 Z4 NA NA KeyZone */
|
||||
0, 1, 2, 3, 0, 0,
|
||||
|
||||
/*02 RR R RM LM L LL LighBar */
|
||||
7, 7, 6, 5, 4, 4,
|
||||
|
||||
};
|
||||
|
||||
|
||||
public static void ApplyDirect(Color[] color, bool init = false)
|
||||
{
|
||||
const byte keySet = 167;
|
||||
const byte ledCount = 178;
|
||||
const ushort mapSize = 3 * ledCount;
|
||||
const byte ledsPerPacket = 16;
|
||||
|
||||
byte[] buffer = new byte[64];
|
||||
byte[] keyBuf = new byte[mapSize];
|
||||
|
||||
buffer[0] = AsusHid.AURA_ID;
|
||||
buffer[1] = 0xbc;
|
||||
buffer[2] = 0;
|
||||
buffer[3] = 1;
|
||||
buffer[4] = 1;
|
||||
buffer[5] = 1;
|
||||
buffer[6] = 0;
|
||||
buffer[7] = 0x10;
|
||||
|
||||
if (init)
|
||||
{
|
||||
@@ -388,22 +469,59 @@ namespace GHelper.USB
|
||||
AsusHid.WriteAura(new byte[] { AsusHid.AURA_ID, 0xbc });
|
||||
}
|
||||
|
||||
for (byte b = 0; b < maxLeds; b += 0x10)
|
||||
Array.Clear(keyBuf, 0, keyBuf.Length);
|
||||
|
||||
if (!isStrix4Zone) // per key
|
||||
{
|
||||
msg[6] = b;
|
||||
AsusHid.WriteAura(msg);
|
||||
for (int ledIndex = 0; ledIndex < packetMap.Count(); ledIndex++)
|
||||
{
|
||||
ushort offset = (ushort)(3 * packetMap[ledIndex]);
|
||||
byte zone = isStrixNumpad ? packetZoneNumpad[ledIndex] : packetZone[ledIndex];
|
||||
|
||||
keyBuf[offset] = color[zone].R;
|
||||
keyBuf[offset + 1] = color[zone].G;
|
||||
keyBuf[offset + 2] = color[zone].B;
|
||||
}
|
||||
|
||||
for (int i = 0; i < keySet; i += ledsPerPacket)
|
||||
{
|
||||
byte ledsRemaining = (byte)(keySet - i);
|
||||
|
||||
if (ledsRemaining < ledsPerPacket)
|
||||
{
|
||||
buffer[7] = ledsRemaining;
|
||||
}
|
||||
|
||||
buffer[6] = (byte)i;
|
||||
Buffer.BlockCopy(keyBuf, 3 * i, buffer, 9, 3 * buffer[7]);
|
||||
AsusHid.WriteAura(buffer);
|
||||
}
|
||||
}
|
||||
|
||||
msg[6] = maxLeds;
|
||||
AsusHid.WriteAura(msg);
|
||||
buffer[4] = 0x04;
|
||||
buffer[5] = 0x00;
|
||||
buffer[6] = 0x00;
|
||||
buffer[7] = 0x00;
|
||||
|
||||
msg[4] = 4;
|
||||
msg[5] = 0;
|
||||
msg[6] = 0;
|
||||
msg[7] = 0;
|
||||
AsusHid.WriteAura(msg);
|
||||
if (isStrix4Zone) { // per zone
|
||||
var leds_4_zone = packet4Zone.Count();
|
||||
for (int ledIndex = 0; ledIndex < leds_4_zone; ledIndex++)
|
||||
{
|
||||
byte zone = packet4Zone[ledIndex];
|
||||
keyBuf[ledIndex * 3] = color[zone].R;
|
||||
keyBuf[ledIndex * 3 + 1] = color[zone].G;
|
||||
keyBuf[ledIndex * 3 + 2] = color[zone].B;
|
||||
}
|
||||
Buffer.BlockCopy(keyBuf, 0, buffer, 9, 3 * leds_4_zone);
|
||||
AsusHid.WriteAura(buffer);
|
||||
return;
|
||||
}
|
||||
|
||||
Buffer.BlockCopy(keyBuf, 3 * keySet, buffer, 9, 3 * (ledCount - keySet));
|
||||
AsusHid.WriteAura(buffer);
|
||||
}
|
||||
|
||||
|
||||
public static void ApplyColor(Color color, bool init = false)
|
||||
{
|
||||
|
||||
@@ -415,7 +533,7 @@ namespace GHelper.USB
|
||||
|
||||
if (isStrix && !isOldHeatmap)
|
||||
{
|
||||
ApplyColorStrix(Enumerable.Repeat(color, AURA_ZONES).ToArray(), init);
|
||||
ApplyDirect(Enumerable.Repeat(color, AURA_ZONES).ToArray(), init);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -449,7 +567,7 @@ namespace GHelper.USB
|
||||
{
|
||||
CustomRGB.ApplyAmbient(true);
|
||||
timer.Enabled = true;
|
||||
timer.Interval = 120;
|
||||
timer.Interval = 100;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -514,25 +632,21 @@ namespace GHelper.USB
|
||||
bound.Y += bound.Height / 3;
|
||||
bound.Height -= (int)Math.Round(bound.Height * (0.33f + 0.022f)); // cut 1/3 of the top screen + windows panel
|
||||
|
||||
var screen_low = AmbientData.CamptureScreen(bound, 256, 144);
|
||||
Bitmap screen_low = screen_low = AmbientData.CamptureScreen(bound, 512, 288); //quality decreases greatly if it is less 512 ;
|
||||
Bitmap screeb_pxl;
|
||||
|
||||
int zones = AURA_ZONES;
|
||||
|
||||
if (isStrix) //laptop with lightbar
|
||||
if (isStrix) // laptop with lightbar
|
||||
{
|
||||
screeb_pxl = AmbientData.ResizeImage(screen_low, 4, 2); // 4x2 zone. top for keyboard and bot for lightbar
|
||||
screeb_pxl = AmbientData.ResizeImage(screen_low, 4, 2); // 4x2 zone. top for keyboard and bot for lightbar
|
||||
var mid_left = ColorUtils.GetMidColor(screeb_pxl.GetPixel(0, 1), screeb_pxl.GetPixel(1, 1));
|
||||
var mid_right = ColorUtils.GetMidColor(screeb_pxl.GetPixel(2, 1), screeb_pxl.GetPixel(3, 1));
|
||||
|
||||
AmbientData.Colors[6].RGB = ColorUtils.HSV.UpSaturation(screeb_pxl.GetPixel(3, 1)); // right bck
|
||||
AmbientData.Colors[11].RGB = ColorUtils.HSV.UpSaturation(screeb_pxl.GetPixel(1, 1)); // left bck
|
||||
|
||||
AmbientData.Colors[7].RGB = AmbientData.Colors[6].RGB; // right
|
||||
AmbientData.Colors[10].RGB = AmbientData.Colors[11].RGB; // left
|
||||
|
||||
AmbientData.Colors[8].RGB = ColorUtils.HSV.UpSaturation(mid_right); // center right
|
||||
AmbientData.Colors[9].RGB = ColorUtils.HSV.UpSaturation(mid_left); // center left
|
||||
AmbientData.Colors[4].RGB = ColorUtils.HSV.UpSaturation(screeb_pxl.GetPixel(1, 1)); // left bck
|
||||
AmbientData.Colors[5].RGB = ColorUtils.HSV.UpSaturation(mid_left); // center left
|
||||
AmbientData.Colors[6].RGB = ColorUtils.HSV.UpSaturation(mid_right); // center right
|
||||
AmbientData.Colors[7].RGB = ColorUtils.HSV.UpSaturation(screeb_pxl.GetPixel(3, 1)); // right bck
|
||||
|
||||
for (int i = 0; i < 4; i++) // keyboard
|
||||
AmbientData.Colors[i].RGB = ColorUtils.HSV.UpSaturation(screeb_pxl.GetPixel(i, 0));
|
||||
@@ -559,7 +673,7 @@ namespace GHelper.USB
|
||||
|
||||
if (is_fresh)
|
||||
{
|
||||
if (isStrix) ApplyColorStrix(AmbientData.result, init);
|
||||
if (isStrix) ApplyDirect(AmbientData.result, init);
|
||||
else ApplyColor(AmbientData.result[0], init);
|
||||
}
|
||||
|
||||
|
||||
22
app/Updates.Designer.cs
generated
22
app/Updates.Designer.cs
generated
@@ -55,10 +55,10 @@ namespace GHelper
|
||||
tableBios.AutoSize = true;
|
||||
tableBios.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
tableBios.ColumnCount = 4;
|
||||
tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
|
||||
tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 23F));
|
||||
tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40F));
|
||||
tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 15F));
|
||||
tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
|
||||
tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 22F));
|
||||
tableBios.Dock = DockStyle.Top;
|
||||
tableBios.Location = new Point(20, 20);
|
||||
tableBios.Margin = new Padding(4);
|
||||
@@ -99,14 +99,14 @@ namespace GHelper
|
||||
panelBiosTitle.Location = new Point(0, 0);
|
||||
panelBiosTitle.Margin = new Padding(4);
|
||||
panelBiosTitle.Name = "panelBiosTitle";
|
||||
panelBiosTitle.Size = new Size(1256, 62);
|
||||
panelBiosTitle.Size = new Size(1294, 62);
|
||||
panelBiosTitle.TabIndex = 3;
|
||||
//
|
||||
// labelUpdates
|
||||
//
|
||||
labelUpdates.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||
labelUpdates.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelUpdates.Location = new Point(810, 23);
|
||||
labelUpdates.Location = new Point(848, 23);
|
||||
labelUpdates.Name = "labelUpdates";
|
||||
labelUpdates.Size = new Size(245, 32);
|
||||
labelUpdates.TabIndex = 4;
|
||||
@@ -122,7 +122,7 @@ namespace GHelper
|
||||
buttonRefresh.FlatAppearance.BorderSize = 0;
|
||||
buttonRefresh.FlatStyle = FlatStyle.Flat;
|
||||
buttonRefresh.Image = Properties.Resources.icons8_refresh_32;
|
||||
buttonRefresh.Location = new Point(1183, 14);
|
||||
buttonRefresh.Location = new Point(1221, 14);
|
||||
buttonRefresh.Name = "buttonRefresh";
|
||||
buttonRefresh.Secondary = true;
|
||||
buttonRefresh.Size = new Size(52, 46);
|
||||
@@ -138,7 +138,7 @@ namespace GHelper
|
||||
panelBios.Margin = new Padding(4);
|
||||
panelBios.Name = "panelBios";
|
||||
panelBios.Padding = new Padding(20);
|
||||
panelBios.Size = new Size(1256, 40);
|
||||
panelBios.Size = new Size(1294, 40);
|
||||
panelBios.TabIndex = 4;
|
||||
//
|
||||
// panelDrivers
|
||||
@@ -150,7 +150,7 @@ namespace GHelper
|
||||
panelDrivers.Margin = new Padding(4);
|
||||
panelDrivers.Name = "panelDrivers";
|
||||
panelDrivers.Padding = new Padding(20);
|
||||
panelDrivers.Size = new Size(1256, 40);
|
||||
panelDrivers.Size = new Size(1294, 40);
|
||||
panelDrivers.TabIndex = 6;
|
||||
//
|
||||
// tableDrivers
|
||||
@@ -158,10 +158,10 @@ namespace GHelper
|
||||
tableDrivers.AutoSize = true;
|
||||
tableDrivers.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
tableDrivers.ColumnCount = 4;
|
||||
tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
|
||||
tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 23F));
|
||||
tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40F));
|
||||
tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 15F));
|
||||
tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
|
||||
tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 22F));
|
||||
tableDrivers.Dock = DockStyle.Top;
|
||||
tableDrivers.Location = new Point(20, 20);
|
||||
tableDrivers.Margin = new Padding(4);
|
||||
@@ -178,7 +178,7 @@ namespace GHelper
|
||||
panelDriversTitle.Location = new Point(0, 102);
|
||||
panelDriversTitle.Margin = new Padding(4);
|
||||
panelDriversTitle.Name = "panelDriversTitle";
|
||||
panelDriversTitle.Size = new Size(1256, 44);
|
||||
panelDriversTitle.Size = new Size(1294, 44);
|
||||
panelDriversTitle.TabIndex = 5;
|
||||
//
|
||||
// labelDrivers
|
||||
@@ -208,7 +208,7 @@ namespace GHelper
|
||||
AutoScaleDimensions = new SizeF(192F, 192F);
|
||||
AutoScaleMode = AutoScaleMode.Dpi;
|
||||
AutoScroll = true;
|
||||
ClientSize = new Size(1256, 690);
|
||||
ClientSize = new Size(1294, 690);
|
||||
Controls.Add(panelDrivers);
|
||||
Controls.Add(panelDriversTitle);
|
||||
Controls.Add(panelBios);
|
||||
|
||||
@@ -303,7 +303,7 @@ To disable automatic touchpad toggling when laptop enters / leaves tablet mode
|
||||
```
|
||||
|
||||
### Extra Keybindings
|
||||
- ``Ctrl + Shift + F5`` - Toggle Performance Modes
|
||||
- ``Ctrl + Shift + F5`` / ``Ctrl + Shift + Alt + F5`` - Toggle Performance Modes
|
||||
- ``Ctrl + Shift + F12`` - Open G-Helper window
|
||||
- ``Ctrl + M1 / M2`` - Screen brightness Down / Up
|
||||
- ``Shift + M1 / M2`` - Backlight brightness Down / Up
|
||||
|
||||
Reference in New Issue
Block a user