mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Compare commits
126 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1c25824bcf | ||
|
|
0fec4c9620 | ||
|
|
2206411bea | ||
|
|
62efe79b7a | ||
|
|
327cf0e9dd | ||
|
|
fa3d9d1f81 | ||
|
|
cb0996eca9 | ||
|
|
3a5dbbf2ea | ||
|
|
1062aba6a4 | ||
|
|
849faa5029 | ||
|
|
f242e74d07 | ||
|
|
98a0c21355 | ||
|
|
7e2206d20c | ||
|
|
5f05672a3f | ||
|
|
ea812ae645 | ||
|
|
83eed09f48 | ||
|
|
d834264ef2 | ||
|
|
df0ff6c284 | ||
|
|
bab796bae1 | ||
|
|
2097a42973 | ||
|
|
458527ce2b | ||
|
|
c93f2277cf | ||
|
|
013bedcf9a | ||
|
|
39731fc2e8 | ||
|
|
2c1877a321 | ||
|
|
31ebbc3d18 | ||
|
|
1447b10992 | ||
|
|
ffaf3b4ab8 | ||
|
|
7ca0dc4a85 | ||
|
|
7d3c54ef4c | ||
|
|
dd55a9ae4b | ||
|
|
4fff5ddb0a | ||
|
|
c657b79422 | ||
|
|
b3a8a9abef | ||
|
|
6995637aec | ||
|
|
0cb0ff12a5 | ||
|
|
f582882828 | ||
|
|
4b6736c255 | ||
|
|
246fbc9437 | ||
|
|
e135d58c46 | ||
|
|
9bf4396902 | ||
|
|
60e88c0b45 | ||
|
|
8ec72ec94d | ||
|
|
b808efb502 | ||
|
|
92f9333800 | ||
|
|
3c4a6c5e95 | ||
|
|
b22fffe81a | ||
|
|
dcecfbaeda | ||
|
|
2a6d02b1cb | ||
|
|
048f68e2ff | ||
|
|
ac66642623 | ||
|
|
8d9999c6c7 | ||
|
|
977e7cc8c4 | ||
|
|
662d5fb414 | ||
|
|
3e0dc9ee7d | ||
|
|
9cef990edf | ||
|
|
f288f1fbf4 | ||
|
|
5561101093 | ||
|
|
a27906b1b7 | ||
|
|
659a408225 | ||
|
|
3d4fab99b6 | ||
|
|
7c5f5a9b24 | ||
|
|
e9ae5c9dc8 | ||
|
|
33311611ab | ||
|
|
d50ec93e94 | ||
|
|
fbdfdd2f03 | ||
|
|
cbe05b1a7c | ||
|
|
f32f70f145 | ||
|
|
409febb48f | ||
|
|
df132ee196 | ||
|
|
63b93cab0b | ||
|
|
9b1170d364 | ||
|
|
0dba6d7a42 | ||
|
|
d82deb9860 | ||
|
|
3307a95955 | ||
|
|
392b437913 | ||
|
|
8312d8700e | ||
|
|
f8110ef661 | ||
|
|
4da8f599ab | ||
|
|
0aa1e81665 | ||
|
|
ffe07b42b5 | ||
|
|
d7dd4db144 | ||
|
|
c81cb85112 | ||
|
|
e24f7679a6 | ||
|
|
b4b3034e92 | ||
|
|
9c452a2172 | ||
|
|
86bc0f4e5d | ||
|
|
8f59ff5e3d | ||
|
|
a8db22b22b | ||
|
|
bffd68ead4 | ||
|
|
46c0f89632 | ||
|
|
08c28ed0d0 | ||
|
|
f24f2dcec3 | ||
|
|
f7b2a5b893 | ||
|
|
da34a5af56 | ||
|
|
fa9d73e629 | ||
|
|
e1b6e3057d | ||
|
|
5bb3b67979 | ||
|
|
4046982698 | ||
|
|
4f80d1ced6 | ||
|
|
22799caedc | ||
|
|
107b09c6dc | ||
|
|
4f2fdc55ee | ||
|
|
16674b773d | ||
|
|
1e8bbba24e | ||
|
|
b5451cfc21 | ||
|
|
6507dee307 | ||
|
|
930b885ac0 | ||
|
|
22377a4ba9 | ||
|
|
85cd10132e | ||
|
|
643e29e25a | ||
|
|
70c41b311c | ||
|
|
85880c16c1 | ||
|
|
3ff0335985 | ||
|
|
3bafaaada0 | ||
|
|
584c641b18 | ||
|
|
ca1875d57a | ||
|
|
03c45994dc | ||
|
|
f0cbec6ea1 | ||
|
|
72fe01bb34 | ||
|
|
50ae8ae843 | ||
|
|
14e3d41def | ||
|
|
200a2a9eb9 | ||
|
|
769c490d21 | ||
|
|
0da5002804 | ||
|
|
5bf579fec5 |
4
.github/ISSUE_TEMPLATE/bug_report.md
vendored
4
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -7,7 +7,7 @@ about: Create a report to help us improve
|
||||
|
||||
## NOTE
|
||||
Bug reports without clear information or scenario to reproduce and logs from ``%AppData%\GHelper`` will be closed without answer.
|
||||
Please respect time of the developer. Thanks.
|
||||
Please respect the time of the developer. Thanks.
|
||||
|
||||
|
||||
**Describe the bug**
|
||||
@@ -34,7 +34,7 @@ If applicable, add screenshots to help explain your problem.
|
||||
- Laptop model
|
||||
|
||||
**Asus software**
|
||||
- Armoury crate (or it's services installed)
|
||||
- Armoury Crate (or it's services installed)
|
||||
- MyASUS installed
|
||||
- Other Asus services running in background
|
||||
|
||||
|
||||
@@ -70,6 +70,7 @@ namespace GHelper.AnimeMatrix
|
||||
if (brightness == 0 || (auto && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online))
|
||||
{
|
||||
mat.SetDisplayState(false);
|
||||
mat.SetDisplayState(false); // some devices are dumb
|
||||
Logger.WriteLine("Matrix Off");
|
||||
}
|
||||
else
|
||||
|
||||
@@ -260,4 +260,66 @@ public static class AppConfig
|
||||
Set(name + "_" + Modes.GetCurrent(), value);
|
||||
}
|
||||
|
||||
public static bool IsAlly()
|
||||
{
|
||||
return ContainsModel("RC71");
|
||||
}
|
||||
|
||||
public static bool NoMKeys()
|
||||
{
|
||||
return ContainsModel("Z13") ||
|
||||
ContainsModel("FX706") ||
|
||||
ContainsModel("FA506") ||
|
||||
ContainsModel("FX506") ||
|
||||
ContainsModel("Duo") ||
|
||||
ContainsModel("FX505");
|
||||
}
|
||||
|
||||
public static bool IsTUF()
|
||||
{
|
||||
return ContainsModel("TUF");
|
||||
}
|
||||
|
||||
// Devices with bugged bios command to change brightness
|
||||
public static bool SwappedBrightness()
|
||||
{
|
||||
return ContainsModel("FA506IH") || ContainsModel("FX506LU");
|
||||
}
|
||||
|
||||
|
||||
public static bool IsDUO()
|
||||
{
|
||||
return ContainsModel("Duo");
|
||||
}
|
||||
|
||||
// G14 2020 has no aura, but media keys instead
|
||||
public static bool NoAura()
|
||||
{
|
||||
return ContainsModel("GA401I") && !ContainsModel("GA401IHR");
|
||||
}
|
||||
|
||||
public static bool NoAuraColor()
|
||||
{
|
||||
return ContainsModel("GA401") || ContainsModel("X13");
|
||||
}
|
||||
|
||||
public static bool IsStrix()
|
||||
{
|
||||
return ContainsModel("Strix") || ContainsModel("Scar");
|
||||
}
|
||||
|
||||
public static bool IsZ13()
|
||||
{
|
||||
return ContainsModel("Z13");
|
||||
}
|
||||
|
||||
public static bool HasTabletMode()
|
||||
{
|
||||
return ContainsModel("X16") || ContainsModel("X13");
|
||||
}
|
||||
|
||||
public static bool IsAdvantageEdition()
|
||||
{
|
||||
return ContainsModel("13QY");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ public class AsusACPI
|
||||
public const int GPUModeStandard = 1;
|
||||
public const int GPUModeUltimate = 2;
|
||||
|
||||
public static int MaxTotal => AppConfig.ContainsModel("13QY") ? 250 : 150;
|
||||
public static int MaxTotal => AppConfig.IsAdvantageEdition() ? 250 : 150;
|
||||
public const int MinTotal = 5;
|
||||
public const int DefaultTotal = 125;
|
||||
|
||||
|
||||
251
app/AsusMouseSettings.Designer.cs
generated
251
app/AsusMouseSettings.Designer.cs
generated
@@ -33,13 +33,20 @@
|
||||
labelProfile = new Label();
|
||||
panelPerformance = new Panel();
|
||||
panelPerformanceOther = new Panel();
|
||||
comboBoxLiftOffDistance = new UI.RComboBox();
|
||||
panelLiftOffDistance = new Panel();
|
||||
labelLiftOffDistance = new Label();
|
||||
labelAngleAdjustmentValue = new Label();
|
||||
comboBoxLiftOffDistance = new UI.RComboBox();
|
||||
panelDebounce = new Panel();
|
||||
labelButtonDebounce = new Label();
|
||||
sliderButtonDebounce = new UI.Slider();
|
||||
labelButtonDebounceValue = new Label();
|
||||
panelAngleSnapping = new Panel();
|
||||
sliderAngleAdjustment = new UI.Slider();
|
||||
checkBoxAngleSnapping = new CheckBox();
|
||||
comboBoxPollingRate = new UI.RComboBox();
|
||||
labelAngleAdjustmentValue = new Label();
|
||||
panelPollingRate = new Panel();
|
||||
labelPollingRate = new Label();
|
||||
comboBoxPollingRate = new UI.RComboBox();
|
||||
panelDPISettings = new Panel();
|
||||
sliderDPI = new UI.Slider();
|
||||
tableLayoutPanel1 = new TableLayoutPanel();
|
||||
@@ -60,7 +67,7 @@
|
||||
labelPerformance = new Label();
|
||||
panelLighting = new Panel();
|
||||
panelLightingContent = new Panel();
|
||||
tableLayoutPanel3 = new TableLayoutPanel();
|
||||
tableLayoutLightingZones = new TableLayoutPanel();
|
||||
buttonLightingZoneScroll = new UI.RButton();
|
||||
buttonLightingZoneLogo = new UI.RButton();
|
||||
buttonLightingZoneAll = new UI.RButton();
|
||||
@@ -101,6 +108,10 @@
|
||||
panelProfiles.SuspendLayout();
|
||||
panelPerformance.SuspendLayout();
|
||||
panelPerformanceOther.SuspendLayout();
|
||||
panelLiftOffDistance.SuspendLayout();
|
||||
panelDebounce.SuspendLayout();
|
||||
panelAngleSnapping.SuspendLayout();
|
||||
panelPollingRate.SuspendLayout();
|
||||
panelDPISettings.SuspendLayout();
|
||||
tableLayoutPanel1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)numericUpDownCurrentDPI).BeginInit();
|
||||
@@ -111,7 +122,7 @@
|
||||
((System.ComponentModel.ISupportInitialize)pictureKeyboard).BeginInit();
|
||||
panelLighting.SuspendLayout();
|
||||
panelLightingContent.SuspendLayout();
|
||||
tableLayoutPanel3.SuspendLayout();
|
||||
tableLayoutLightingZones.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoxLightingColor).BeginInit();
|
||||
panelLightingHeader.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoxLighting).BeginInit();
|
||||
@@ -171,27 +182,46 @@
|
||||
panelPerformance.Location = new Point(11, 68);
|
||||
panelPerformance.Name = "panelPerformance";
|
||||
panelPerformance.Padding = new Padding(0, 11, 0, 25);
|
||||
panelPerformance.Size = new Size(654, 408);
|
||||
panelPerformance.Size = new Size(654, 461);
|
||||
panelPerformance.TabIndex = 1;
|
||||
//
|
||||
// panelPerformanceOther
|
||||
//
|
||||
panelPerformanceOther.AutoSize = true;
|
||||
panelPerformanceOther.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelPerformanceOther.Controls.Add(comboBoxLiftOffDistance);
|
||||
panelPerformanceOther.Controls.Add(labelLiftOffDistance);
|
||||
panelPerformanceOther.Controls.Add(labelAngleAdjustmentValue);
|
||||
panelPerformanceOther.Controls.Add(sliderAngleAdjustment);
|
||||
panelPerformanceOther.Controls.Add(checkBoxAngleSnapping);
|
||||
panelPerformanceOther.Controls.Add(comboBoxPollingRate);
|
||||
panelPerformanceOther.Controls.Add(labelPollingRate);
|
||||
panelPerformanceOther.Controls.Add(panelLiftOffDistance);
|
||||
panelPerformanceOther.Controls.Add(panelDebounce);
|
||||
panelPerformanceOther.Controls.Add(panelAngleSnapping);
|
||||
panelPerformanceOther.Controls.Add(panelPollingRate);
|
||||
panelPerformanceOther.Dock = DockStyle.Top;
|
||||
panelPerformanceOther.Location = new Point(0, 240);
|
||||
panelPerformanceOther.Name = "panelPerformanceOther";
|
||||
panelPerformanceOther.Padding = new Padding(0, 11, 0, 11);
|
||||
panelPerformanceOther.Size = new Size(654, 143);
|
||||
panelPerformanceOther.Size = new Size(654, 196);
|
||||
panelPerformanceOther.TabIndex = 49;
|
||||
//
|
||||
// panelLiftOffDistance
|
||||
//
|
||||
panelLiftOffDistance.AutoSize = true;
|
||||
panelLiftOffDistance.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelLiftOffDistance.Controls.Add(labelLiftOffDistance);
|
||||
panelLiftOffDistance.Controls.Add(comboBoxLiftOffDistance);
|
||||
panelLiftOffDistance.Dock = DockStyle.Top;
|
||||
panelLiftOffDistance.Location = new Point(0, 142);
|
||||
panelLiftOffDistance.Name = "panelLiftOffDistance";
|
||||
panelLiftOffDistance.Padding = new Padding(5);
|
||||
panelLiftOffDistance.Size = new Size(654, 43);
|
||||
panelLiftOffDistance.TabIndex = 56;
|
||||
//
|
||||
// labelLiftOffDistance
|
||||
//
|
||||
labelLiftOffDistance.Location = new Point(5, 5);
|
||||
labelLiftOffDistance.Margin = new Padding(6, 0, 6, 0);
|
||||
labelLiftOffDistance.Name = "labelLiftOffDistance";
|
||||
labelLiftOffDistance.Size = new Size(348, 33);
|
||||
labelLiftOffDistance.TabIndex = 48;
|
||||
labelLiftOffDistance.Text = "Lift Off Distance";
|
||||
//
|
||||
// comboBoxLiftOffDistance
|
||||
//
|
||||
comboBoxLiftOffDistance.BorderColor = Color.White;
|
||||
@@ -199,35 +229,77 @@
|
||||
comboBoxLiftOffDistance.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||
comboBoxLiftOffDistance.FlatStyle = FlatStyle.Flat;
|
||||
comboBoxLiftOffDistance.FormattingEnabled = true;
|
||||
comboBoxLiftOffDistance.Location = new Point(368, 99);
|
||||
comboBoxLiftOffDistance.Location = new Point(367, 5);
|
||||
comboBoxLiftOffDistance.Margin = new Padding(16, 0, 16, 0);
|
||||
comboBoxLiftOffDistance.Name = "comboBoxLiftOffDistance";
|
||||
comboBoxLiftOffDistance.Size = new Size(281, 33);
|
||||
comboBoxLiftOffDistance.TabIndex = 49;
|
||||
//
|
||||
// labelLiftOffDistance
|
||||
// panelDebounce
|
||||
//
|
||||
labelLiftOffDistance.Location = new Point(6, 99);
|
||||
labelLiftOffDistance.Margin = new Padding(6, 0, 6, 0);
|
||||
labelLiftOffDistance.Name = "labelLiftOffDistance";
|
||||
labelLiftOffDistance.Size = new Size(348, 33);
|
||||
labelLiftOffDistance.TabIndex = 48;
|
||||
labelLiftOffDistance.Text = "Lift Off Distance";
|
||||
panelDebounce.AutoSize = true;
|
||||
panelDebounce.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelDebounce.Controls.Add(labelButtonDebounce);
|
||||
panelDebounce.Controls.Add(sliderButtonDebounce);
|
||||
panelDebounce.Controls.Add(labelButtonDebounceValue);
|
||||
panelDebounce.Dock = DockStyle.Top;
|
||||
panelDebounce.Location = new Point(0, 95);
|
||||
panelDebounce.Name = "panelDebounce";
|
||||
panelDebounce.Padding = new Padding(5);
|
||||
panelDebounce.Size = new Size(654, 47);
|
||||
panelDebounce.TabIndex = 55;
|
||||
//
|
||||
// labelAngleAdjustmentValue
|
||||
// labelButtonDebounce
|
||||
//
|
||||
labelAngleAdjustmentValue.Location = new Point(598, 61);
|
||||
labelAngleAdjustmentValue.Margin = new Padding(6, 0, 6, 0);
|
||||
labelAngleAdjustmentValue.Name = "labelAngleAdjustmentValue";
|
||||
labelAngleAdjustmentValue.Size = new Size(48, 30);
|
||||
labelAngleAdjustmentValue.TabIndex = 47;
|
||||
labelAngleAdjustmentValue.Text = "0°";
|
||||
labelAngleAdjustmentValue.TextAlign = ContentAlignment.MiddleRight;
|
||||
labelButtonDebounce.Location = new Point(6, 7);
|
||||
labelButtonDebounce.Margin = new Padding(6, 0, 6, 0);
|
||||
labelButtonDebounce.Name = "labelButtonDebounce";
|
||||
labelButtonDebounce.Size = new Size(348, 33);
|
||||
labelButtonDebounce.TabIndex = 52;
|
||||
labelButtonDebounce.Text = "Button Response";
|
||||
//
|
||||
// sliderButtonDebounce
|
||||
//
|
||||
sliderButtonDebounce.AccessibleName = "DPI Slider";
|
||||
sliderButtonDebounce.Location = new Point(368, 9);
|
||||
sliderButtonDebounce.Max = 7;
|
||||
sliderButtonDebounce.Min = 2;
|
||||
sliderButtonDebounce.Name = "sliderButtonDebounce";
|
||||
sliderButtonDebounce.Size = new Size(213, 30);
|
||||
sliderButtonDebounce.Step = 1;
|
||||
sliderButtonDebounce.TabIndex = 50;
|
||||
sliderButtonDebounce.TabStop = false;
|
||||
sliderButtonDebounce.Text = "sliderBattery";
|
||||
sliderButtonDebounce.Value = 2;
|
||||
//
|
||||
// labelButtonDebounceValue
|
||||
//
|
||||
labelButtonDebounceValue.Location = new Point(590, 9);
|
||||
labelButtonDebounceValue.Margin = new Padding(6, 0, 6, 0);
|
||||
labelButtonDebounceValue.Name = "labelButtonDebounceValue";
|
||||
labelButtonDebounceValue.Size = new Size(60, 30);
|
||||
labelButtonDebounceValue.TabIndex = 51;
|
||||
labelButtonDebounceValue.Text = "12ms";
|
||||
labelButtonDebounceValue.TextAlign = ContentAlignment.MiddleRight;
|
||||
//
|
||||
// panelAngleSnapping
|
||||
//
|
||||
panelAngleSnapping.AutoSize = true;
|
||||
panelAngleSnapping.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelAngleSnapping.Controls.Add(sliderAngleAdjustment);
|
||||
panelAngleSnapping.Controls.Add(checkBoxAngleSnapping);
|
||||
panelAngleSnapping.Controls.Add(labelAngleAdjustmentValue);
|
||||
panelAngleSnapping.Dock = DockStyle.Top;
|
||||
panelAngleSnapping.Location = new Point(0, 51);
|
||||
panelAngleSnapping.Name = "panelAngleSnapping";
|
||||
panelAngleSnapping.Padding = new Padding(5);
|
||||
panelAngleSnapping.Size = new Size(654, 44);
|
||||
panelAngleSnapping.TabIndex = 54;
|
||||
//
|
||||
// sliderAngleAdjustment
|
||||
//
|
||||
sliderAngleAdjustment.AccessibleName = "DPI Slider";
|
||||
sliderAngleAdjustment.Location = new Point(397, 61);
|
||||
sliderAngleAdjustment.Location = new Point(396, 6);
|
||||
sliderAngleAdjustment.Max = 20;
|
||||
sliderAngleAdjustment.Min = -20;
|
||||
sliderAngleAdjustment.Name = "sliderAngleAdjustment";
|
||||
@@ -241,7 +313,7 @@
|
||||
// checkBoxAngleSnapping
|
||||
//
|
||||
checkBoxAngleSnapping.CheckAlign = ContentAlignment.MiddleRight;
|
||||
checkBoxAngleSnapping.Location = new Point(6, 61);
|
||||
checkBoxAngleSnapping.Location = new Point(5, 6);
|
||||
checkBoxAngleSnapping.Margin = new Padding(6, 0, 6, 0);
|
||||
checkBoxAngleSnapping.Name = "checkBoxAngleSnapping";
|
||||
checkBoxAngleSnapping.Size = new Size(384, 30);
|
||||
@@ -250,6 +322,38 @@
|
||||
checkBoxAngleSnapping.TextAlign = ContentAlignment.TopLeft;
|
||||
checkBoxAngleSnapping.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// labelAngleAdjustmentValue
|
||||
//
|
||||
labelAngleAdjustmentValue.Location = new Point(597, 6);
|
||||
labelAngleAdjustmentValue.Margin = new Padding(6, 0, 6, 0);
|
||||
labelAngleAdjustmentValue.Name = "labelAngleAdjustmentValue";
|
||||
labelAngleAdjustmentValue.Size = new Size(48, 30);
|
||||
labelAngleAdjustmentValue.TabIndex = 47;
|
||||
labelAngleAdjustmentValue.Text = "0°";
|
||||
labelAngleAdjustmentValue.TextAlign = ContentAlignment.MiddleRight;
|
||||
//
|
||||
// panelPollingRate
|
||||
//
|
||||
panelPollingRate.AutoSize = true;
|
||||
panelPollingRate.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelPollingRate.Controls.Add(labelPollingRate);
|
||||
panelPollingRate.Controls.Add(comboBoxPollingRate);
|
||||
panelPollingRate.Dock = DockStyle.Top;
|
||||
panelPollingRate.Location = new Point(0, 11);
|
||||
panelPollingRate.Name = "panelPollingRate";
|
||||
panelPollingRate.Padding = new Padding(5);
|
||||
panelPollingRate.Size = new Size(654, 40);
|
||||
panelPollingRate.TabIndex = 53;
|
||||
//
|
||||
// labelPollingRate
|
||||
//
|
||||
labelPollingRate.Location = new Point(6, 5);
|
||||
labelPollingRate.Margin = new Padding(6, 0, 6, 0);
|
||||
labelPollingRate.Name = "labelPollingRate";
|
||||
labelPollingRate.Size = new Size(348, 30);
|
||||
labelPollingRate.TabIndex = 45;
|
||||
labelPollingRate.Text = "Polling Rate";
|
||||
//
|
||||
// comboBoxPollingRate
|
||||
//
|
||||
comboBoxPollingRate.BorderColor = Color.White;
|
||||
@@ -257,21 +361,12 @@
|
||||
comboBoxPollingRate.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||
comboBoxPollingRate.FlatStyle = FlatStyle.Flat;
|
||||
comboBoxPollingRate.FormattingEnabled = true;
|
||||
comboBoxPollingRate.Location = new Point(368, 8);
|
||||
comboBoxPollingRate.Location = new Point(368, 2);
|
||||
comboBoxPollingRate.Margin = new Padding(16, 0, 16, 0);
|
||||
comboBoxPollingRate.Name = "comboBoxPollingRate";
|
||||
comboBoxPollingRate.Size = new Size(281, 33);
|
||||
comboBoxPollingRate.TabIndex = 44;
|
||||
//
|
||||
// labelPollingRate
|
||||
//
|
||||
labelPollingRate.Location = new Point(6, 9);
|
||||
labelPollingRate.Margin = new Padding(6, 0, 6, 0);
|
||||
labelPollingRate.Name = "labelPollingRate";
|
||||
labelPollingRate.Size = new Size(348, 30);
|
||||
labelPollingRate.TabIndex = 45;
|
||||
labelPollingRate.Text = "Polling Rate";
|
||||
//
|
||||
// panelDPISettings
|
||||
//
|
||||
panelDPISettings.AutoSize = true;
|
||||
@@ -561,7 +656,7 @@
|
||||
panelLighting.Controls.Add(panelLightingContent);
|
||||
panelLighting.Controls.Add(panelLightingHeader);
|
||||
panelLighting.Dock = DockStyle.Top;
|
||||
panelLighting.Location = new Point(11, 476);
|
||||
panelLighting.Location = new Point(11, 529);
|
||||
panelLighting.Name = "panelLighting";
|
||||
panelLighting.Padding = new Padding(0, 0, 0, 25);
|
||||
panelLighting.Size = new Size(654, 329);
|
||||
@@ -570,7 +665,7 @@
|
||||
// panelLightingContent
|
||||
//
|
||||
panelLightingContent.AutoSize = true;
|
||||
panelLightingContent.Controls.Add(tableLayoutPanel3);
|
||||
panelLightingContent.Controls.Add(tableLayoutLightingZones);
|
||||
panelLightingContent.Controls.Add(comboBoxAnimationDirection);
|
||||
panelLightingContent.Controls.Add(labelAnimationDirection);
|
||||
panelLightingContent.Controls.Add(checkBoxRandomColor);
|
||||
@@ -587,29 +682,29 @@
|
||||
panelLightingContent.Size = new Size(654, 274);
|
||||
panelLightingContent.TabIndex = 42;
|
||||
//
|
||||
// tableLayoutPanel3
|
||||
// tableLayoutLightingZones
|
||||
//
|
||||
tableLayoutPanel3.AutoSize = true;
|
||||
tableLayoutPanel3.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
tableLayoutPanel3.ColumnCount = 5;
|
||||
tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
|
||||
tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
|
||||
tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
|
||||
tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
|
||||
tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
|
||||
tableLayoutPanel3.Controls.Add(buttonLightingZoneScroll, 0, 0);
|
||||
tableLayoutPanel3.Controls.Add(buttonLightingZoneLogo, 0, 0);
|
||||
tableLayoutPanel3.Controls.Add(buttonLightingZoneAll, 0, 0);
|
||||
tableLayoutPanel3.Controls.Add(buttonLightingZoneUnderglow, 1, 0);
|
||||
tableLayoutPanel3.Controls.Add(buttonLightingZoneDock, 2, 0);
|
||||
tableLayoutPanel3.Dock = DockStyle.Top;
|
||||
tableLayoutPanel3.Location = new Point(0, 0);
|
||||
tableLayoutPanel3.Margin = new Padding(6, 3, 6, 3);
|
||||
tableLayoutPanel3.Name = "tableLayoutPanel3";
|
||||
tableLayoutPanel3.RowCount = 1;
|
||||
tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Absolute, 60F));
|
||||
tableLayoutPanel3.Size = new Size(654, 60);
|
||||
tableLayoutPanel3.TabIndex = 56;
|
||||
tableLayoutLightingZones.AutoSize = true;
|
||||
tableLayoutLightingZones.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
tableLayoutLightingZones.ColumnCount = 5;
|
||||
tableLayoutLightingZones.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
|
||||
tableLayoutLightingZones.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
|
||||
tableLayoutLightingZones.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
|
||||
tableLayoutLightingZones.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
|
||||
tableLayoutLightingZones.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
|
||||
tableLayoutLightingZones.Controls.Add(buttonLightingZoneScroll, 0, 0);
|
||||
tableLayoutLightingZones.Controls.Add(buttonLightingZoneLogo, 0, 0);
|
||||
tableLayoutLightingZones.Controls.Add(buttonLightingZoneAll, 0, 0);
|
||||
tableLayoutLightingZones.Controls.Add(buttonLightingZoneUnderglow, 1, 0);
|
||||
tableLayoutLightingZones.Controls.Add(buttonLightingZoneDock, 2, 0);
|
||||
tableLayoutLightingZones.Dock = DockStyle.Top;
|
||||
tableLayoutLightingZones.Location = new Point(0, 0);
|
||||
tableLayoutLightingZones.Margin = new Padding(6, 3, 6, 3);
|
||||
tableLayoutLightingZones.Name = "tableLayoutLightingZones";
|
||||
tableLayoutLightingZones.RowCount = 1;
|
||||
tableLayoutLightingZones.RowStyles.Add(new RowStyle(SizeType.Absolute, 60F));
|
||||
tableLayoutLightingZones.Size = new Size(654, 60);
|
||||
tableLayoutLightingZones.TabIndex = 56;
|
||||
//
|
||||
// buttonLightingZoneScroll
|
||||
//
|
||||
@@ -890,7 +985,7 @@
|
||||
panelEnergy.Controls.Add(labelAutoPowerOff);
|
||||
panelEnergy.Controls.Add(panelEnergyHeader);
|
||||
panelEnergy.Dock = DockStyle.Top;
|
||||
panelEnergy.Location = new Point(11, 805);
|
||||
panelEnergy.Location = new Point(11, 858);
|
||||
panelEnergy.Name = "panelEnergy";
|
||||
panelEnergy.Padding = new Padding(0, 0, 0, 25);
|
||||
panelEnergy.Size = new Size(654, 143);
|
||||
@@ -1071,7 +1166,7 @@
|
||||
panelBottomButtons.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelBottomButtons.Controls.Add(buttonSync);
|
||||
panelBottomButtons.Dock = DockStyle.Top;
|
||||
panelBottomButtons.Location = new Point(11, 948);
|
||||
panelBottomButtons.Location = new Point(11, 1001);
|
||||
panelBottomButtons.Name = "panelBottomButtons";
|
||||
panelBottomButtons.Size = new Size(654, 67);
|
||||
panelBottomButtons.TabIndex = 47;
|
||||
@@ -1144,7 +1239,7 @@
|
||||
AutoScroll = true;
|
||||
AutoSize = true;
|
||||
AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
ClientSize = new Size(676, 1072);
|
||||
ClientSize = new Size(676, 1183);
|
||||
Controls.Add(panelBottomButtons);
|
||||
Controls.Add(panelEnergy);
|
||||
Controls.Add(panelLighting);
|
||||
@@ -1164,6 +1259,11 @@
|
||||
panelPerformance.ResumeLayout(false);
|
||||
panelPerformance.PerformLayout();
|
||||
panelPerformanceOther.ResumeLayout(false);
|
||||
panelPerformanceOther.PerformLayout();
|
||||
panelLiftOffDistance.ResumeLayout(false);
|
||||
panelDebounce.ResumeLayout(false);
|
||||
panelAngleSnapping.ResumeLayout(false);
|
||||
panelPollingRate.ResumeLayout(false);
|
||||
panelDPISettings.ResumeLayout(false);
|
||||
panelDPISettings.PerformLayout();
|
||||
tableLayoutPanel1.ResumeLayout(false);
|
||||
@@ -1179,8 +1279,8 @@
|
||||
panelLighting.PerformLayout();
|
||||
panelLightingContent.ResumeLayout(false);
|
||||
panelLightingContent.PerformLayout();
|
||||
tableLayoutPanel3.ResumeLayout(false);
|
||||
tableLayoutPanel3.PerformLayout();
|
||||
tableLayoutLightingZones.ResumeLayout(false);
|
||||
tableLayoutLightingZones.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoxLightingColor).EndInit();
|
||||
panelLightingHeader.ResumeLayout(false);
|
||||
panelLightingHeader.PerformLayout();
|
||||
@@ -1263,7 +1363,7 @@
|
||||
private UI.RButton buttonSync;
|
||||
private Panel panelBottomButtons;
|
||||
private NumericUpDown numericUpDownCurrentDPI;
|
||||
private TableLayoutPanel tableLayoutPanel3;
|
||||
private TableLayoutPanel tableLayoutLightingZones;
|
||||
private UI.RButton buttonLightingZoneScroll;
|
||||
private UI.RButton buttonLightingZoneLogo;
|
||||
private UI.RButton buttonLightingZoneAll;
|
||||
@@ -1272,5 +1372,12 @@
|
||||
private TableLayoutPanel tableLayoutPanel2;
|
||||
private UI.RButton rButton1;
|
||||
private UI.RButton rButton2;
|
||||
private Label labelButtonDebounce;
|
||||
private Label labelButtonDebounceValue;
|
||||
private UI.Slider sliderButtonDebounce;
|
||||
private Panel panelPollingRate;
|
||||
private Panel panelAngleSnapping;
|
||||
private Panel panelLiftOffDistance;
|
||||
private Panel panelDebounce;
|
||||
}
|
||||
}
|
||||
@@ -45,6 +45,7 @@ namespace GHelper
|
||||
labelLiftOffDistance.Text = Properties.Strings.MouseLiftOffDistance;
|
||||
labelChargingState.Text = "(" + Properties.Strings.Charging + ")";
|
||||
labelProfile.Text = Properties.Strings.Profile;
|
||||
labelButtonDebounce.Text = Properties.Strings.MouseButtonResponse;
|
||||
|
||||
buttonLightingZoneLogo.Text = Properties.Strings.AuraZoneLogo;
|
||||
buttonLightingZoneScroll.Text = Properties.Strings.AuraZoneScroll;
|
||||
@@ -76,6 +77,8 @@ namespace GHelper
|
||||
sliderAngleAdjustment.ValueChanged += SliderAngleAdjustment_ValueChanged;
|
||||
sliderAngleAdjustment.MouseUp += SliderAngleAdjustment_MouseUp;
|
||||
comboBoxLiftOffDistance.DropDownClosed += ComboBoxLiftOffDistance_DropDownClosed;
|
||||
sliderButtonDebounce.ValueChanged += SliderButtonDebounce_ValueChanged;
|
||||
sliderButtonDebounce.MouseUp += SliderButtonDebounce_MouseUp;
|
||||
|
||||
buttonLightingColor.Click += ButtonLightingColor_Click;
|
||||
comboBoxLightingMode.DropDownClosed += ComboBoxLightingMode_DropDownClosed;
|
||||
@@ -100,6 +103,20 @@ namespace GHelper
|
||||
RefreshMouseData();
|
||||
}
|
||||
|
||||
private void SliderButtonDebounce_MouseUp(object? sender, MouseEventArgs e)
|
||||
{
|
||||
DebounceTime dbt = (DebounceTime)sliderButtonDebounce.Value;
|
||||
mouse.SetDebounce(dbt);
|
||||
}
|
||||
|
||||
private void SliderButtonDebounce_ValueChanged(object? sender, EventArgs e)
|
||||
{
|
||||
DebounceTime dbt = (DebounceTime)sliderButtonDebounce.Value;
|
||||
int time = mouse.DebounceTimeInMS(dbt);
|
||||
|
||||
labelButtonDebounceValue.Text = time + "ms";
|
||||
}
|
||||
|
||||
private void SwitchLightingZone(LightingZone zone)
|
||||
{
|
||||
if (!mouse.HasRGB())
|
||||
@@ -173,8 +190,13 @@ namespace GHelper
|
||||
|
||||
private void ComboProfile_DropDownClosed(object? sender, EventArgs e)
|
||||
{
|
||||
if (mouse.Profile == comboProfile.SelectedIndex)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
mouse.SetProfile(comboProfile.SelectedIndex);
|
||||
Task task = Task.Run((Action)RefreshMouseData);
|
||||
RefreshMouseData();
|
||||
}
|
||||
|
||||
private void ComboBoxPollingRate_DropDownClosed(object? sender, EventArgs e)
|
||||
@@ -386,13 +408,13 @@ namespace GHelper
|
||||
|
||||
private void Mouse_Disconnect(object? sender, EventArgs e)
|
||||
{
|
||||
if (Disposing || IsDisposed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
//Mouse disconnected. Bye bye.
|
||||
this.Invoke(delegate
|
||||
{
|
||||
if (Disposing || IsDisposed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
this.Close();
|
||||
});
|
||||
|
||||
@@ -406,18 +428,17 @@ namespace GHelper
|
||||
if (!mouse.IsDeviceReady)
|
||||
{
|
||||
Logger.WriteLine(mouse.GetDisplayName() + " (GUI): Mouse is not ready. Closing view.");
|
||||
this.Invoke(delegate
|
||||
{
|
||||
this.Close();
|
||||
});
|
||||
Mouse_Disconnect(this, EventArgs.Empty);
|
||||
return;
|
||||
}
|
||||
|
||||
this.Invoke(delegate
|
||||
if (Disposing || IsDisposed)
|
||||
{
|
||||
VisualizeMouseSettings();
|
||||
VisualizeBatteryState();
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
VisualizeMouseSettings();
|
||||
VisualizeBatteryState();
|
||||
}
|
||||
|
||||
private void InitMouseCapabilities()
|
||||
@@ -439,6 +460,11 @@ namespace GHelper
|
||||
numericUpDownCurrentDPI.Maximum = mouse.MaxDPI();
|
||||
numericUpDownCurrentDPI.Increment = mouse.DPIIncrements();
|
||||
|
||||
if (!mouse.HasDebounceSetting())
|
||||
{
|
||||
panelDebounce.Visible = false;
|
||||
}
|
||||
|
||||
|
||||
if (!mouse.HasDPIColors())
|
||||
{
|
||||
@@ -465,8 +491,7 @@ namespace GHelper
|
||||
}
|
||||
else
|
||||
{
|
||||
comboBoxPollingRate.Visible = false;
|
||||
labelPollingRate.Visible = false;
|
||||
panelPollingRate.Visible = false;
|
||||
}
|
||||
|
||||
if (!mouse.HasAngleSnapping())
|
||||
@@ -478,6 +503,14 @@ namespace GHelper
|
||||
{
|
||||
labelAngleAdjustmentValue.Visible = false;
|
||||
sliderAngleAdjustment.Visible = false;
|
||||
sliderAngleAdjustment.Max = mouse.AngleTuningMax();
|
||||
sliderAngleAdjustment.Min = mouse.AngleTuningMin();
|
||||
sliderAngleAdjustment.Step = mouse.AngleTuningStep();
|
||||
}
|
||||
|
||||
if (!mouse.HasAngleTuning() && !mouse.HasAngleSnapping())
|
||||
{
|
||||
panelAngleSnapping.Visible = false;
|
||||
}
|
||||
|
||||
if (mouse.HasLiftOffSetting())
|
||||
@@ -489,8 +522,7 @@ namespace GHelper
|
||||
}
|
||||
else
|
||||
{
|
||||
comboBoxLiftOffDistance.Visible = false;
|
||||
labelLiftOffDistance.Visible = false;
|
||||
panelLiftOffDistance.Visible = false;
|
||||
}
|
||||
|
||||
if (mouse.DPIProfileCount() < 4)
|
||||
@@ -532,10 +564,20 @@ namespace GHelper
|
||||
|
||||
if (mouse.HasRGB())
|
||||
{
|
||||
buttonLightingZoneLogo.Visible = mouse.SupportedLightingZones().Contains(LightingZone.Logo);
|
||||
buttonLightingZoneScroll.Visible = mouse.SupportedLightingZones().Contains(LightingZone.Scrollwheel);
|
||||
buttonLightingZoneUnderglow.Visible = mouse.SupportedLightingZones().Contains(LightingZone.Underglow);
|
||||
buttonLightingZoneDock.Visible = mouse.SupportedLightingZones().Contains(LightingZone.Dock);
|
||||
if (mouse.SupportedLightingZones().Length > 1)
|
||||
{
|
||||
buttonLightingZoneLogo.Visible = mouse.SupportedLightingZones().Contains(LightingZone.Logo);
|
||||
buttonLightingZoneScroll.Visible = mouse.SupportedLightingZones().Contains(LightingZone.Scrollwheel);
|
||||
buttonLightingZoneUnderglow.Visible = mouse.SupportedLightingZones().Contains(LightingZone.Underglow);
|
||||
buttonLightingZoneDock.Visible = mouse.SupportedLightingZones().Contains(LightingZone.Dock);
|
||||
}
|
||||
else
|
||||
{
|
||||
buttonLightingZoneLogo.Visible = false;
|
||||
buttonLightingZoneScroll.Visible = false;
|
||||
buttonLightingZoneUnderglow.Visible = false;
|
||||
buttonLightingZoneDock.Visible = false;
|
||||
}
|
||||
|
||||
sliderBrightness.Max = mouse.MaxBrightness();
|
||||
|
||||
@@ -634,6 +676,11 @@ namespace GHelper
|
||||
{
|
||||
comboBoxLiftOffDistance.SelectedIndex = (int)mouse.LiftOffDistance;
|
||||
}
|
||||
|
||||
if (mouse.HasDebounceSetting())
|
||||
{
|
||||
sliderButtonDebounce.Value = (int)mouse.Debounce;
|
||||
}
|
||||
}
|
||||
|
||||
private void VisualizeBatteryState()
|
||||
@@ -776,7 +823,7 @@ namespace GHelper
|
||||
|
||||
private void ButtonSync_Click(object sender, EventArgs e)
|
||||
{
|
||||
Task task = Task.Run((Action)RefreshMouseData);
|
||||
RefreshMouseData();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using GHelper.Helpers;
|
||||
using HidLibrary;
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
|
||||
namespace GHelper
|
||||
@@ -45,9 +46,9 @@ namespace GHelper
|
||||
|
||||
public static readonly byte[] LED_INIT1 = new byte[] { AURA_HID_ID, 0xb9 };
|
||||
public static readonly byte[] LED_INIT2 = Encoding.ASCII.GetBytes("]ASUS Tech.Inc.");
|
||||
public static readonly byte[] LED_INIT3 = new byte[] { AURA_HID_ID, 0x05, 0x20, 0x31, 0, 0x08 };
|
||||
public static readonly byte[] LED_INIT3 = new byte[] { AURA_HID_ID, 0x05, 0x20, 0x31, 0, 0x1a };
|
||||
public static readonly byte[] LED_INIT4 = Encoding.ASCII.GetBytes("^ASUS Tech.Inc.");
|
||||
public static readonly byte[] LED_INIT5 = new byte[] { 0x5e, 0x05, 0x20, 0x31, 0, 0x08 };
|
||||
public static readonly byte[] LED_INIT5 = new byte[] { 0x5e, 0x05, 0x20, 0x31, 0, 0x1a };
|
||||
|
||||
static byte[] MESSAGE_APPLY = { AURA_HID_ID, 0xb4 };
|
||||
static byte[] MESSAGE_SET = { AURA_HID_ID, 0xb5, 0, 0, 0 };
|
||||
@@ -59,13 +60,15 @@ namespace GHelper
|
||||
public static Color Color1 = Color.White;
|
||||
public static Color Color2 = Color.Black;
|
||||
|
||||
static bool isTuf = AppConfig.ContainsModel("Tuf");
|
||||
static bool isStrix = AppConfig.ContainsModel("Strix");
|
||||
static bool isTuf = AppConfig.IsTUF();
|
||||
static bool isStrix = AppConfig.IsStrix();
|
||||
|
||||
|
||||
static System.Timers.Timer timer = new System.Timers.Timer(2000);
|
||||
static HidDevice? auraDevice = null;
|
||||
|
||||
static bool Manual = false;
|
||||
|
||||
static byte[] AuraPowerMessage(AuraPower flags)
|
||||
{
|
||||
byte keyb = 0, bar = 0, lid = 0, rear = 0;
|
||||
@@ -179,18 +182,18 @@ namespace GHelper
|
||||
_modes.Remove(3);
|
||||
}
|
||||
|
||||
if (AppConfig.ContainsModel("401") || AppConfig.ContainsModel("X13"))
|
||||
if (AppConfig.NoAuraColor())
|
||||
{
|
||||
_modes.Remove(2);
|
||||
_modes.Remove(3);
|
||||
}
|
||||
|
||||
if (AppConfig.ContainsModel("G513QY"))
|
||||
if (AppConfig.IsAdvantageEdition())
|
||||
{
|
||||
return _modes;
|
||||
}
|
||||
|
||||
if (AppConfig.ContainsModel("Strix") || AppConfig.ContainsModel("Scar"))
|
||||
if (AppConfig.IsStrix())
|
||||
{
|
||||
return _modesStrix;
|
||||
}
|
||||
@@ -211,10 +214,6 @@ namespace GHelper
|
||||
}
|
||||
}
|
||||
|
||||
public static bool HasColor()
|
||||
{
|
||||
return AppConfig.ContainsModel("GA401") || AppConfig.ContainsModel("X13");
|
||||
}
|
||||
|
||||
public static bool HasSecondColor()
|
||||
{
|
||||
@@ -290,6 +289,7 @@ namespace GHelper
|
||||
msg[6] = (byte)(color.B); // B
|
||||
msg[7] = (byte)speed; // aura.speed as u8;
|
||||
msg[8] = 0; // aura.direction as u8;
|
||||
msg[9] = (mode == 1) ? (byte)1 : (byte)0;
|
||||
msg[10] = (byte)(color2.R); // R
|
||||
msg[11] = (byte)(color2.G); // G
|
||||
msg[12] = (byte)(color2.B); // B
|
||||
@@ -464,31 +464,62 @@ namespace GHelper
|
||||
if (auraDevice is null || !auraDevice.IsConnected) GetAuraDevice();
|
||||
if (auraDevice is null || !auraDevice.IsConnected) return;
|
||||
|
||||
byte[] msg = new byte[40];
|
||||
int start = 9;
|
||||
|
||||
msg[0] = AURA_HID_ID;
|
||||
msg[1] = 0xbc;
|
||||
msg[2] = 1;
|
||||
msg[3] = 1;
|
||||
msg[4] = 4;
|
||||
|
||||
for (int i = 0; i < 10; i++)
|
||||
if (isStrix)
|
||||
{
|
||||
msg[start + i * 3] = color.R; // R
|
||||
msg[start + 1 + i * 3] = color.G; // G
|
||||
msg[start + 2 + i * 3] = color.B; // B
|
||||
byte[] msg = new byte[0x40];
|
||||
|
||||
byte start = 9;
|
||||
byte maxLeds = 0x93;
|
||||
|
||||
msg[0] = AURA_HID_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 < 0x12; i++)
|
||||
{
|
||||
msg[start + i * 3] = color.R; // R
|
||||
msg[start + 1 + i * 3] = color.G; // G
|
||||
msg[start + 2 + i * 3] = color.B; // B
|
||||
}
|
||||
|
||||
|
||||
if (init)
|
||||
{
|
||||
auraDevice.Write(LED_INIT1);
|
||||
auraDevice.Write(LED_INIT2);
|
||||
auraDevice.Write(LED_INIT3);
|
||||
auraDevice.Write(LED_INIT4);
|
||||
auraDevice.Write(LED_INIT5);
|
||||
auraDevice.Write(new byte[] { AURA_HID_ID, 0xbc});
|
||||
}
|
||||
|
||||
for (byte b = 0; b < maxLeds; b += 0x10)
|
||||
{
|
||||
msg[6] = b;
|
||||
auraDevice.Write(msg);
|
||||
}
|
||||
|
||||
msg[6] = maxLeds;
|
||||
auraDevice.Write(msg);
|
||||
|
||||
msg[4] = 4;
|
||||
msg[5] = 0;
|
||||
msg[6] = 0;
|
||||
msg[7] = 0;
|
||||
auraDevice.Write(msg);
|
||||
}
|
||||
|
||||
//Logger.WriteLine(BitConverter.ToString(msg));
|
||||
if (init)
|
||||
else
|
||||
{
|
||||
auraDevice.Write(AuraMessage(0, color, color, 0xe1));
|
||||
auraDevice.WriteFeatureData(MESSAGE_APPLY);
|
||||
auraDevice.WriteFeatureData(MESSAGE_SET);
|
||||
auraDevice.Write(new byte[] { AURA_HID_ID, 0xbc });
|
||||
auraDevice.Write(AuraMessage(0, color, color, 0));
|
||||
auraDevice.Write(MESSAGE_SET);
|
||||
}
|
||||
auraDevice.Write(msg);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -546,7 +577,7 @@ namespace GHelper
|
||||
device.CloseDevice();
|
||||
}
|
||||
|
||||
if (AppConfig.ContainsModel("TUF"))
|
||||
if (isTuf)
|
||||
Program.acpi.TUFKeyboardRGB(Mode, Color1, _speed);
|
||||
});
|
||||
|
||||
|
||||
269
app/Extra.Designer.cs
generated
269
app/Extra.Designer.cs
generated
@@ -41,8 +41,11 @@ namespace GHelper
|
||||
labelBindings = new Label();
|
||||
panelBindings = new Panel();
|
||||
tableBindings = new TableLayoutPanel();
|
||||
label1 = new Label();
|
||||
textBox1 = new TextBox();
|
||||
labelFNE = new Label();
|
||||
comboFNE = new RComboBox();
|
||||
textFNE = new TextBox();
|
||||
labelFNC = new Label();
|
||||
textM2 = new TextBox();
|
||||
textM1 = new TextBox();
|
||||
comboM1 = new RComboBox();
|
||||
labelM1 = new Label();
|
||||
@@ -60,8 +63,6 @@ namespace GHelper
|
||||
comboFNC = new RComboBox();
|
||||
textFNC = new TextBox();
|
||||
tableKeys = new TableLayoutPanel();
|
||||
labelFNC = new Label();
|
||||
textM2 = new TextBox();
|
||||
panelBacklightHeader = new Panel();
|
||||
sliderBrightness = new Slider();
|
||||
pictureBacklight = new PictureBox();
|
||||
@@ -116,7 +117,6 @@ namespace GHelper
|
||||
((System.ComponentModel.ISupportInitialize)pictureHelp).BeginInit();
|
||||
panelBindings.SuspendLayout();
|
||||
tableBindings.SuspendLayout();
|
||||
tableKeys.SuspendLayout();
|
||||
panelBacklightHeader.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBacklight).BeginInit();
|
||||
panelBacklight.SuspendLayout();
|
||||
@@ -137,7 +137,7 @@ namespace GHelper
|
||||
panelServices.Controls.Add(labelServices);
|
||||
panelServices.Controls.Add(buttonServices);
|
||||
panelServices.Dock = DockStyle.Top;
|
||||
panelServices.Location = new Point(15, 1216);
|
||||
panelServices.Location = new Point(15, 1267);
|
||||
panelServices.Name = "panelServices";
|
||||
panelServices.Size = new Size(983, 75);
|
||||
panelServices.TabIndex = 3;
|
||||
@@ -156,7 +156,7 @@ namespace GHelper
|
||||
//
|
||||
labelServices.AutoSize = true;
|
||||
labelServices.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelServices.Location = new Point(57, 18);
|
||||
labelServices.Location = new Point(57, 19);
|
||||
labelServices.Name = "labelServices";
|
||||
labelServices.Size = new Size(273, 32);
|
||||
labelServices.TabIndex = 20;
|
||||
@@ -189,15 +189,15 @@ namespace GHelper
|
||||
panelBindingsHeader.Dock = DockStyle.Top;
|
||||
panelBindingsHeader.Location = new Point(15, 15);
|
||||
panelBindingsHeader.Name = "panelBindingsHeader";
|
||||
panelBindingsHeader.Padding = new Padding(10, 5, 10, 5);
|
||||
panelBindingsHeader.Size = new Size(983, 50);
|
||||
panelBindingsHeader.Padding = new Padding(11, 5, 11, 5);
|
||||
panelBindingsHeader.Size = new Size(983, 51);
|
||||
panelBindingsHeader.TabIndex = 4;
|
||||
//
|
||||
// pictureBindings
|
||||
//
|
||||
pictureBindings.BackgroundImage = Resources.icons8_keyboard_32;
|
||||
pictureBindings.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
pictureBindings.Location = new Point(20, 10);
|
||||
pictureBindings.Location = new Point(20, 11);
|
||||
pictureBindings.Name = "pictureBindings";
|
||||
pictureBindings.Size = new Size(32, 32);
|
||||
pictureBindings.TabIndex = 1;
|
||||
@@ -209,7 +209,7 @@ namespace GHelper
|
||||
pictureHelp.BackgroundImage = Resources.icons8_help_32;
|
||||
pictureHelp.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
pictureHelp.Cursor = Cursors.Hand;
|
||||
pictureHelp.Location = new Point(930, 10);
|
||||
pictureHelp.Location = new Point(931, 11);
|
||||
pictureHelp.Margin = new Padding(4, 3, 4, 3);
|
||||
pictureHelp.Name = "pictureHelp";
|
||||
pictureHelp.Size = new Size(32, 32);
|
||||
@@ -232,10 +232,10 @@ namespace GHelper
|
||||
panelBindings.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelBindings.Controls.Add(tableBindings);
|
||||
panelBindings.Dock = DockStyle.Top;
|
||||
panelBindings.Location = new Point(15, 65);
|
||||
panelBindings.Location = new Point(15, 66);
|
||||
panelBindings.Name = "panelBindings";
|
||||
panelBindings.Padding = new Padding(0, 0, 10, 5);
|
||||
panelBindings.Size = new Size(983, 305);
|
||||
panelBindings.Padding = new Padding(0, 0, 11, 5);
|
||||
panelBindings.Size = new Size(983, 351);
|
||||
panelBindings.TabIndex = 5;
|
||||
//
|
||||
// tableBindings
|
||||
@@ -243,11 +243,14 @@ namespace GHelper
|
||||
tableBindings.AutoSize = true;
|
||||
tableBindings.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
tableBindings.ColumnCount = 3;
|
||||
tableBindings.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 15.45389F));
|
||||
tableBindings.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40.94511F));
|
||||
tableBindings.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 43.6010056F));
|
||||
tableBindings.Controls.Add(label1, 0, 5);
|
||||
tableBindings.Controls.Add(textBox1, 2, 1);
|
||||
tableBindings.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
|
||||
tableBindings.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40F));
|
||||
tableBindings.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40F));
|
||||
tableBindings.Controls.Add(labelFNE, 0, 6);
|
||||
tableBindings.Controls.Add(comboFNE, 0, 6);
|
||||
tableBindings.Controls.Add(textFNE, 0, 6);
|
||||
tableBindings.Controls.Add(labelFNC, 0, 5);
|
||||
tableBindings.Controls.Add(textM2, 2, 1);
|
||||
tableBindings.Controls.Add(textM1, 2, 0);
|
||||
tableBindings.Controls.Add(comboM1, 1, 0);
|
||||
tableBindings.Controls.Add(labelM1, 0, 0);
|
||||
@@ -269,45 +272,80 @@ namespace GHelper
|
||||
tableBindings.Margin = new Padding(0, 3, 4, 3);
|
||||
tableBindings.Name = "tableBindings";
|
||||
tableBindings.Padding = new Padding(16, 12, 0, 12);
|
||||
tableBindings.RowCount = 6;
|
||||
tableBindings.RowCount = 7;
|
||||
tableBindings.RowStyles.Add(new RowStyle());
|
||||
tableBindings.RowStyles.Add(new RowStyle());
|
||||
tableBindings.RowStyles.Add(new RowStyle());
|
||||
tableBindings.RowStyles.Add(new RowStyle());
|
||||
tableBindings.RowStyles.Add(new RowStyle());
|
||||
tableBindings.RowStyles.Add(new RowStyle());
|
||||
tableBindings.Size = new Size(973, 300);
|
||||
tableBindings.RowStyles.Add(new RowStyle());
|
||||
tableBindings.RowStyles.Add(new RowStyle(SizeType.Absolute, 20F));
|
||||
tableBindings.Size = new Size(972, 346);
|
||||
tableBindings.TabIndex = 12;
|
||||
//
|
||||
// label1
|
||||
// labelFNE
|
||||
//
|
||||
label1.AutoSize = true;
|
||||
label1.Location = new Point(16, 242);
|
||||
label1.Margin = new Padding(0);
|
||||
label1.Name = "label1";
|
||||
label1.Padding = new Padding(5, 10, 0, 0);
|
||||
label1.Size = new Size(85, 42);
|
||||
label1.TabIndex = 15;
|
||||
label1.Text = "FN+C:";
|
||||
labelFNE.AutoSize = true;
|
||||
labelFNE.Location = new Point(16, 288);
|
||||
labelFNE.Margin = new Padding(0);
|
||||
labelFNE.Name = "labelFNE";
|
||||
labelFNE.Padding = new Padding(5, 11, 0, 0);
|
||||
labelFNE.Size = new Size(143, 43);
|
||||
labelFNE.TabIndex = 20;
|
||||
labelFNE.Text = "FN+NmEnt:";
|
||||
//
|
||||
// textBox1
|
||||
// comboFNE
|
||||
//
|
||||
textBox1.Dock = DockStyle.Top;
|
||||
textBox1.Location = new Point(558, 61);
|
||||
textBox1.Margin = new Padding(4, 3, 4, 3);
|
||||
textBox1.Name = "textBox1";
|
||||
textBox1.PlaceholderText = "action";
|
||||
textBox1.Size = new Size(411, 39);
|
||||
textBox1.TabIndex = 14;
|
||||
comboFNE.BorderColor = Color.White;
|
||||
comboFNE.ButtonColor = Color.FromArgb(255, 255, 255);
|
||||
comboFNE.Dock = DockStyle.Top;
|
||||
comboFNE.FormattingEnabled = true;
|
||||
comboFNE.Location = new Point(211, 291);
|
||||
comboFNE.Margin = new Padding(4, 3, 4, 3);
|
||||
comboFNE.Name = "comboFNE";
|
||||
comboFNE.Size = new Size(374, 40);
|
||||
comboFNE.TabIndex = 19;
|
||||
//
|
||||
// textFNE
|
||||
//
|
||||
textFNE.Dock = DockStyle.Top;
|
||||
textFNE.Location = new Point(593, 291);
|
||||
textFNE.Margin = new Padding(4, 3, 4, 3);
|
||||
textFNE.Name = "textFNE";
|
||||
textFNE.PlaceholderText = "action";
|
||||
textFNE.Size = new Size(375, 39);
|
||||
textFNE.TabIndex = 18;
|
||||
//
|
||||
// labelFNC
|
||||
//
|
||||
labelFNC.AutoSize = true;
|
||||
labelFNC.Location = new Point(16, 242);
|
||||
labelFNC.Margin = new Padding(0);
|
||||
labelFNC.Name = "labelFNC";
|
||||
labelFNC.Padding = new Padding(5, 11, 0, 0);
|
||||
labelFNC.Size = new Size(85, 43);
|
||||
labelFNC.TabIndex = 15;
|
||||
labelFNC.Text = "FN+C:";
|
||||
//
|
||||
// textM2
|
||||
//
|
||||
textM2.Dock = DockStyle.Top;
|
||||
textM2.Location = new Point(594, 61);
|
||||
textM2.Margin = new Padding(5, 3, 5, 3);
|
||||
textM2.Name = "textM2";
|
||||
textM2.PlaceholderText = "action";
|
||||
textM2.Size = new Size(373, 39);
|
||||
textM2.TabIndex = 14;
|
||||
//
|
||||
// textM1
|
||||
//
|
||||
textM1.Dock = DockStyle.Top;
|
||||
textM1.Location = new Point(558, 15);
|
||||
textM1.Location = new Point(593, 15);
|
||||
textM1.Margin = new Padding(4, 3, 4, 3);
|
||||
textM1.Name = "textM1";
|
||||
textM1.PlaceholderText = "action";
|
||||
textM1.Size = new Size(411, 39);
|
||||
textM1.Size = new Size(375, 39);
|
||||
textM1.TabIndex = 13;
|
||||
//
|
||||
// comboM1
|
||||
@@ -317,10 +355,10 @@ namespace GHelper
|
||||
comboM1.Dock = DockStyle.Top;
|
||||
comboM1.FormattingEnabled = true;
|
||||
comboM1.Items.AddRange(new object[] { Strings.Default, Strings.VolumeMute, Strings.PlayPause, Strings.PrintScreen, Strings.ToggleAura, Strings.Custom });
|
||||
comboM1.Location = new Point(167, 15);
|
||||
comboM1.Location = new Point(211, 15);
|
||||
comboM1.Margin = new Padding(4, 3, 4, 3);
|
||||
comboM1.Name = "comboM1";
|
||||
comboM1.Size = new Size(383, 40);
|
||||
comboM1.Size = new Size(374, 40);
|
||||
comboM1.TabIndex = 11;
|
||||
//
|
||||
// labelM1
|
||||
@@ -329,8 +367,8 @@ namespace GHelper
|
||||
labelM1.Location = new Point(16, 12);
|
||||
labelM1.Margin = new Padding(0);
|
||||
labelM1.Name = "labelM1";
|
||||
labelM1.Padding = new Padding(5, 10, 0, 0);
|
||||
labelM1.Size = new Size(59, 42);
|
||||
labelM1.Padding = new Padding(5, 11, 0, 0);
|
||||
labelM1.Size = new Size(59, 43);
|
||||
labelM1.TabIndex = 9;
|
||||
labelM1.Text = "M1:";
|
||||
//
|
||||
@@ -341,10 +379,10 @@ namespace GHelper
|
||||
comboM4.Dock = DockStyle.Top;
|
||||
comboM4.FormattingEnabled = true;
|
||||
comboM4.Items.AddRange(new object[] { Strings.PerformanceMode, Strings.OpenGHelper, Strings.Custom });
|
||||
comboM4.Location = new Point(167, 153);
|
||||
comboM4.Location = new Point(211, 153);
|
||||
comboM4.Margin = new Padding(4, 3, 4, 3);
|
||||
comboM4.Name = "comboM4";
|
||||
comboM4.Size = new Size(383, 40);
|
||||
comboM4.Size = new Size(374, 40);
|
||||
comboM4.TabIndex = 3;
|
||||
//
|
||||
// comboM3
|
||||
@@ -354,30 +392,30 @@ namespace GHelper
|
||||
comboM3.Dock = DockStyle.Top;
|
||||
comboM3.FormattingEnabled = true;
|
||||
comboM3.Items.AddRange(new object[] { Strings.Default, Strings.VolumeMute, Strings.PlayPause, Strings.PrintScreen, Strings.ToggleAura, Strings.Custom });
|
||||
comboM3.Location = new Point(167, 107);
|
||||
comboM3.Location = new Point(211, 107);
|
||||
comboM3.Margin = new Padding(4, 3, 4, 3);
|
||||
comboM3.Name = "comboM3";
|
||||
comboM3.Size = new Size(383, 40);
|
||||
comboM3.Size = new Size(374, 40);
|
||||
comboM3.TabIndex = 1;
|
||||
//
|
||||
// textM4
|
||||
//
|
||||
textM4.Dock = DockStyle.Top;
|
||||
textM4.Location = new Point(558, 153);
|
||||
textM4.Location = new Point(593, 153);
|
||||
textM4.Margin = new Padding(4, 3, 4, 3);
|
||||
textM4.Name = "textM4";
|
||||
textM4.PlaceholderText = "action";
|
||||
textM4.Size = new Size(411, 39);
|
||||
textM4.Size = new Size(375, 39);
|
||||
textM4.TabIndex = 5;
|
||||
//
|
||||
// textM3
|
||||
//
|
||||
textM3.Dock = DockStyle.Top;
|
||||
textM3.Location = new Point(558, 107);
|
||||
textM3.Location = new Point(593, 107);
|
||||
textM3.Margin = new Padding(4, 3, 4, 3);
|
||||
textM3.Name = "textM3";
|
||||
textM3.PlaceholderText = "action";
|
||||
textM3.Size = new Size(411, 39);
|
||||
textM3.Size = new Size(375, 39);
|
||||
textM3.TabIndex = 4;
|
||||
//
|
||||
// labelM4
|
||||
@@ -386,8 +424,8 @@ namespace GHelper
|
||||
labelM4.Location = new Point(16, 150);
|
||||
labelM4.Margin = new Padding(0);
|
||||
labelM4.Name = "labelM4";
|
||||
labelM4.Padding = new Padding(5, 10, 0, 0);
|
||||
labelM4.Size = new Size(116, 42);
|
||||
labelM4.Padding = new Padding(5, 11, 0, 0);
|
||||
labelM4.Size = new Size(116, 43);
|
||||
labelM4.TabIndex = 2;
|
||||
labelM4.Text = "M4/ROG:";
|
||||
//
|
||||
@@ -397,8 +435,8 @@ namespace GHelper
|
||||
labelM3.Location = new Point(16, 104);
|
||||
labelM3.Margin = new Padding(0);
|
||||
labelM3.Name = "labelM3";
|
||||
labelM3.Padding = new Padding(5, 10, 0, 0);
|
||||
labelM3.Size = new Size(59, 42);
|
||||
labelM3.Padding = new Padding(5, 11, 0, 0);
|
||||
labelM3.Size = new Size(59, 43);
|
||||
labelM3.TabIndex = 0;
|
||||
labelM3.Text = "M3:";
|
||||
//
|
||||
@@ -408,8 +446,8 @@ namespace GHelper
|
||||
labelM2.Location = new Point(16, 58);
|
||||
labelM2.Margin = new Padding(0);
|
||||
labelM2.Name = "labelM2";
|
||||
labelM2.Padding = new Padding(5, 10, 0, 0);
|
||||
labelM2.Size = new Size(59, 42);
|
||||
labelM2.Padding = new Padding(5, 11, 0, 0);
|
||||
labelM2.Size = new Size(59, 43);
|
||||
labelM2.TabIndex = 10;
|
||||
labelM2.Text = "M2:";
|
||||
//
|
||||
@@ -420,10 +458,10 @@ namespace GHelper
|
||||
comboM2.Dock = DockStyle.Top;
|
||||
comboM2.FormattingEnabled = true;
|
||||
comboM2.Items.AddRange(new object[] { Strings.Default, Strings.VolumeMute, Strings.PlayPause, Strings.PrintScreen, Strings.ToggleAura, Strings.Custom });
|
||||
comboM2.Location = new Point(167, 61);
|
||||
comboM2.Location = new Point(211, 61);
|
||||
comboM2.Margin = new Padding(4, 3, 4, 3);
|
||||
comboM2.Name = "comboM2";
|
||||
comboM2.Size = new Size(383, 40);
|
||||
comboM2.Size = new Size(374, 40);
|
||||
comboM2.TabIndex = 12;
|
||||
//
|
||||
// labelFNF4
|
||||
@@ -432,8 +470,8 @@ namespace GHelper
|
||||
labelFNF4.Location = new Point(16, 196);
|
||||
labelFNF4.Margin = new Padding(0);
|
||||
labelFNF4.Name = "labelFNF4";
|
||||
labelFNF4.Padding = new Padding(5, 10, 0, 0);
|
||||
labelFNF4.Size = new Size(95, 42);
|
||||
labelFNF4.Padding = new Padding(5, 11, 0, 0);
|
||||
labelFNF4.Size = new Size(95, 43);
|
||||
labelFNF4.TabIndex = 6;
|
||||
labelFNF4.Text = "FN+F4:";
|
||||
//
|
||||
@@ -443,20 +481,20 @@ namespace GHelper
|
||||
comboFNF4.ButtonColor = Color.FromArgb(255, 255, 255);
|
||||
comboFNF4.Dock = DockStyle.Top;
|
||||
comboFNF4.FormattingEnabled = true;
|
||||
comboFNF4.Location = new Point(167, 199);
|
||||
comboFNF4.Location = new Point(211, 199);
|
||||
comboFNF4.Margin = new Padding(4, 3, 4, 3);
|
||||
comboFNF4.Name = "comboFNF4";
|
||||
comboFNF4.Size = new Size(383, 40);
|
||||
comboFNF4.Size = new Size(374, 40);
|
||||
comboFNF4.TabIndex = 7;
|
||||
//
|
||||
// textFNF4
|
||||
//
|
||||
textFNF4.Dock = DockStyle.Top;
|
||||
textFNF4.Location = new Point(558, 199);
|
||||
textFNF4.Location = new Point(593, 199);
|
||||
textFNF4.Margin = new Padding(4, 3, 4, 3);
|
||||
textFNF4.Name = "textFNF4";
|
||||
textFNF4.PlaceholderText = "action";
|
||||
textFNF4.Size = new Size(411, 39);
|
||||
textFNF4.Size = new Size(375, 39);
|
||||
textFNF4.TabIndex = 8;
|
||||
//
|
||||
// comboFNC
|
||||
@@ -465,20 +503,20 @@ namespace GHelper
|
||||
comboFNC.ButtonColor = Color.FromArgb(255, 255, 255);
|
||||
comboFNC.Dock = DockStyle.Top;
|
||||
comboFNC.FormattingEnabled = true;
|
||||
comboFNC.Location = new Point(167, 245);
|
||||
comboFNC.Location = new Point(211, 245);
|
||||
comboFNC.Margin = new Padding(4, 3, 4, 3);
|
||||
comboFNC.Name = "comboFNC";
|
||||
comboFNC.Size = new Size(383, 40);
|
||||
comboFNC.Size = new Size(374, 40);
|
||||
comboFNC.TabIndex = 16;
|
||||
//
|
||||
// textFNC
|
||||
//
|
||||
textFNC.Dock = DockStyle.Top;
|
||||
textFNC.Location = new Point(558, 245);
|
||||
textFNC.Location = new Point(593, 245);
|
||||
textFNC.Margin = new Padding(4, 3, 4, 3);
|
||||
textFNC.Name = "textFNC";
|
||||
textFNC.PlaceholderText = "action";
|
||||
textFNC.Size = new Size(411, 39);
|
||||
textFNC.Size = new Size(375, 39);
|
||||
textFNC.TabIndex = 17;
|
||||
//
|
||||
// tableKeys
|
||||
@@ -487,7 +525,6 @@ namespace GHelper
|
||||
tableKeys.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
|
||||
tableKeys.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40F));
|
||||
tableKeys.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40F));
|
||||
tableKeys.Controls.Add(labelFNC, 0, 5);
|
||||
tableKeys.Location = new Point(0, 0);
|
||||
tableKeys.Name = "tableKeys";
|
||||
tableKeys.RowCount = 6;
|
||||
@@ -500,26 +537,6 @@ namespace GHelper
|
||||
tableKeys.Size = new Size(200, 100);
|
||||
tableKeys.TabIndex = 0;
|
||||
//
|
||||
// labelFNC
|
||||
//
|
||||
labelFNC.AutoSize = true;
|
||||
labelFNC.Location = new Point(4, 100);
|
||||
labelFNC.Margin = new Padding(4, 0, 4, 0);
|
||||
labelFNC.Name = "labelFNC";
|
||||
labelFNC.Size = new Size(32, 20);
|
||||
labelFNC.TabIndex = 15;
|
||||
labelFNC.Text = "FN+C:";
|
||||
//
|
||||
// textM2
|
||||
//
|
||||
textM2.Dock = DockStyle.Top;
|
||||
textM2.Location = new Point(124, 2);
|
||||
textM2.Margin = new Padding(4, 2, 4, 2);
|
||||
textM2.Name = "textM2";
|
||||
textM2.PlaceholderText = "action";
|
||||
textM2.Size = new Size(72, 39);
|
||||
textM2.TabIndex = 14;
|
||||
//
|
||||
// panelBacklightHeader
|
||||
//
|
||||
panelBacklightHeader.AutoSize = true;
|
||||
@@ -528,20 +545,21 @@ namespace GHelper
|
||||
panelBacklightHeader.Controls.Add(pictureBacklight);
|
||||
panelBacklightHeader.Controls.Add(labelBacklightTitle);
|
||||
panelBacklightHeader.Dock = DockStyle.Top;
|
||||
panelBacklightHeader.Location = new Point(15, 370);
|
||||
panelBacklightHeader.Location = new Point(15, 417);
|
||||
panelBacklightHeader.Name = "panelBacklightHeader";
|
||||
panelBacklightHeader.Padding = new Padding(10, 5, 10, 5);
|
||||
panelBacklightHeader.Size = new Size(983, 50);
|
||||
panelBacklightHeader.Padding = new Padding(11, 5, 11, 5);
|
||||
panelBacklightHeader.Size = new Size(983, 51);
|
||||
panelBacklightHeader.TabIndex = 44;
|
||||
//
|
||||
// sliderBrightness
|
||||
//
|
||||
sliderBrightness.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||
sliderBrightness.Location = new Point(546, 6);
|
||||
sliderBrightness.Location = new Point(467, 5);
|
||||
sliderBrightness.Margin = new Padding(0);
|
||||
sliderBrightness.Max = 3;
|
||||
sliderBrightness.Min = 0;
|
||||
sliderBrightness.Name = "sliderBrightness";
|
||||
sliderBrightness.Size = new Size(419, 36);
|
||||
sliderBrightness.Size = new Size(500, 40);
|
||||
sliderBrightness.Step = 1;
|
||||
sliderBrightness.TabIndex = 50;
|
||||
sliderBrightness.Text = "sliderBrightness";
|
||||
@@ -551,7 +569,7 @@ namespace GHelper
|
||||
//
|
||||
pictureBacklight.BackgroundImage = Resources.backlight;
|
||||
pictureBacklight.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
pictureBacklight.Location = new Point(20, 10);
|
||||
pictureBacklight.Location = new Point(20, 11);
|
||||
pictureBacklight.Name = "pictureBacklight";
|
||||
pictureBacklight.Size = new Size(32, 32);
|
||||
pictureBacklight.TabIndex = 3;
|
||||
@@ -574,7 +592,7 @@ namespace GHelper
|
||||
panelBacklight.Controls.Add(panelXMG);
|
||||
panelBacklight.Controls.Add(tableBacklight);
|
||||
panelBacklight.Dock = DockStyle.Top;
|
||||
panelBacklight.Location = new Point(15, 420);
|
||||
panelBacklight.Location = new Point(15, 468);
|
||||
panelBacklight.Name = "panelBacklight";
|
||||
panelBacklight.Padding = new Padding(0, 5, 0, 5);
|
||||
panelBacklight.Size = new Size(983, 402);
|
||||
@@ -622,7 +640,7 @@ namespace GHelper
|
||||
labelBacklightTimeout.Location = new Point(16, 63);
|
||||
labelBacklightTimeout.Margin = new Padding(4, 0, 4, 0);
|
||||
labelBacklightTimeout.Name = "labelBacklightTimeout";
|
||||
labelBacklightTimeout.Size = new Size(646, 47);
|
||||
labelBacklightTimeout.Size = new Size(612, 47);
|
||||
labelBacklightTimeout.TabIndex = 46;
|
||||
labelBacklightTimeout.Text = "Timeout when plugged / on battery";
|
||||
//
|
||||
@@ -631,7 +649,7 @@ namespace GHelper
|
||||
labelSpeed.Location = new Point(16, 16);
|
||||
labelSpeed.Margin = new Padding(4, 0, 4, 0);
|
||||
labelSpeed.Name = "labelSpeed";
|
||||
labelSpeed.Size = new Size(646, 43);
|
||||
labelSpeed.Size = new Size(612, 43);
|
||||
labelSpeed.TabIndex = 44;
|
||||
labelSpeed.Text = "Animation Speed";
|
||||
//
|
||||
@@ -665,7 +683,7 @@ namespace GHelper
|
||||
// checkXMG
|
||||
//
|
||||
checkXMG.AutoSize = true;
|
||||
checkXMG.Location = new Point(4, 10);
|
||||
checkXMG.Location = new Point(4, 11);
|
||||
checkXMG.Margin = new Padding(4, 3, 4, 3);
|
||||
checkXMG.Name = "checkXMG";
|
||||
checkXMG.Padding = new Padding(16, 3, 7, 3);
|
||||
@@ -963,10 +981,10 @@ namespace GHelper
|
||||
panelSettingsHeader.Controls.Add(pictureSettings);
|
||||
panelSettingsHeader.Controls.Add(labelSettings);
|
||||
panelSettingsHeader.Dock = DockStyle.Top;
|
||||
panelSettingsHeader.Location = new Point(15, 822);
|
||||
panelSettingsHeader.Location = new Point(15, 870);
|
||||
panelSettingsHeader.Name = "panelSettingsHeader";
|
||||
panelSettingsHeader.Padding = new Padding(10, 5, 10, 5);
|
||||
panelSettingsHeader.Size = new Size(983, 50);
|
||||
panelSettingsHeader.Padding = new Padding(11, 5, 11, 5);
|
||||
panelSettingsHeader.Size = new Size(983, 51);
|
||||
panelSettingsHeader.TabIndex = 45;
|
||||
//
|
||||
// pictureLog
|
||||
@@ -975,7 +993,7 @@ namespace GHelper
|
||||
pictureLog.BackgroundImage = Resources.icons8_log_32;
|
||||
pictureLog.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
pictureLog.Cursor = Cursors.Hand;
|
||||
pictureLog.Location = new Point(930, 10);
|
||||
pictureLog.Location = new Point(931, 11);
|
||||
pictureLog.Margin = new Padding(4, 3, 4, 3);
|
||||
pictureLog.Name = "pictureLog";
|
||||
pictureLog.Size = new Size(32, 32);
|
||||
@@ -986,7 +1004,7 @@ namespace GHelper
|
||||
//
|
||||
pictureSettings.BackgroundImage = Resources.icons8_settings_32;
|
||||
pictureSettings.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
pictureSettings.Location = new Point(20, 10);
|
||||
pictureSettings.Location = new Point(20, 11);
|
||||
pictureSettings.Name = "pictureSettings";
|
||||
pictureSettings.Size = new Size(32, 32);
|
||||
pictureSettings.TabIndex = 1;
|
||||
@@ -1015,10 +1033,10 @@ namespace GHelper
|
||||
panelSettings.Controls.Add(checkGpuApps);
|
||||
panelSettings.Controls.Add(checkFnLock);
|
||||
panelSettings.Dock = DockStyle.Top;
|
||||
panelSettings.Location = new Point(15, 872);
|
||||
panelSettings.Location = new Point(15, 921);
|
||||
panelSettings.Name = "panelSettings";
|
||||
panelSettings.Padding = new Padding(20, 5, 10, 5);
|
||||
panelSettings.Size = new Size(983, 344);
|
||||
panelSettings.Padding = new Padding(20, 5, 11, 5);
|
||||
panelSettings.Size = new Size(983, 346);
|
||||
panelSettings.TabIndex = 46;
|
||||
//
|
||||
// checkAutoToggleClamshellMode
|
||||
@@ -1026,10 +1044,9 @@ namespace GHelper
|
||||
checkAutoToggleClamshellMode.AutoSize = true;
|
||||
checkAutoToggleClamshellMode.Dock = DockStyle.Top;
|
||||
checkAutoToggleClamshellMode.Location = new Point(20, 299);
|
||||
checkAutoToggleClamshellMode.Margin = new Padding(2);
|
||||
checkAutoToggleClamshellMode.Name = "checkAutoToggleClamshellMode";
|
||||
checkAutoToggleClamshellMode.Padding = new Padding(2);
|
||||
checkAutoToggleClamshellMode.Size = new Size(953, 40);
|
||||
checkAutoToggleClamshellMode.Padding = new Padding(3);
|
||||
checkAutoToggleClamshellMode.Size = new Size(952, 42);
|
||||
checkAutoToggleClamshellMode.TabIndex = 58;
|
||||
checkAutoToggleClamshellMode.Text = "Auto Toggle Clamshell Mode";
|
||||
checkAutoToggleClamshellMode.UseVisualStyleBackColor = true;
|
||||
@@ -1042,7 +1059,7 @@ namespace GHelper
|
||||
checkAutoApplyWindowsPowerMode.Margin = new Padding(4, 3, 4, 3);
|
||||
checkAutoApplyWindowsPowerMode.Name = "checkAutoApplyWindowsPowerMode";
|
||||
checkAutoApplyWindowsPowerMode.Padding = new Padding(3);
|
||||
checkAutoApplyWindowsPowerMode.Size = new Size(953, 42);
|
||||
checkAutoApplyWindowsPowerMode.Size = new Size(952, 42);
|
||||
checkAutoApplyWindowsPowerMode.TabIndex = 54;
|
||||
checkAutoApplyWindowsPowerMode.Text = "Auto Adjust Windows Power Mode";
|
||||
checkAutoApplyWindowsPowerMode.UseVisualStyleBackColor = true;
|
||||
@@ -1055,7 +1072,7 @@ namespace GHelper
|
||||
checkTopmost.Margin = new Padding(4, 3, 4, 3);
|
||||
checkTopmost.Name = "checkTopmost";
|
||||
checkTopmost.Padding = new Padding(3);
|
||||
checkTopmost.Size = new Size(953, 42);
|
||||
checkTopmost.Size = new Size(952, 42);
|
||||
checkTopmost.TabIndex = 51;
|
||||
checkTopmost.Text = Strings.WindowTop;
|
||||
checkTopmost.UseVisualStyleBackColor = true;
|
||||
@@ -1068,7 +1085,7 @@ namespace GHelper
|
||||
checkNoOverdrive.Margin = new Padding(4, 3, 4, 3);
|
||||
checkNoOverdrive.Name = "checkNoOverdrive";
|
||||
checkNoOverdrive.Padding = new Padding(3);
|
||||
checkNoOverdrive.Size = new Size(953, 42);
|
||||
checkNoOverdrive.Size = new Size(952, 42);
|
||||
checkNoOverdrive.TabIndex = 52;
|
||||
checkNoOverdrive.Text = Strings.DisableOverdrive;
|
||||
checkNoOverdrive.UseVisualStyleBackColor = true;
|
||||
@@ -1081,7 +1098,7 @@ namespace GHelper
|
||||
checkUSBC.Margin = new Padding(4, 3, 4, 3);
|
||||
checkUSBC.Name = "checkUSBC";
|
||||
checkUSBC.Padding = new Padding(3);
|
||||
checkUSBC.Size = new Size(953, 42);
|
||||
checkUSBC.Size = new Size(952, 42);
|
||||
checkUSBC.TabIndex = 53;
|
||||
checkUSBC.Text = "Keep GPU disabled on USB-C charger in Optimized mode";
|
||||
checkUSBC.UseVisualStyleBackColor = true;
|
||||
@@ -1094,7 +1111,7 @@ namespace GHelper
|
||||
checkVariBright.Margin = new Padding(4, 3, 4, 3);
|
||||
checkVariBright.Name = "checkVariBright";
|
||||
checkVariBright.Padding = new Padding(3);
|
||||
checkVariBright.Size = new Size(953, 42);
|
||||
checkVariBright.Size = new Size(952, 42);
|
||||
checkVariBright.TabIndex = 57;
|
||||
checkVariBright.Text = "AMD Display VariBright";
|
||||
checkVariBright.UseVisualStyleBackColor = true;
|
||||
@@ -1107,7 +1124,7 @@ namespace GHelper
|
||||
checkGpuApps.Margin = new Padding(4, 3, 4, 3);
|
||||
checkGpuApps.Name = "checkGpuApps";
|
||||
checkGpuApps.Padding = new Padding(3);
|
||||
checkGpuApps.Size = new Size(953, 42);
|
||||
checkGpuApps.Size = new Size(952, 42);
|
||||
checkGpuApps.TabIndex = 55;
|
||||
checkGpuApps.Text = "Stop all apps using GPU when switching to Eco";
|
||||
checkGpuApps.UseVisualStyleBackColor = true;
|
||||
@@ -1133,7 +1150,7 @@ namespace GHelper
|
||||
AutoScroll = true;
|
||||
AutoSize = true;
|
||||
AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
ClientSize = new Size(1013, 1355);
|
||||
ClientSize = new Size(1013, 1431);
|
||||
Controls.Add(panelServices);
|
||||
Controls.Add(panelSettings);
|
||||
Controls.Add(panelSettingsHeader);
|
||||
@@ -1146,7 +1163,7 @@ namespace GHelper
|
||||
MaximizeBox = false;
|
||||
MdiChildrenMinimizedAnchorBottom = false;
|
||||
MinimizeBox = false;
|
||||
MinimumSize = new Size(1034, 71);
|
||||
MinimumSize = new Size(1033, 71);
|
||||
Name = "Extra";
|
||||
Padding = new Padding(15);
|
||||
ShowIcon = false;
|
||||
@@ -1163,8 +1180,6 @@ namespace GHelper
|
||||
panelBindings.PerformLayout();
|
||||
tableBindings.ResumeLayout(false);
|
||||
tableBindings.PerformLayout();
|
||||
tableKeys.ResumeLayout(false);
|
||||
tableKeys.PerformLayout();
|
||||
panelBacklightHeader.ResumeLayout(false);
|
||||
panelBacklightHeader.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBacklight).EndInit();
|
||||
@@ -1193,8 +1208,8 @@ namespace GHelper
|
||||
private Panel panelBindingsHeader;
|
||||
private Panel panelBindings;
|
||||
private TableLayoutPanel tableBindings;
|
||||
private Label label1;
|
||||
private TextBox textBox1;
|
||||
private Label labelFNC;
|
||||
private TextBox textM2;
|
||||
private TextBox textM1;
|
||||
private RComboBox comboM1;
|
||||
private Label labelM1;
|
||||
@@ -1213,8 +1228,6 @@ namespace GHelper
|
||||
private TextBox textFNC;
|
||||
private PictureBox pictureHelp;
|
||||
private TableLayoutPanel tableKeys;
|
||||
private Label labelFNC;
|
||||
private TextBox textM2;
|
||||
private PictureBox pictureBindings;
|
||||
private Label labelBindings;
|
||||
private Panel panelBacklightHeader;
|
||||
@@ -1265,5 +1278,9 @@ namespace GHelper
|
||||
private Slider sliderBrightness;
|
||||
private PictureBox pictureLog;
|
||||
private CheckBox checkAutoToggleClamshellMode;
|
||||
private Label labelFNE;
|
||||
private RComboBox comboFNE;
|
||||
private TextBox textFNE;
|
||||
private Slider slider1;
|
||||
}
|
||||
}
|
||||
82
app/Extra.cs
82
app/Extra.cs
@@ -13,9 +13,11 @@ namespace GHelper
|
||||
ScreenControl screenControl = new ScreenControl();
|
||||
ClamshellModeControl clamshellControl = new ClamshellModeControl();
|
||||
|
||||
const string EMPTY = "--------------";
|
||||
|
||||
Dictionary<string, string> customActions = new Dictionary<string, string>
|
||||
{
|
||||
{"","--------------" },
|
||||
{"", EMPTY},
|
||||
{"mute", Properties.Strings.VolumeMute},
|
||||
{"screenshot", Properties.Strings.PrintScreen},
|
||||
{"play", Properties.Strings.PlayPause},
|
||||
@@ -54,6 +56,16 @@ namespace GHelper
|
||||
customActions[""] = Properties.Strings.ToggleFnLock;
|
||||
customActions.Remove("fnlock");
|
||||
break;
|
||||
case "fne":
|
||||
customActions[""] = "Calculator";
|
||||
customActions["ghelper"] = Properties.Strings.OpenGHelper;
|
||||
break;
|
||||
case "paddle":
|
||||
customActions[""] = EMPTY;
|
||||
break;
|
||||
case "cc":
|
||||
customActions[""] = EMPTY;
|
||||
break;
|
||||
}
|
||||
|
||||
combo.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||
@@ -118,38 +130,76 @@ namespace GHelper
|
||||
|
||||
Text = Properties.Strings.ExtraSettings;
|
||||
|
||||
if (AppConfig.ContainsModel("Duo"))
|
||||
if (AppConfig.IsDUO())
|
||||
{
|
||||
customActions.Add("screenpad_down", Properties.Strings.ScreenPadDown);
|
||||
customActions.Add("screenpad_up", Properties.Strings.ScreenPadUp);
|
||||
}
|
||||
|
||||
if (InputDispatcher.NoMKeys())
|
||||
if (AppConfig.NoMKeys())
|
||||
{
|
||||
labelM1.Text = "FN+F2";
|
||||
labelM2.Text = "FN+F3";
|
||||
labelM3.Text = "FN+F4";
|
||||
labelM4.Text = "FN+NmEnter";
|
||||
|
||||
//labelM4.Visible = comboM4.Visible = textM4.Visible = false;
|
||||
labelM4.Visible = comboM4.Visible = textM4.Visible = false;
|
||||
labelFNF4.Visible = comboFNF4.Visible = textFNF4.Visible = false;
|
||||
}
|
||||
|
||||
if (AppConfig.NoAura())
|
||||
{
|
||||
labelFNF4.Visible = comboFNF4.Visible = textFNF4.Visible = false;
|
||||
}
|
||||
|
||||
if (!AppConfig.IsTUF())
|
||||
{
|
||||
labelFNE.Visible = comboFNE.Visible = textFNE.Visible = false;
|
||||
}
|
||||
|
||||
if (Program.acpi.DeviceGet(AsusACPI.GPUEco) < 0)
|
||||
{
|
||||
checkGpuApps.Visible = false;
|
||||
checkUSBC.Visible = false;
|
||||
}
|
||||
|
||||
// Change text and hide irrelevant options on the ROG Ally,
|
||||
// which is a bit of a special case piece of hardware.
|
||||
if (AppConfig.IsAlly())
|
||||
{
|
||||
labelM1.Visible = comboM1.Visible = textM1.Visible = false;
|
||||
labelM2.Visible = comboM2.Visible = textM2.Visible = false;
|
||||
|
||||
// Re-label M3 and M4 and FNF4 to match the front labels.
|
||||
labelM3.Text = "Ctrl Center";
|
||||
labelM4.Text = "ROG";
|
||||
labelFNF4.Text = "Back Paddles";
|
||||
|
||||
// Hide all of the FN options, as the Ally has no special keyboard FN key.
|
||||
labelFNC.Visible = false;
|
||||
comboFNC.Visible = false;
|
||||
textFNC.Visible = false;
|
||||
|
||||
SetKeyCombo(comboM3, textM3, "cc");
|
||||
SetKeyCombo(comboM4, textM4, "m4");
|
||||
SetKeyCombo(comboFNF4, textFNF4, "paddle");
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
SetKeyCombo(comboM1, textM1, "m1");
|
||||
SetKeyCombo(comboM2, textM2, "m2");
|
||||
|
||||
SetKeyCombo(comboM3, textM3, "m3");
|
||||
SetKeyCombo(comboM4, textM4, "m4");
|
||||
SetKeyCombo(comboFNF4, textFNF4, "fnf4");
|
||||
|
||||
SetKeyCombo(comboFNC, textFNC, "fnc");
|
||||
SetKeyCombo(comboFNE, textFNE, "fne");
|
||||
}
|
||||
|
||||
|
||||
|
||||
InitTheme();
|
||||
|
||||
SetKeyCombo(comboM1, textM1, "m1");
|
||||
SetKeyCombo(comboM2, textM2, "m2");
|
||||
SetKeyCombo(comboM3, textM3, "m3");
|
||||
SetKeyCombo(comboM4, textM4, "m4");
|
||||
SetKeyCombo(comboFNF4, textFNF4, "fnf4");
|
||||
SetKeyCombo(comboFNC, textFNC, "fnc");
|
||||
|
||||
Shown += Keyboard_Shown;
|
||||
|
||||
comboKeyboardSpeed.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||
@@ -203,7 +253,7 @@ namespace GHelper
|
||||
checkSleepLogo.CheckedChanged += CheckPower_CheckedChanged;
|
||||
checkShutdownLogo.CheckedChanged += CheckPower_CheckedChanged;
|
||||
|
||||
if (!AppConfig.ContainsModel("Strix"))
|
||||
if (!AppConfig.IsStrix())
|
||||
{
|
||||
labelBacklightBar.Visible = false;
|
||||
checkAwakeBar.Visible = false;
|
||||
@@ -211,7 +261,7 @@ namespace GHelper
|
||||
checkSleepBar.Visible = false;
|
||||
checkShutdownBar.Visible = false;
|
||||
|
||||
if (!AppConfig.ContainsModel("Z13"))
|
||||
if (!AppConfig.IsZ13())
|
||||
{
|
||||
labelBacklightLid.Visible = false;
|
||||
checkAwakeLid.Visible = false;
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing"">Blue</data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||
<AssemblyVersion>0.103</AssemblyVersion>
|
||||
<AssemblyVersion>0.106</AssemblyVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
||||
@@ -49,11 +49,16 @@ namespace GHelper.Gpu
|
||||
}
|
||||
|
||||
|
||||
public void SetGPUMode(int GPUMode)
|
||||
bool NoAutoUltimate()
|
||||
{
|
||||
return AppConfig.ContainsModel("G614") || AppConfig.ContainsModel("M16");
|
||||
}
|
||||
|
||||
public void SetGPUMode(int GPUMode, int auto = 0)
|
||||
{
|
||||
|
||||
int CurrentGPU = AppConfig.Get("gpu_mode");
|
||||
AppConfig.Set("gpu_auto", 0);
|
||||
AppConfig.Set("gpu_auto", auto);
|
||||
|
||||
if (CurrentGPU == GPUMode)
|
||||
{
|
||||
@@ -79,6 +84,11 @@ namespace GHelper.Gpu
|
||||
DialogResult dialogResult = MessageBox.Show(Properties.Strings.AlertUltimateOn, Properties.Strings.AlertUltimateTitle, MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
if (NoAutoUltimate())
|
||||
{
|
||||
Program.acpi.SetGPUEco(0);
|
||||
Thread.Sleep(100);
|
||||
}
|
||||
Program.acpi.DeviceSet(AsusACPI.GPUMux, 0, "GPUMux");
|
||||
restart = true;
|
||||
changed = true;
|
||||
@@ -166,10 +176,14 @@ namespace GHelper.Gpu
|
||||
|
||||
public static bool IsPlugged()
|
||||
{
|
||||
bool optimizedUSBC = AppConfig.Get("optimized_usbc") != 1;
|
||||
if (SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online) return false;
|
||||
if (!AppConfig.Is("optimized_usbc")) return true;
|
||||
|
||||
return SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online &&
|
||||
(optimizedUSBC || Program.acpi.DeviceGet(AsusACPI.ChargerMode) < AsusACPI.ChargerUSB);
|
||||
int chargerMode = Program.acpi.DeviceGet(AsusACPI.ChargerMode);
|
||||
Logger.WriteLine("ChargerStatus: " + chargerMode);
|
||||
|
||||
if (chargerMode < 0) return true;
|
||||
return (chargerMode & AsusACPI.ChargerBarrel) > 0;
|
||||
|
||||
}
|
||||
|
||||
@@ -188,14 +202,12 @@ namespace GHelper.Gpu
|
||||
|
||||
if (mux == 0)
|
||||
{
|
||||
if (optimized) SetGPUMode(AsusACPI.GPUModeStandard);
|
||||
if (optimized) SetGPUMode(AsusACPI.GPUModeStandard, 1);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
if (ReEnableGPU()) return true;
|
||||
|
||||
if (eco == 1)
|
||||
if ((GpuAuto && IsPlugged()) || (ForceGPU && GpuMode == AsusACPI.GPUModeStandard))
|
||||
{
|
||||
@@ -256,21 +268,6 @@ namespace GHelper.Gpu
|
||||
}
|
||||
|
||||
|
||||
public bool ReEnableGPU()
|
||||
{
|
||||
|
||||
if (AppConfig.Get("gpu_reenable") != 1) return false;
|
||||
if (Screen.AllScreens.Length <= 1) return false;
|
||||
|
||||
Logger.WriteLine("Re-enabling gpu for 503 model");
|
||||
|
||||
Thread.Sleep(1000);
|
||||
SetGPUEco(1);
|
||||
Thread.Sleep(1000);
|
||||
SetGPUEco(0);
|
||||
return true;
|
||||
}
|
||||
|
||||
public void InitXGM()
|
||||
{
|
||||
bool connected = Program.acpi.IsXGConnected();
|
||||
|
||||
@@ -18,8 +18,13 @@ public static class HardwareControl
|
||||
public static float? cpuTemp = -1;
|
||||
public static decimal? batteryRate = 0;
|
||||
public static decimal batteryHealth = -1;
|
||||
public static decimal batteryCapacity = -1;
|
||||
|
||||
public static decimal? designCapacity;
|
||||
public static decimal? fullCapacity;
|
||||
public static decimal? chargeCapacity;
|
||||
|
||||
|
||||
public static int? gpuTemp = null;
|
||||
|
||||
public static string? cpuFan;
|
||||
@@ -106,9 +111,12 @@ public static class HardwareControl
|
||||
}
|
||||
|
||||
|
||||
public static decimal GetBatteryRate()
|
||||
public static void GetBatteryStatus()
|
||||
{
|
||||
|
||||
batteryRate = 0;
|
||||
chargeCapacity = 0;
|
||||
|
||||
try
|
||||
{
|
||||
ManagementScope scope = new ManagementScope("root\\WMI");
|
||||
@@ -117,26 +125,29 @@ public static class HardwareControl
|
||||
using ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
|
||||
foreach (ManagementObject obj in searcher.Get().Cast<ManagementObject>())
|
||||
{
|
||||
|
||||
chargeCapacity = Convert.ToDecimal(obj["RemainingCapacity"]);
|
||||
|
||||
decimal chargeRate = Convert.ToDecimal(obj["ChargeRate"]);
|
||||
decimal dischargeRate = Convert.ToDecimal(obj["DischargeRate"]);
|
||||
|
||||
if (chargeRate > 0)
|
||||
return chargeRate;
|
||||
batteryRate = chargeRate / 1000;
|
||||
else
|
||||
return -dischargeRate;
|
||||
}
|
||||
batteryRate = -dischargeRate / 1000;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine("Discharge Reading: " + ex.Message);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
public static void ReadFullChargeCapacity()
|
||||
{
|
||||
if (fullCapacity > 0) return;
|
||||
|
||||
try
|
||||
{
|
||||
@@ -159,6 +170,8 @@ public static class HardwareControl
|
||||
|
||||
public static void ReadDesignCapacity()
|
||||
{
|
||||
if (designCapacity > 0) return;
|
||||
|
||||
try
|
||||
{
|
||||
ManagementScope scope = new ManagementScope("root\\WMI");
|
||||
@@ -209,7 +222,19 @@ public static class HardwareControl
|
||||
lastUpdate = last;
|
||||
|
||||
cpuTemp = Program.acpi.DeviceGet(AsusACPI.Temp_CPU);
|
||||
//Debug.WriteLine(cpuTemp);
|
||||
|
||||
if (cpuTemp < 0) try
|
||||
{
|
||||
using (var ct = new PerformanceCounter("Thermal Zone Information", "Temperature", @"\_TZ.THRM", true))
|
||||
{
|
||||
cpuTemp = ct.NextValue() - 273;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine("Failed reading CPU temp :" + ex.Message);
|
||||
}
|
||||
|
||||
|
||||
return cpuTemp;
|
||||
}
|
||||
@@ -241,7 +266,15 @@ public static class HardwareControl
|
||||
if (gpuTemp is null || gpuTemp < 0)
|
||||
gpuTemp = Program.acpi.DeviceGet(AsusACPI.Temp_GPU);
|
||||
|
||||
batteryRate = GetBatteryRate() / 1000;
|
||||
ReadFullChargeCapacity();
|
||||
GetBatteryStatus();
|
||||
|
||||
if (fullCapacity > 0 && chargeCapacity > 0)
|
||||
{
|
||||
batteryCapacity = Math.Min(100, ((decimal)chargeCapacity / (decimal)fullCapacity) * 100);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static bool IsUsedGPU(int threshold = 10)
|
||||
|
||||
@@ -19,6 +19,8 @@ namespace GHelper.Input
|
||||
static ModeControl modeControl = Program.modeControl;
|
||||
static ScreenControl screenControl = new ScreenControl();
|
||||
|
||||
static bool isTUF = AppConfig.IsTUF();
|
||||
|
||||
KeyboardListener listener;
|
||||
KeyboardHook hook = new KeyboardHook();
|
||||
|
||||
@@ -104,14 +106,19 @@ namespace GHelper.Input
|
||||
if (keyProfile != Keys.None) hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control, keyProfile);
|
||||
if (keyApp != Keys.None) hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control, keyApp);
|
||||
|
||||
hook.RegisterHotKey(ModifierKeys.Control, Keys.VolumeDown);
|
||||
hook.RegisterHotKey(ModifierKeys.Control, Keys.VolumeUp);
|
||||
hook.RegisterHotKey(ModifierKeys.Shift, Keys.VolumeDown);
|
||||
hook.RegisterHotKey(ModifierKeys.Shift, Keys.VolumeUp);
|
||||
if (!AppConfig.Is("skip_hotkeys"))
|
||||
{
|
||||
hook.RegisterHotKey(ModifierKeys.Control, Keys.VolumeDown);
|
||||
hook.RegisterHotKey(ModifierKeys.Control, Keys.VolumeUp);
|
||||
hook.RegisterHotKey(ModifierKeys.Shift, Keys.VolumeDown);
|
||||
hook.RegisterHotKey(ModifierKeys.Shift, Keys.VolumeUp);
|
||||
}
|
||||
|
||||
if (!AppConfig.ContainsModel("Z13"))
|
||||
if (!AppConfig.IsZ13() && !AppConfig.IsAlly())
|
||||
{
|
||||
if (actionM1 is not null && actionM1.Length > 0) hook.RegisterHotKey(ModifierKeys.None, Keys.VolumeDown);
|
||||
if (actionM2 is not null && actionM2.Length > 0) hook.RegisterHotKey(ModifierKeys.None, Keys.VolumeUp);
|
||||
if (actionM2 is not null && actionM2.Length > 0) hook.RegisterHotKey(ModifierKeys.None, Keys.VolumeUp);
|
||||
}
|
||||
|
||||
// FN-Lock group
|
||||
|
||||
@@ -142,18 +149,23 @@ namespace GHelper.Input
|
||||
|
||||
}
|
||||
|
||||
static bool IsManualBrightness()
|
||||
{
|
||||
return AppConfig.ContainsModel("TUF") && !AppConfig.ContainsModel("FA506");
|
||||
}
|
||||
|
||||
public static bool NoMKeys()
|
||||
static void SetBrightness(int delta)
|
||||
{
|
||||
return AppConfig.ContainsModel("Z13") ||
|
||||
AppConfig.ContainsModel("FA506") ||
|
||||
AppConfig.ContainsModel("FX506") ||
|
||||
AppConfig.ContainsModel("Duo") ||
|
||||
AppConfig.ContainsModel("FX505");
|
||||
int brightness = -1;
|
||||
|
||||
if (isTUF) brightness = ScreenBrightness.Get();
|
||||
|
||||
if (delta > 0 || AppConfig.SwappedBrightness()) HandleOptimizationEvent(32);
|
||||
else HandleOptimizationEvent(16);
|
||||
|
||||
if (isTUF)
|
||||
{
|
||||
Thread.Sleep(100);
|
||||
if (brightness == ScreenBrightness.Get())
|
||||
Program.toast.RunToast(ScreenBrightness.Adjust(delta) + "%", (delta < 0 ) ? ToastIcon.BrightnessDown : ToastIcon.BrightnessUp);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void KeyPressed(object sender, KeyPressedEventArgs e)
|
||||
@@ -163,7 +175,7 @@ namespace GHelper.Input
|
||||
{
|
||||
Logger.WriteLine(e.Key.ToString());
|
||||
|
||||
if (NoMKeys())
|
||||
if (AppConfig.NoMKeys())
|
||||
{
|
||||
switch (e.Key)
|
||||
{
|
||||
@@ -179,7 +191,7 @@ namespace GHelper.Input
|
||||
}
|
||||
}
|
||||
|
||||
if (AppConfig.ContainsModel("Z13") || AppConfig.ContainsModel("Duo"))
|
||||
if (AppConfig.IsZ13() || AppConfig.IsDUO())
|
||||
{
|
||||
switch (e.Key)
|
||||
{
|
||||
@@ -189,7 +201,7 @@ namespace GHelper.Input
|
||||
}
|
||||
}
|
||||
|
||||
if (AppConfig.ContainsModel("GA401I") && !AppConfig.ContainsModel("GA401IHR"))
|
||||
if (AppConfig.NoAura())
|
||||
{
|
||||
switch (e.Key)
|
||||
{
|
||||
@@ -227,12 +239,10 @@ namespace GHelper.Input
|
||||
KeyboardHook.KeyPress(Keys.Snapshot);
|
||||
break;
|
||||
case Keys.F7:
|
||||
if (IsManualBrightness()) Program.toast.RunToast(ScreenBrightness.Adjust(-10) + "%", ToastIcon.BrightnessDown);
|
||||
HandleOptimizationEvent(16);
|
||||
SetBrightness(-10);
|
||||
break;
|
||||
case Keys.F8:
|
||||
if (IsManualBrightness()) Program.toast.RunToast(ScreenBrightness.Adjust(+10) + "%", ToastIcon.BrightnessUp);
|
||||
HandleOptimizationEvent(32);
|
||||
SetBrightness(+10);
|
||||
break;
|
||||
case Keys.F9:
|
||||
KeyboardHook.KeyWinPress(Keys.P);
|
||||
@@ -255,6 +265,7 @@ namespace GHelper.Input
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (e.Modifier == (ModifierKeys.Control | ModifierKeys.Shift))
|
||||
@@ -269,11 +280,11 @@ namespace GHelper.Input
|
||||
{
|
||||
case Keys.VolumeDown:
|
||||
// Screen brightness down on CTRL+VolDown
|
||||
HandleOptimizationEvent(16);
|
||||
SetBrightness(-10);
|
||||
break;
|
||||
case Keys.VolumeUp:
|
||||
// Screen brightness up on CTRL+VolUp
|
||||
HandleOptimizationEvent(32);
|
||||
SetBrightness(+10);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -311,6 +322,8 @@ namespace GHelper.Input
|
||||
action = "micmute";
|
||||
if (name == "fnc")
|
||||
action = "fnlock";
|
||||
if (name == "fne")
|
||||
action = "calculator";
|
||||
}
|
||||
|
||||
switch (action)
|
||||
@@ -351,10 +364,10 @@ namespace GHelper.Input
|
||||
Program.toast.RunToast(muteStatus ? "Muted" : "Unmuted", muteStatus ? ToastIcon.MicrophoneMute : ToastIcon.Microphone);
|
||||
break;
|
||||
case "brightness_up":
|
||||
HandleOptimizationEvent(32);
|
||||
SetBrightness(+10);
|
||||
break;
|
||||
case "brightness_down":
|
||||
HandleOptimizationEvent(16);
|
||||
SetBrightness(-10);
|
||||
break;
|
||||
case "screenpad_up":
|
||||
SetScreenpad(10);
|
||||
@@ -365,7 +378,9 @@ namespace GHelper.Input
|
||||
case "custom":
|
||||
CustomKey(name);
|
||||
break;
|
||||
|
||||
case "calculator":
|
||||
LaunchProcess("calc");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -408,43 +423,73 @@ namespace GHelper.Input
|
||||
|
||||
static void HandleEvent(int EventID)
|
||||
{
|
||||
switch (EventID)
|
||||
// The ROG Ally uses different M-key codes.
|
||||
// We'll special-case the translation of those.
|
||||
if (AppConfig.IsAlly())
|
||||
{
|
||||
case 124: // M3
|
||||
KeyProcess("m3");
|
||||
return;
|
||||
case 56: // M4 / Rog button
|
||||
case 181: // FN + Numpad Enter
|
||||
KeyProcess("m4");
|
||||
return;
|
||||
case 174: // FN+F5
|
||||
modeControl.CyclePerformanceMode();
|
||||
return;
|
||||
case 179: // FN+F4
|
||||
case 178: // FN+F4
|
||||
KeyProcess("fnf4");
|
||||
return;
|
||||
case 158: // Fn + C
|
||||
KeyProcess("fnc");
|
||||
return;
|
||||
case 78: // Fn + ESC
|
||||
ToggleFnLock();
|
||||
return;
|
||||
case 189: // Tablet mode
|
||||
TabletMode();
|
||||
return;
|
||||
case 197: // FN+F2
|
||||
SetBacklight(-1);
|
||||
return;
|
||||
case 196: // FN+F3
|
||||
SetBacklight(1);
|
||||
return;
|
||||
case 199: // ON Z13 - FN+F11 - cycles backlight
|
||||
SetBacklight(4);
|
||||
return;
|
||||
case 53: // FN+F6 on GA-502DU model
|
||||
NativeMethods.TurnOffScreen(Program.settingsForm.Handle);
|
||||
return;
|
||||
switch(EventID)
|
||||
{
|
||||
|
||||
// This is both the M1 and M2 keys.
|
||||
// There's a way to differentiate, apparently, but it isn't over USB or any other obvious protocol.
|
||||
case 165:
|
||||
KeyProcess("paddle");
|
||||
return;
|
||||
// The Command Center ("play-looking") button below the select key.
|
||||
case 166:
|
||||
KeyProcess("cc");
|
||||
return;
|
||||
// The M4/ROG key.
|
||||
case 56:
|
||||
KeyProcess("m4");
|
||||
return;
|
||||
|
||||
}
|
||||
}
|
||||
// All other devices seem to use the same HID key-codes,
|
||||
// so we can process them all the same.
|
||||
else
|
||||
{
|
||||
switch (EventID)
|
||||
{
|
||||
case 124: // M3
|
||||
KeyProcess("m3");
|
||||
return;
|
||||
case 56: // M4 / Rog button
|
||||
KeyProcess("m4");
|
||||
return;
|
||||
case 181: // FN + Numpad Enter
|
||||
KeyProcess("fne");
|
||||
return;
|
||||
case 174: // FN+F5
|
||||
modeControl.CyclePerformanceMode();
|
||||
return;
|
||||
case 179: // FN+F4
|
||||
case 178: // FN+F4
|
||||
KeyProcess("fnf4");
|
||||
return;
|
||||
case 158: // Fn + C
|
||||
KeyProcess("fnc");
|
||||
return;
|
||||
case 78: // Fn + ESC
|
||||
ToggleFnLock();
|
||||
return;
|
||||
case 189: // Tablet mode
|
||||
TabletMode();
|
||||
return;
|
||||
case 197: // FN+F2
|
||||
SetBacklight(-1);
|
||||
return;
|
||||
case 196: // FN+F3
|
||||
SetBacklight(1);
|
||||
return;
|
||||
case 199: // ON Z13 - FN+F11 - cycles backlight
|
||||
SetBacklight(4);
|
||||
return;
|
||||
case 53: // FN+F6 on GA-502DU model
|
||||
NativeMethods.TurnOffScreen(Program.settingsForm.Handle);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!OptimizationService.IsRunning())
|
||||
@@ -467,7 +512,7 @@ namespace GHelper.Input
|
||||
break;
|
||||
case 107: // FN+F10
|
||||
AsusUSB.TouchpadToggle();
|
||||
Thread.Sleep(50);
|
||||
Thread.Sleep(200);
|
||||
Program.toast.RunToast(GetTouchpadState() ? "On" : "Off", ToastIcon.Touchpad);
|
||||
break;
|
||||
case 108: // FN+F11
|
||||
|
||||
@@ -15,6 +15,17 @@ namespace GHelper.Peripherals.Mouse
|
||||
Never = 0xFF
|
||||
}
|
||||
|
||||
public enum DebounceTime
|
||||
{
|
||||
Disabled = 0x00, //?? not sure because mice with this setting have no "disabled". But the mouse accepts and stores 0x00 just fine
|
||||
MS12 = 0x02,
|
||||
MS16 = 0x03,
|
||||
MS20 = 0x04,
|
||||
MS24 = 0x05,
|
||||
MS28 = 0x06,
|
||||
MS32 = 0x07
|
||||
}
|
||||
|
||||
public enum PollingRate
|
||||
{
|
||||
PR125Hz = 0,
|
||||
@@ -129,7 +140,7 @@ namespace GHelper.Peripherals.Mouse
|
||||
public abstract class AsusMouse : Device, IPeripheral
|
||||
{
|
||||
private static string[] POLLING_RATES = { "125 Hz", "250 Hz", "500 Hz", "1000 Hz", "2000 Hz", "4000 Hz", "8000 Hz", "16000 Hz" };
|
||||
internal const bool PACKET_LOGGER_ALWAYS_ON = true;
|
||||
internal const bool PACKET_LOGGER_ALWAYS_ON = false;
|
||||
internal const int ASUS_MOUSE_PACKET_SIZE = 65;
|
||||
|
||||
public event EventHandler? Disconnect;
|
||||
@@ -168,13 +179,23 @@ namespace GHelper.Peripherals.Mouse
|
||||
public PollingRate PollingRate { get; protected set; }
|
||||
public bool AngleSnapping { get; protected set; }
|
||||
public short AngleAdjustmentDegrees { get; protected set; }
|
||||
public DebounceTime Debounce { get; protected set; }
|
||||
|
||||
|
||||
public AsusMouse(ushort vendorId, ushort productId, string path, bool wireless) : base(vendorId, productId)
|
||||
{
|
||||
this.path = path;
|
||||
this.Wireless = wireless;
|
||||
DpiSettings = new AsusMouseDPI[1];
|
||||
LightingSetting = new LightingSetting[SupportedLightingZones().Length];
|
||||
if (SupportedLightingZones().Length == 0)
|
||||
{
|
||||
LightingSetting = new LightingSetting[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
LightingSetting = new LightingSetting[SupportedLightingZones().Length];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public override bool Equals(object? obj)
|
||||
@@ -364,6 +385,7 @@ namespace GHelper.Peripherals.Mouse
|
||||
ReadDPI();
|
||||
ReadPollingRate();
|
||||
ReadLiftOffDistance();
|
||||
ReadDebounce();
|
||||
ReadLightingSetting();
|
||||
}
|
||||
|
||||
@@ -593,6 +615,21 @@ namespace GHelper.Peripherals.Mouse
|
||||
return false;
|
||||
}
|
||||
|
||||
public virtual int AngleTuningStep()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
public virtual int AngleTuningMin()
|
||||
{
|
||||
return -20;
|
||||
}
|
||||
|
||||
public virtual int AngleTuningMax()
|
||||
{
|
||||
return 20;
|
||||
}
|
||||
|
||||
public virtual string PollingRateDisplayString(PollingRate pollingRate)
|
||||
{
|
||||
return POLLING_RATES[(int)pollingRate];
|
||||
@@ -740,9 +777,10 @@ namespace GHelper.Peripherals.Mouse
|
||||
return;
|
||||
}
|
||||
|
||||
if (angleAdjustment < -20 || angleAdjustment > 20)
|
||||
if (angleAdjustment < AngleTuningMin() || angleAdjustment > AngleTuningMax())
|
||||
{
|
||||
Logger.WriteLine(GetDisplayName() + ": Angle Adjustment:" + angleAdjustment + " is outside of range [-20;20].");
|
||||
Logger.WriteLine(GetDisplayName() + ": Angle Adjustment:" + angleAdjustment
|
||||
+ " is outside of range [" + AngleTuningMin() + "; " + AngleTuningMax() + "].");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -801,6 +839,7 @@ namespace GHelper.Peripherals.Mouse
|
||||
{
|
||||
if (!CanChangeDPIProfile())
|
||||
{
|
||||
this.DpiProfile = profile;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1005,6 +1044,91 @@ namespace GHelper.Peripherals.Mouse
|
||||
this.LiftOffDistance = liftOffDistance;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
// Debounce
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
public virtual bool HasDebounceSetting()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public virtual int DebounceTimeInMS(DebounceTime dbt)
|
||||
{
|
||||
switch (dbt)
|
||||
{
|
||||
case DebounceTime.MS12: return 12;
|
||||
case DebounceTime.MS16: return 16;
|
||||
case DebounceTime.MS20: return 20;
|
||||
case DebounceTime.MS24: return 24;
|
||||
case DebounceTime.MS28: return 28;
|
||||
case DebounceTime.MS32: return 32;
|
||||
|
||||
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual byte[] GetReadDebouncePacket()
|
||||
{
|
||||
return new byte[] { 0x00, 0x12, 0x04, 0x00 };
|
||||
}
|
||||
|
||||
|
||||
protected virtual byte[] GetUpdateDebouncePacket(DebounceTime debounce)
|
||||
{
|
||||
return new byte[] { 0x00, 0x51, 0x31, 0x05, 0x00, ((byte)debounce) };
|
||||
}
|
||||
|
||||
protected virtual DebounceTime ParseDebounce(byte[] packet)
|
||||
{
|
||||
if (packet[1] != 0x12 || packet[2] != 0x04 || packet[3] != 0x00)
|
||||
{
|
||||
return DebounceTime.MS12;
|
||||
}
|
||||
|
||||
if (packet[15] < 0x02)
|
||||
{
|
||||
return DebounceTime.MS12;
|
||||
}
|
||||
|
||||
if (packet[15] > 0x07)
|
||||
{
|
||||
return DebounceTime.MS32;
|
||||
}
|
||||
|
||||
return (DebounceTime)packet[15];
|
||||
}
|
||||
|
||||
public void ReadDebounce()
|
||||
{
|
||||
if (!HasDebounceSetting())
|
||||
{
|
||||
return;
|
||||
}
|
||||
byte[]? response = WriteForResponse(GetReadDebouncePacket());
|
||||
if (response is null) return;
|
||||
|
||||
Debounce = ParseDebounce(response);
|
||||
|
||||
|
||||
Logger.WriteLine(GetDisplayName() + ": Read Debouce Setting: " + Debounce);
|
||||
}
|
||||
|
||||
public void SetDebounce(DebounceTime debounce)
|
||||
{
|
||||
if (!HasDebounceSetting())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
WriteForResponse(GetUpdateDebouncePacket(debounce));
|
||||
FlushSettings();
|
||||
|
||||
Logger.WriteLine(GetDisplayName() + ": Set Debouce to " + debounce);
|
||||
this.Debounce = debounce;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
// RGB
|
||||
// ------------------------------------------------------------------------------
|
||||
@@ -1068,7 +1192,7 @@ namespace GHelper.Peripherals.Mouse
|
||||
|
||||
public virtual LightingZone[] SupportedLightingZones()
|
||||
{
|
||||
return new LightingZone[] { };
|
||||
return new LightingZone[] { LightingZone.Logo };
|
||||
}
|
||||
|
||||
public virtual int IndexForZone(LightingZone zone)
|
||||
@@ -1086,6 +1210,11 @@ namespace GHelper.Peripherals.Mouse
|
||||
|
||||
public virtual bool IsLightingZoned()
|
||||
{
|
||||
if (LightingSetting.Length < 2)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
//Check whether all zones are the same or not
|
||||
for (int i = 1; i < LightingSetting.Length; ++i)
|
||||
{
|
||||
@@ -1195,7 +1324,7 @@ namespace GHelper.Peripherals.Mouse
|
||||
return setting;
|
||||
}
|
||||
|
||||
public void ReadLightingSetting()
|
||||
public virtual void ReadLightingSetting()
|
||||
{
|
||||
if (!HasRGB())
|
||||
{
|
||||
|
||||
@@ -50,6 +50,11 @@ namespace GHelper.Peripherals.Mouse.Models
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasDebounceSetting()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasLiftOffSetting()
|
||||
{
|
||||
return true;
|
||||
|
||||
91
app/Peripherals/Mouse/Models/GladiusIII.cs
Normal file
91
app/Peripherals/Mouse/Models/GladiusIII.cs
Normal file
@@ -0,0 +1,91 @@
|
||||
namespace GHelper.Peripherals.Mouse.Models
|
||||
{
|
||||
//P706_Wireless
|
||||
public class GladiusIII : AsusMouse
|
||||
{
|
||||
public GladiusIII() : base(0x0B05, 0x197F, "mi_00", true)
|
||||
{
|
||||
}
|
||||
|
||||
protected GladiusIII(ushort vendorId, bool wireless) : base(0x0B05, vendorId, "mi_00", wireless)
|
||||
{
|
||||
}
|
||||
|
||||
public override int DPIProfileCount()
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "ROG Gladius III (Wireless)";
|
||||
}
|
||||
|
||||
|
||||
public override PollingRate[] SupportedPollingrates()
|
||||
{
|
||||
return new PollingRate[] {
|
||||
PollingRate.PR125Hz,
|
||||
PollingRate.PR250Hz,
|
||||
PollingRate.PR500Hz,
|
||||
PollingRate.PR1000Hz
|
||||
};
|
||||
}
|
||||
|
||||
public override int ProfileCount()
|
||||
{
|
||||
return 5;
|
||||
}
|
||||
public override int MaxDPI()
|
||||
{
|
||||
return 26_000;
|
||||
}
|
||||
|
||||
public override bool HasDebounceSetting()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasLiftOffSetting()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasRGB()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override LightingZone[] SupportedLightingZones()
|
||||
{
|
||||
return new LightingZone[] { LightingZone.Logo, LightingZone.Scrollwheel, LightingZone.Underglow };
|
||||
}
|
||||
|
||||
public override bool HasAutoPowerOff()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasAngleSnapping()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasLowBatteryWarning()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public class GladiusIIIWired : GladiusIII
|
||||
{
|
||||
public GladiusIIIWired() : base(0x197d, false)
|
||||
{
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "ROG Gladius III (Wired)";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
namespace GHelper.Peripherals.Mouse.Models
|
||||
{
|
||||
//P711
|
||||
public class GladiusIIIAimpoint : AsusMouse
|
||||
{
|
||||
public GladiusIIIAimpoint() : base(0x0B05, 0x1A70, "mi_00", true)
|
||||
@@ -17,7 +18,7 @@
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "ROG Gladius III (Wireless)";
|
||||
return "ROG Gladius III Aimpoint (Wireless)";
|
||||
}
|
||||
|
||||
|
||||
@@ -45,6 +46,11 @@
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasDebounceSetting()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasLiftOffSetting()
|
||||
{
|
||||
return true;
|
||||
@@ -94,7 +100,7 @@
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "ROG Gladius III (Wired)";
|
||||
return "ROG Gladius III Aimpoint (Wired)";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,6 +102,10 @@
|
||||
{
|
||||
return 100;
|
||||
}
|
||||
public override bool HasDebounceSetting()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool CanChangeDPIProfile()
|
||||
{
|
||||
|
||||
226
app/Peripherals/Mouse/Models/StrixImpactIIWireless.cs
Normal file
226
app/Peripherals/Mouse/Models/StrixImpactIIWireless.cs
Normal file
@@ -0,0 +1,226 @@
|
||||
namespace GHelper.Peripherals.Mouse.Models
|
||||
{
|
||||
//P513
|
||||
public class StrixImpactIIWireless : AsusMouse
|
||||
{
|
||||
public StrixImpactIIWireless() : base(0x0B05, 0x1949, "mi_00", true)
|
||||
{
|
||||
}
|
||||
|
||||
protected StrixImpactIIWireless(ushort vendorId, bool wireless) : base(0x0B05, vendorId, "mi_00", wireless)
|
||||
{
|
||||
}
|
||||
|
||||
public override int DPIProfileCount()
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "ROG Strix Impact II (Wireless)";
|
||||
}
|
||||
|
||||
|
||||
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 HasLiftOffSetting()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasRGB()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasAutoPowerOff()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasAngleSnapping()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasAngleTuning()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool HasLowBatteryWarning()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasDPIColors()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool IsLightingModeSupported(LightingMode lightingMode)
|
||||
{
|
||||
return lightingMode == LightingMode.Static
|
||||
|| lightingMode == LightingMode.Breathing
|
||||
|| lightingMode == LightingMode.ColorCycle
|
||||
|| lightingMode == LightingMode.React
|
||||
|| lightingMode == LightingMode.BatteryState
|
||||
|| lightingMode == LightingMode.Off;
|
||||
}
|
||||
|
||||
public override LightingZone[] SupportedLightingZones()
|
||||
{
|
||||
return new LightingZone[] { LightingZone.Logo, LightingZone.Scrollwheel };
|
||||
}
|
||||
|
||||
//Has 25% increments
|
||||
protected override int ParseBattery(byte[] packet)
|
||||
{
|
||||
if (packet[1] == 0x12 && packet[2] == 0x07)
|
||||
{
|
||||
return packet[5] * 25;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
public override int DPIIncrements()
|
||||
{
|
||||
return 100;
|
||||
}
|
||||
|
||||
public override bool CanChangeDPIProfile()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
protected override byte[] GetUpdateEnergySettingsPacket(int lowBatteryWarning, PowerOffSetting powerOff)
|
||||
{
|
||||
return base.GetUpdateEnergySettingsPacket(lowBatteryWarning / 25, powerOff);
|
||||
}
|
||||
|
||||
protected override int ParseLowBatteryWarning(byte[] packet)
|
||||
{
|
||||
int lowBat = base.ParseLowBatteryWarning(packet);
|
||||
|
||||
return lowBat * 25;
|
||||
}
|
||||
|
||||
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) };
|
||||
}
|
||||
|
||||
public override int MaxBrightness()
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
public override bool HasDebounceSetting()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
protected override byte IndexForLightingMode(LightingMode lightingMode)
|
||||
{
|
||||
if (lightingMode == LightingMode.Off)
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
return ((byte)lightingMode);
|
||||
}
|
||||
|
||||
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]);
|
||||
|
||||
|
||||
return setting;
|
||||
}
|
||||
|
||||
public override void ReadLightingSetting()
|
||||
{
|
||||
if (!HasRGB())
|
||||
{
|
||||
return;
|
||||
}
|
||||
//Mouse sends all lighting zones in one response
|
||||
//00 12 03 00 00 [00 04 ff 00 80] [00 04 00 ff ff] [00 04 ff ff ff] 00 00 00 00 00 00 00 00 00 00 00 00 00 0
|
||||
//No idea what the 3rd zone is as the mouse only has 2
|
||||
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 class StrixImpactIIWirelessWired : StrixImpactIIWireless
|
||||
{
|
||||
public StrixImpactIIWirelessWired() : base(0x1947, false)
|
||||
{
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "ROG Strix Impact II (Wired)";
|
||||
}
|
||||
}
|
||||
}
|
||||
112
app/Peripherals/Mouse/Models/TUFM3.cs
Normal file
112
app/Peripherals/Mouse/Models/TUFM3.cs
Normal file
@@ -0,0 +1,112 @@
|
||||
namespace GHelper.Peripherals.Mouse.Models
|
||||
{
|
||||
//P306_Wireless
|
||||
public class TUFM3 : AsusMouse
|
||||
{
|
||||
public TUFM3() : base(0x0B05, 0x1910, "mi_01", false)
|
||||
{
|
||||
}
|
||||
|
||||
public override int DPIProfileCount()
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "TUF GAMING M3";
|
||||
}
|
||||
|
||||
|
||||
public override PollingRate[] SupportedPollingrates()
|
||||
{
|
||||
return new PollingRate[] {
|
||||
PollingRate.PR125Hz,
|
||||
PollingRate.PR250Hz,
|
||||
PollingRate.PR500Hz,
|
||||
PollingRate.PR1000Hz
|
||||
};
|
||||
}
|
||||
|
||||
//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 int ProfileCount()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
public override int MaxDPI()
|
||||
{
|
||||
return 7_000;
|
||||
}
|
||||
public override bool HasBattery()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool HasLiftOffSetting()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
public override LightingZone[] SupportedLightingZones()
|
||||
{
|
||||
return new LightingZone[] { LightingZone.Logo };
|
||||
}
|
||||
|
||||
public override bool HasRGB()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasAngleSnapping()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override int DPIIncrements()
|
||||
{
|
||||
return 100;
|
||||
}
|
||||
|
||||
public override bool CanChangeDPIProfile()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasDebounceSetting()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override int MaxBrightness()
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
public override bool IsLightingModeSupported(LightingMode lightingMode)
|
||||
{
|
||||
return lightingMode == LightingMode.Static
|
||||
|| lightingMode == LightingMode.Breathing
|
||||
|| lightingMode == LightingMode.ColorCycle
|
||||
|| lightingMode == LightingMode.React;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -42,6 +42,11 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool HasDebounceSetting()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasAutoPowerOff()
|
||||
{
|
||||
return true;
|
||||
|
||||
@@ -190,6 +190,11 @@ namespace GHelper.Peripherals
|
||||
DetectMouse(new ROGKerisWireless());
|
||||
DetectMouse(new ROGKerisWirelessWired());
|
||||
DetectMouse(new TUFM4Wirelss());
|
||||
DetectMouse(new StrixImpactIIWireless());
|
||||
DetectMouse(new StrixImpactIIWirelessWired());
|
||||
DetectMouse(new GladiusIII());
|
||||
DetectMouse(new GladiusIIIWired());
|
||||
DetectMouse(new TUFM3());
|
||||
}
|
||||
|
||||
public static void DetectMouse(AsusMouse am)
|
||||
|
||||
24
app/Properties/Strings.Designer.cs
generated
24
app/Properties/Strings.Designer.cs
generated
@@ -429,6 +429,15 @@ namespace GHelper.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Charge.
|
||||
/// </summary>
|
||||
internal static string BatteryCharge {
|
||||
get {
|
||||
return ResourceManager.GetString("BatteryCharge", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Battery Charge Limit.
|
||||
/// </summary>
|
||||
@@ -437,7 +446,7 @@ namespace GHelper.Properties {
|
||||
return ResourceManager.GetString("BatteryChargeLimit", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Battery Health.
|
||||
/// </summary>
|
||||
@@ -1061,6 +1070,15 @@ namespace GHelper.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Button Response.
|
||||
/// </summary>
|
||||
internal static string MouseButtonResponse {
|
||||
get {
|
||||
return ResourceManager.GetString("MouseButtonResponse", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Lift Off Distance.
|
||||
/// </summary>
|
||||
@@ -1141,7 +1159,7 @@ namespace GHelper.Properties {
|
||||
return ResourceManager.GetString("NoNewUpdates", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Not Connected.
|
||||
/// </summary>
|
||||
@@ -1447,7 +1465,7 @@ namespace GHelper.Properties {
|
||||
return ResourceManager.GetString("ToggleAura", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Auto Toggle Clamshell Mode.
|
||||
/// </summary>
|
||||
|
||||
@@ -240,6 +240,9 @@
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>Ausbalanciert</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>Akkustand</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Ladebegrenzung</value>
|
||||
</data>
|
||||
@@ -452,6 +455,9 @@ Trotzdem fortfahren?</value>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Automatisch abschalten nach</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>Tastenreaktionsgeschwindigkeit</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Lift Off Distance</value>
|
||||
</data>
|
||||
|
||||
@@ -184,7 +184,7 @@
|
||||
<value>Rápido</value>
|
||||
</data>
|
||||
<data name="AuraLightingMode" xml:space="preserve">
|
||||
<value>Lighting Mode</value>
|
||||
<value>Modo de iluminación</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>Normal</value>
|
||||
@@ -208,7 +208,7 @@
|
||||
<value>Estroboscópico</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>All</value>
|
||||
<value>Todo</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dock</value>
|
||||
@@ -217,7 +217,7 @@
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Scrollwheel</value>
|
||||
<value>Rueda de desplazamiento</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Underglow</value>
|
||||
@@ -240,6 +240,9 @@
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>Equilibrado</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>Charge</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Límite de carga</value>
|
||||
</data>
|
||||
@@ -452,6 +455,9 @@
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Auto-apagar tras</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>Respuesta del botón</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Distancia de despegue (LOD)</value>
|
||||
</data>
|
||||
|
||||
@@ -240,6 +240,9 @@
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>Équilibré</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>Charge</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Limite de charge </value>
|
||||
</data>
|
||||
@@ -452,6 +455,9 @@ Voulez-vous continuer ?</value>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Arrêt automatique après</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>Button Response</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Lift Off Distance</value>
|
||||
</data>
|
||||
|
||||
@@ -240,6 +240,9 @@
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>Teljesítmény</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>Charge</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Töltési korlát</value>
|
||||
</data>
|
||||
@@ -452,6 +455,9 @@ Do you still want to continue?</value>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Auto Power Off After</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>Button Response</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Lift Off Distance</value>
|
||||
</data>
|
||||
|
||||
@@ -240,6 +240,9 @@
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>Bilanciato</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>Charge</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Limite Ricarica Batteria</value>
|
||||
</data>
|
||||
@@ -452,6 +455,9 @@ Sei sicuro di voler continuare?</value>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Auto Power Off After</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>Button Response</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Lift Off Distance</value>
|
||||
</data>
|
||||
|
||||
@@ -240,6 +240,9 @@
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>균형</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>Charge</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>배터리 충전 제한</value>
|
||||
</data>
|
||||
@@ -452,6 +455,9 @@
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Auto Power Off After</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>Button Response</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Lift Off Distance</value>
|
||||
</data>
|
||||
|
||||
@@ -184,7 +184,7 @@
|
||||
<value>Greitas</value>
|
||||
</data>
|
||||
<data name="AuraLightingMode" xml:space="preserve">
|
||||
<value>Lighting Mode</value>
|
||||
<value>Apšvietimo režimas</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>Normalus</value>
|
||||
@@ -208,19 +208,19 @@
|
||||
<value>Blyksniai</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>All</value>
|
||||
<value>Visi</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dock</value>
|
||||
<value>Jungčių stotelė</value>
|
||||
</data>
|
||||
<data name="AuraZoneLogo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
<value>Logotipas</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Scrollwheel</value>
|
||||
<value>Ratukas</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Underglow</value>
|
||||
<value>Apatinis apšvietimas</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>Taikyti automatiškai</value>
|
||||
@@ -240,6 +240,9 @@
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>Balansuotas</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>Įkrova</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Įkrovos riba</value>
|
||||
</data>
|
||||
@@ -393,7 +396,7 @@ Vis tiek norite tęsti?</value>
|
||||
<value>Ekranas</value>
|
||||
</data>
|
||||
<data name="Lid" xml:space="preserve">
|
||||
<value>Korpusas</value>
|
||||
<value>Dangtis</value>
|
||||
</data>
|
||||
<data name="Lightbar" xml:space="preserve">
|
||||
<value>Šviesos juosta</value>
|
||||
@@ -452,6 +455,9 @@ Vis tiek norite tęsti?</value>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Automatiškai išjungti po</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>Klavišo atsakas</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Pakilimo atstumas</value>
|
||||
</data>
|
||||
@@ -474,10 +480,10 @@ Vis tiek norite tęsti?</value>
|
||||
<value>Niekada</value>
|
||||
</data>
|
||||
<data name="NewUpdates" xml:space="preserve">
|
||||
<value>Nauji naujinimai</value>
|
||||
<value>Naujinimai</value>
|
||||
</data>
|
||||
<data name="NoNewUpdates" xml:space="preserve">
|
||||
<value>Nėra naujų naujinimų</value>
|
||||
<value>Nėra naujinimų</value>
|
||||
</data>
|
||||
<data name="NotConnected" xml:space="preserve">
|
||||
<value>Neprijungta</value>
|
||||
|
||||
@@ -184,7 +184,7 @@
|
||||
<value>Szybka</value>
|
||||
</data>
|
||||
<data name="AuraLightingMode" xml:space="preserve">
|
||||
<value>Lighting Mode</value>
|
||||
<value>Tryb oświetlenia</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>Normalna</value>
|
||||
@@ -208,7 +208,7 @@
|
||||
<value>Stroboskop</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>All</value>
|
||||
<value>Wszystko</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dock</value>
|
||||
@@ -217,10 +217,10 @@
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Scrollwheel</value>
|
||||
<value>Rolka</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Underglow</value>
|
||||
<value>Dolna poświata</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>Zastosuj automatycznie</value>
|
||||
@@ -240,6 +240,9 @@
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>Balans</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>Charge</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Limit ładowania baterii</value>
|
||||
</data>
|
||||
@@ -452,6 +455,9 @@ Nadal chcesz kontynuować?</value>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Przejście w tryb uśpienia po</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>Button Response</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Wysokość reakcji sensora</value>
|
||||
</data>
|
||||
|
||||
@@ -240,6 +240,9 @@
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>Equilibrado</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>Charge</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Limite de carga</value>
|
||||
</data>
|
||||
@@ -452,6 +455,9 @@ Do you still want to continue?</value>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Auto Power Off After</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>Button Response</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Lift Off Distance</value>
|
||||
</data>
|
||||
|
||||
@@ -240,6 +240,9 @@
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>Balanced</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>Charge</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Battery Charge Limit</value>
|
||||
</data>
|
||||
@@ -452,6 +455,9 @@ Do you still want to continue?</value>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Auto Power Off After</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>Button Response</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Lift Off Distance</value>
|
||||
</data>
|
||||
|
||||
@@ -240,6 +240,9 @@
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>Echilibrat</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>Charge</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Limita de încărcare a bateriei</value>
|
||||
</data>
|
||||
@@ -452,6 +455,9 @@
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Auto Power Off After</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>Button Response</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Lift Off Distance</value>
|
||||
</data>
|
||||
|
||||
@@ -240,6 +240,9 @@
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>Dengeli</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>Charge</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Pil Şarj Limiti</value>
|
||||
</data>
|
||||
@@ -452,6 +455,9 @@ Do you still want to continue?</value>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Auto Power Off After</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>Button Response</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Lift Off Distance</value>
|
||||
</data>
|
||||
|
||||
@@ -169,22 +169,22 @@
|
||||
<value>Дихання</value>
|
||||
</data>
|
||||
<data name="AuraClockwise" xml:space="preserve">
|
||||
<value>Clockwise</value>
|
||||
<value>Направо</value>
|
||||
</data>
|
||||
<data name="AuraColorCycle" xml:space="preserve">
|
||||
<value>Зміна Кольорів</value>
|
||||
</data>
|
||||
<data name="AuraComet" xml:space="preserve">
|
||||
<value>Comet</value>
|
||||
<value>Комета</value>
|
||||
</data>
|
||||
<data name="AuraCounterClockwise" xml:space="preserve">
|
||||
<value>Counterclockwise</value>
|
||||
<value>Наліво</value>
|
||||
</data>
|
||||
<data name="AuraFast" xml:space="preserve">
|
||||
<value>Швидка</value>
|
||||
</data>
|
||||
<data name="AuraLightingMode" xml:space="preserve">
|
||||
<value>Lighting Mode</value>
|
||||
<value>Підсвітка</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>Нормальна</value>
|
||||
@@ -193,10 +193,10 @@
|
||||
<value>Веселка</value>
|
||||
</data>
|
||||
<data name="AuraRandomColor" xml:space="preserve">
|
||||
<value>Random</value>
|
||||
<value>Випадкова</value>
|
||||
</data>
|
||||
<data name="AuraReact" xml:space="preserve">
|
||||
<value>React</value>
|
||||
<value>Реактивна</value>
|
||||
</data>
|
||||
<data name="AuraSlow" xml:space="preserve">
|
||||
<value>Повільна</value>
|
||||
@@ -208,19 +208,19 @@
|
||||
<value>Стробоскоп</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>All</value>
|
||||
<value>Все</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dock</value>
|
||||
<value>Док</value>
|
||||
</data>
|
||||
<data name="AuraZoneLogo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
<value>Лого</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Scrollwheel</value>
|
||||
<value>Колесо</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Underglow</value>
|
||||
<value>Низ</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>Автоматично</value>
|
||||
@@ -240,6 +240,9 @@
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>Баланс</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>Заряд</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Ліміт заряду батареї</value>
|
||||
</data>
|
||||
@@ -303,7 +306,7 @@
|
||||
<value>NVIDIA Display Mode не в режимі Optimus</value>
|
||||
</data>
|
||||
<data name="EnergySettings" xml:space="preserve">
|
||||
<value>Energy Settings</value>
|
||||
<value>Налаштування Енергії</value>
|
||||
</data>
|
||||
<data name="Extra" xml:space="preserve">
|
||||
<value>Додатково</value>
|
||||
@@ -372,7 +375,7 @@
|
||||
<value>Temperature Target</value>
|
||||
</data>
|
||||
<data name="High" xml:space="preserve">
|
||||
<value>High</value>
|
||||
<value>Висока</value>
|
||||
</data>
|
||||
<data name="KeyBindings" xml:space="preserve">
|
||||
<value>Прив'язки клавіш</value>
|
||||
@@ -399,13 +402,13 @@
|
||||
<value>Лайтбар</value>
|
||||
</data>
|
||||
<data name="Lighting" xml:space="preserve">
|
||||
<value>Lighting</value>
|
||||
<value>Ілюмінація</value>
|
||||
</data>
|
||||
<data name="Logo" xml:space="preserve">
|
||||
<value>Лого</value>
|
||||
</data>
|
||||
<data name="Low" xml:space="preserve">
|
||||
<value>Low</value>
|
||||
<value>Низька</value>
|
||||
</data>
|
||||
<data name="MatrixAudio" xml:space="preserve">
|
||||
<value>Аудіо візуалізатор</value>
|
||||
@@ -441,17 +444,20 @@
|
||||
<value>Частота 60Гц, щоб зберегти заряд батареї</value>
|
||||
</data>
|
||||
<data name="Minute" xml:space="preserve">
|
||||
<value>Minute</value>
|
||||
<value>Хвил.</value>
|
||||
</data>
|
||||
<data name="Minutes" xml:space="preserve">
|
||||
<value>Хвилини</value>
|
||||
</data>
|
||||
<data name="MouseAngleSnapping" xml:space="preserve">
|
||||
<value>Привʼязка по куту</value>
|
||||
<value>Фіксація Кута</value>
|
||||
</data>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Авто-вимикання</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>Відповідь Кнопок</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Відстань підйому</value>
|
||||
</data>
|
||||
@@ -459,7 +465,7 @@
|
||||
<value>Попередження про низький заряд</value>
|
||||
</data>
|
||||
<data name="MousePerformance" xml:space="preserve">
|
||||
<value>Performance</value>
|
||||
<value>Режим Швидкодії</value>
|
||||
</data>
|
||||
<data name="MouseSynchronize" xml:space="preserve">
|
||||
<value>Синхронізувати з мишею</value>
|
||||
|
||||
@@ -240,6 +240,9 @@
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>Cân bằng</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>Charge</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Giới hạn sạc</value>
|
||||
</data>
|
||||
@@ -452,6 +455,9 @@ Do you still want to continue?</value>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Auto Power Off After</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>Button Response</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Lift Off Distance</value>
|
||||
</data>
|
||||
|
||||
@@ -184,7 +184,7 @@
|
||||
<value>快速</value>
|
||||
</data>
|
||||
<data name="AuraLightingMode" xml:space="preserve">
|
||||
<value>Lighting Mode</value>
|
||||
<value>灯效模式</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>正常</value>
|
||||
@@ -208,7 +208,7 @@
|
||||
<value>闪烁</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>All</value>
|
||||
<value>全部</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dock</value>
|
||||
@@ -217,7 +217,7 @@
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Scrollwheel</value>
|
||||
<value>滚轮</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Underglow</value>
|
||||
@@ -240,6 +240,9 @@
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>平衡模式</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>电池电量</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>电池充电限制</value>
|
||||
</data>
|
||||
@@ -336,7 +339,7 @@
|
||||
<value>风扇</value>
|
||||
</data>
|
||||
<data name="FansPower" xml:space="preserve">
|
||||
<value>风扇 + 电源</value>
|
||||
<value>风扇 + 功率</value>
|
||||
</data>
|
||||
<data name="FnLock" xml:space="preserve">
|
||||
<value>打开FnLock (无需按下FN使用FN+(F1-F12)热键)</value>
|
||||
@@ -452,6 +455,9 @@
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>自动关闭时间</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>按键响应</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>静默高度</value>
|
||||
</data>
|
||||
|
||||
@@ -184,7 +184,7 @@
|
||||
<value>快速</value>
|
||||
</data>
|
||||
<data name="AuraLightingMode" xml:space="preserve">
|
||||
<value>Lighting Mode</value>
|
||||
<value>燈效模式</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>正常</value>
|
||||
@@ -208,7 +208,7 @@
|
||||
<value>閃爍</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>All</value>
|
||||
<value>全部</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dock</value>
|
||||
@@ -217,7 +217,7 @@
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Scrollwheel</value>
|
||||
<value>滾輪</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Underglow</value>
|
||||
@@ -240,6 +240,9 @@
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>平衡模式</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>充電</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>電池充電上限</value>
|
||||
</data>
|
||||
@@ -452,6 +455,9 @@
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>自動關閉電源</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>按鍵回應</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>響應高度(LOD)</value>
|
||||
</data>
|
||||
|
||||
122
app/Settings.Designer.cs
generated
122
app/Settings.Designer.cs
generated
@@ -47,8 +47,9 @@ namespace GHelper
|
||||
labelBatteryTitle = new Label();
|
||||
panelFooter = new Panel();
|
||||
tableButtons = new TableLayoutPanel();
|
||||
buttonUpdates = new RButton();
|
||||
labelVersion = new Label();
|
||||
buttonQuit = new RButton();
|
||||
buttonUpdates = new RButton();
|
||||
checkStartup = new CheckBox();
|
||||
panelPerformance = new Panel();
|
||||
tablePerf = new TableLayoutPanel();
|
||||
@@ -95,8 +96,8 @@ namespace GHelper
|
||||
panelKeyboardTitle = new Panel();
|
||||
pictureKeyboard = new PictureBox();
|
||||
labelKeyboard = new Label();
|
||||
labelVersion = new Label();
|
||||
panelVersion = new Panel();
|
||||
labelCharge = new Label();
|
||||
panelPeripherals = new Panel();
|
||||
tableLayoutPeripherals = new TableLayoutPanel();
|
||||
buttonPeripheral3 = new RButton();
|
||||
@@ -173,7 +174,7 @@ namespace GHelper
|
||||
tableLayoutMatrix.Name = "tableLayoutMatrix";
|
||||
tableLayoutMatrix.RowCount = 1;
|
||||
tableLayoutMatrix.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
|
||||
tableLayoutMatrix.Size = new Size(787, 60);
|
||||
tableLayoutMatrix.Size = new Size(787, 64);
|
||||
tableLayoutMatrix.TabIndex = 43;
|
||||
//
|
||||
// comboMatrix
|
||||
@@ -215,8 +216,8 @@ namespace GHelper
|
||||
buttonMatrix.Dock = DockStyle.Top;
|
||||
buttonMatrix.FlatAppearance.BorderSize = 0;
|
||||
buttonMatrix.FlatStyle = FlatStyle.Flat;
|
||||
buttonMatrix.Location = new Point(528, 6);
|
||||
buttonMatrix.Margin = new Padding(4, 6, 4, 6);
|
||||
buttonMatrix.Location = new Point(528, 8);
|
||||
buttonMatrix.Margin = new Padding(4, 8, 4, 8);
|
||||
buttonMatrix.Name = "buttonMatrix";
|
||||
buttonMatrix.Secondary = true;
|
||||
buttonMatrix.Size = new Size(255, 48);
|
||||
@@ -276,7 +277,7 @@ namespace GHelper
|
||||
panelBattery.Controls.Add(sliderBattery);
|
||||
panelBattery.Controls.Add(panelBatteryTitle);
|
||||
panelBattery.Dock = DockStyle.Top;
|
||||
panelBattery.Location = new Point(11, 1261);
|
||||
panelBattery.Location = new Point(11, 1265);
|
||||
panelBattery.Margin = new Padding(0);
|
||||
panelBattery.Name = "panelBattery";
|
||||
panelBattery.Padding = new Padding(20, 20, 20, 10);
|
||||
@@ -350,7 +351,7 @@ namespace GHelper
|
||||
panelFooter.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelFooter.Controls.Add(tableButtons);
|
||||
panelFooter.Dock = DockStyle.Top;
|
||||
panelFooter.Location = new Point(11, 1431);
|
||||
panelFooter.Location = new Point(11, 1435);
|
||||
panelFooter.Margin = new Padding(0);
|
||||
panelFooter.Name = "panelFooter";
|
||||
panelFooter.Padding = new Padding(20);
|
||||
@@ -365,8 +366,9 @@ namespace GHelper
|
||||
tableButtons.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.3333321F));
|
||||
tableButtons.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.3333321F));
|
||||
tableButtons.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 27F));
|
||||
tableButtons.Controls.Add(buttonUpdates, 0, 0);
|
||||
tableButtons.Controls.Add(labelVersion, 0, 0);
|
||||
tableButtons.Controls.Add(buttonQuit, 2, 0);
|
||||
tableButtons.Controls.Add(buttonUpdates, 1, 0);
|
||||
tableButtons.Dock = DockStyle.Top;
|
||||
tableButtons.Location = new Point(20, 20);
|
||||
tableButtons.Margin = new Padding(4);
|
||||
@@ -376,26 +378,20 @@ namespace GHelper
|
||||
tableButtons.Size = new Size(787, 60);
|
||||
tableButtons.TabIndex = 25;
|
||||
//
|
||||
// buttonUpdates
|
||||
// labelVersion
|
||||
//
|
||||
buttonUpdates.AccessibleName = "BIOS and Driver Updates";
|
||||
buttonUpdates.Activated = false;
|
||||
buttonUpdates.BackColor = SystemColors.ControlLight;
|
||||
buttonUpdates.BorderColor = Color.Transparent;
|
||||
buttonUpdates.BorderRadius = 2;
|
||||
buttonUpdates.Dock = DockStyle.Top;
|
||||
buttonUpdates.FlatStyle = FlatStyle.Flat;
|
||||
buttonUpdates.Image = Properties.Resources.icons8_software_32_white;
|
||||
buttonUpdates.ImageAlign = ContentAlignment.MiddleRight;
|
||||
buttonUpdates.Location = new Point(4, 6);
|
||||
buttonUpdates.Margin = new Padding(4, 6, 4, 6);
|
||||
buttonUpdates.Name = "buttonUpdates";
|
||||
buttonUpdates.Secondary = true;
|
||||
buttonUpdates.Size = new Size(254, 48);
|
||||
buttonUpdates.TabIndex = 24;
|
||||
buttonUpdates.Text = "Updates";
|
||||
buttonUpdates.TextImageRelation = TextImageRelation.ImageBeforeText;
|
||||
buttonUpdates.UseVisualStyleBackColor = false;
|
||||
labelVersion.Cursor = Cursors.Hand;
|
||||
labelVersion.Dock = DockStyle.Fill;
|
||||
labelVersion.Font = new Font("Segoe UI", 9F, FontStyle.Underline, GraphicsUnit.Point);
|
||||
labelVersion.ForeColor = SystemColors.ControlDark;
|
||||
labelVersion.Location = new Point(0, 0);
|
||||
labelVersion.Margin = new Padding(0);
|
||||
labelVersion.Name = "labelVersion";
|
||||
labelVersion.Padding = new Padding(5);
|
||||
labelVersion.Size = new Size(262, 60);
|
||||
labelVersion.TabIndex = 37;
|
||||
labelVersion.Text = "v.0";
|
||||
labelVersion.TextAlign = ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// buttonQuit
|
||||
//
|
||||
@@ -418,10 +414,31 @@ namespace GHelper
|
||||
buttonQuit.TextImageRelation = TextImageRelation.ImageBeforeText;
|
||||
buttonQuit.UseVisualStyleBackColor = false;
|
||||
//
|
||||
// buttonUpdates
|
||||
//
|
||||
buttonUpdates.AccessibleName = "BIOS and Driver Updates";
|
||||
buttonUpdates.Activated = false;
|
||||
buttonUpdates.BackColor = SystemColors.ControlLight;
|
||||
buttonUpdates.BorderColor = Color.Transparent;
|
||||
buttonUpdates.BorderRadius = 2;
|
||||
buttonUpdates.Dock = DockStyle.Top;
|
||||
buttonUpdates.FlatStyle = FlatStyle.Flat;
|
||||
buttonUpdates.Image = Properties.Resources.icons8_software_32_white;
|
||||
buttonUpdates.ImageAlign = ContentAlignment.MiddleRight;
|
||||
buttonUpdates.Location = new Point(266, 6);
|
||||
buttonUpdates.Margin = new Padding(4, 6, 4, 6);
|
||||
buttonUpdates.Name = "buttonUpdates";
|
||||
buttonUpdates.Secondary = true;
|
||||
buttonUpdates.Size = new Size(254, 48);
|
||||
buttonUpdates.TabIndex = 24;
|
||||
buttonUpdates.Text = "Updates";
|
||||
buttonUpdates.TextImageRelation = TextImageRelation.ImageBeforeText;
|
||||
buttonUpdates.UseVisualStyleBackColor = false;
|
||||
//
|
||||
// checkStartup
|
||||
//
|
||||
checkStartup.AutoSize = true;
|
||||
checkStartup.Location = new Point(36, 11);
|
||||
checkStartup.Location = new Point(24, 11);
|
||||
checkStartup.Margin = new Padding(11, 5, 11, 5);
|
||||
checkStartup.Name = "checkStartup";
|
||||
checkStartup.Size = new Size(206, 36);
|
||||
@@ -1022,7 +1039,7 @@ namespace GHelper
|
||||
panelKeyboard.Margin = new Padding(0);
|
||||
panelKeyboard.Name = "panelKeyboard";
|
||||
panelKeyboard.Padding = new Padding(20);
|
||||
panelKeyboard.Size = new Size(827, 140);
|
||||
panelKeyboard.Size = new Size(827, 144);
|
||||
panelKeyboard.TabIndex = 3;
|
||||
//
|
||||
// tableLayoutKeyboard
|
||||
@@ -1042,7 +1059,7 @@ namespace GHelper
|
||||
tableLayoutKeyboard.Name = "tableLayoutKeyboard";
|
||||
tableLayoutKeyboard.RowCount = 1;
|
||||
tableLayoutKeyboard.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
|
||||
tableLayoutKeyboard.Size = new Size(787, 60);
|
||||
tableLayoutKeyboard.Size = new Size(787, 64);
|
||||
tableLayoutKeyboard.TabIndex = 39;
|
||||
//
|
||||
// buttonKeyboard
|
||||
@@ -1057,8 +1074,8 @@ namespace GHelper
|
||||
buttonKeyboard.FlatStyle = FlatStyle.Flat;
|
||||
buttonKeyboard.Image = Properties.Resources.icons8_settings_32;
|
||||
buttonKeyboard.ImageAlign = ContentAlignment.MiddleRight;
|
||||
buttonKeyboard.Location = new Point(528, 6);
|
||||
buttonKeyboard.Margin = new Padding(4, 6, 4, 6);
|
||||
buttonKeyboard.Location = new Point(528, 8);
|
||||
buttonKeyboard.Margin = new Padding(4, 8, 4, 8);
|
||||
buttonKeyboard.Name = "buttonKeyboard";
|
||||
buttonKeyboard.Secondary = true;
|
||||
buttonKeyboard.Size = new Size(255, 48);
|
||||
@@ -1074,8 +1091,8 @@ namespace GHelper
|
||||
panelColor.Controls.Add(pictureColor);
|
||||
panelColor.Controls.Add(buttonKeyboardColor);
|
||||
panelColor.Dock = DockStyle.Fill;
|
||||
panelColor.Location = new Point(266, 6);
|
||||
panelColor.Margin = new Padding(4, 6, 4, 6);
|
||||
panelColor.Location = new Point(266, 8);
|
||||
panelColor.Margin = new Padding(4, 8, 4, 8);
|
||||
panelColor.Name = "panelColor";
|
||||
panelColor.Size = new Size(254, 48);
|
||||
panelColor.TabIndex = 36;
|
||||
@@ -1111,7 +1128,7 @@ namespace GHelper
|
||||
buttonKeyboardColor.FlatStyle = FlatStyle.Flat;
|
||||
buttonKeyboardColor.ForeColor = SystemColors.ControlText;
|
||||
buttonKeyboardColor.Location = new Point(0, 0);
|
||||
buttonKeyboardColor.Margin = new Padding(4, 6, 4, 6);
|
||||
buttonKeyboardColor.Margin = new Padding(4, 8, 4, 8);
|
||||
buttonKeyboardColor.Name = "buttonKeyboardColor";
|
||||
buttonKeyboardColor.Secondary = false;
|
||||
buttonKeyboardColor.Size = new Size(254, 48);
|
||||
@@ -1169,31 +1186,29 @@ namespace GHelper
|
||||
labelKeyboard.TabIndex = 34;
|
||||
labelKeyboard.Text = "Laptop Keyboard";
|
||||
//
|
||||
// labelVersion
|
||||
//
|
||||
labelVersion.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||
labelVersion.Cursor = Cursors.Hand;
|
||||
labelVersion.Font = new Font("Segoe UI", 9F, FontStyle.Underline, GraphicsUnit.Point);
|
||||
labelVersion.ForeColor = SystemColors.ControlDark;
|
||||
labelVersion.Location = new Point(502, 13);
|
||||
labelVersion.Margin = new Padding(11, 0, 11, 0);
|
||||
labelVersion.Name = "labelVersion";
|
||||
labelVersion.Size = new Size(300, 32);
|
||||
labelVersion.TabIndex = 37;
|
||||
labelVersion.Text = "v.0";
|
||||
labelVersion.TextAlign = ContentAlignment.TopRight;
|
||||
//
|
||||
// panelVersion
|
||||
//
|
||||
panelVersion.Controls.Add(labelVersion);
|
||||
panelVersion.Controls.Add(labelCharge);
|
||||
panelVersion.Controls.Add(checkStartup);
|
||||
panelVersion.Dock = DockStyle.Top;
|
||||
panelVersion.Location = new Point(11, 1375);
|
||||
panelVersion.Location = new Point(11, 1379);
|
||||
panelVersion.Margin = new Padding(4);
|
||||
panelVersion.Name = "panelVersion";
|
||||
panelVersion.Size = new Size(827, 56);
|
||||
panelVersion.TabIndex = 6;
|
||||
//
|
||||
// labelCharge
|
||||
//
|
||||
labelCharge.Dock = DockStyle.Right;
|
||||
labelCharge.ForeColor = SystemColors.ControlDark;
|
||||
labelCharge.Location = new Point(365, 0);
|
||||
labelCharge.Margin = new Padding(0);
|
||||
labelCharge.Name = "labelCharge";
|
||||
labelCharge.Padding = new Padding(0, 0, 20, 0);
|
||||
labelCharge.Size = new Size(462, 56);
|
||||
labelCharge.TabIndex = 40;
|
||||
labelCharge.TextAlign = ContentAlignment.MiddleRight;
|
||||
//
|
||||
// panelPeripherals
|
||||
//
|
||||
panelPeripherals.AutoSize = true;
|
||||
@@ -1201,7 +1216,7 @@ namespace GHelper
|
||||
panelPeripherals.Controls.Add(tableLayoutPeripherals);
|
||||
panelPeripherals.Controls.Add(panelPeripheralsTile);
|
||||
panelPeripherals.Dock = DockStyle.Top;
|
||||
panelPeripherals.Location = new Point(11, 1063);
|
||||
panelPeripherals.Location = new Point(11, 1067);
|
||||
panelPeripherals.Margin = new Padding(0);
|
||||
panelPeripherals.Name = "panelPeripherals";
|
||||
panelPeripherals.Padding = new Padding(20, 20, 20, 10);
|
||||
@@ -1482,7 +1497,6 @@ namespace GHelper
|
||||
private Label labelVersion;
|
||||
private RButton buttonStopGPU;
|
||||
private TableLayoutPanel tableButtons;
|
||||
private RButton buttonUpdates;
|
||||
private Panel panelPeripherals;
|
||||
private TableLayoutPanel tableLayoutPeripherals;
|
||||
private Panel panelPeripheralsTile;
|
||||
@@ -1492,5 +1506,7 @@ namespace GHelper
|
||||
private RButton buttonPeripheral3;
|
||||
private RButton buttonPeripheral1;
|
||||
private RButton buttonKeyboard;
|
||||
private RButton buttonUpdates;
|
||||
private Label labelCharge;
|
||||
}
|
||||
}
|
||||
@@ -178,11 +178,8 @@ namespace GHelper
|
||||
sensorTimer.Elapsed += OnTimedEvent;
|
||||
sensorTimer.Enabled = true;
|
||||
|
||||
labelBattery.MouseEnter += PanelBattery_MouseEnter;
|
||||
labelBatteryTitle.MouseEnter += PanelBattery_MouseEnter;
|
||||
|
||||
labelBattery.MouseLeave += PanelBattery_MouseLeave;
|
||||
labelBatteryTitle.MouseLeave += PanelBattery_MouseLeave;
|
||||
labelCharge.MouseEnter += PanelBattery_MouseEnter;
|
||||
labelCharge.MouseLeave += PanelBattery_MouseLeave;
|
||||
|
||||
buttonPeripheral1.Click += ButtonPeripheral_Click;
|
||||
buttonPeripheral2.Click += ButtonPeripheral_Click;
|
||||
@@ -229,7 +226,7 @@ namespace GHelper
|
||||
|
||||
if (HardwareControl.batteryHealth != -1)
|
||||
{
|
||||
labelBattery.Text = Properties.Strings.BatteryHealth + ": " + Math.Round(HardwareControl.batteryHealth, 1) + "%";
|
||||
labelCharge.Text = Properties.Strings.BatteryHealth + ": " + Math.Round(HardwareControl.batteryHealth, 1) + "%";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -634,12 +631,12 @@ namespace GHelper
|
||||
comboKeyboard.SelectedValueChanged += ComboKeyboard_SelectedValueChanged;
|
||||
|
||||
|
||||
if (AsusUSB.HasColor())
|
||||
if (AppConfig.NoAuraColor())
|
||||
{
|
||||
panelColor.Visible = false;
|
||||
}
|
||||
|
||||
if (AppConfig.ContainsModel("GA401I"))
|
||||
if (AppConfig.NoAura())
|
||||
{
|
||||
comboKeyboard.Visible = false;
|
||||
}
|
||||
@@ -822,6 +819,7 @@ namespace GHelper
|
||||
string cpuTemp = "";
|
||||
string gpuTemp = "";
|
||||
string battery = "";
|
||||
string charge = "";
|
||||
|
||||
HardwareControl.ReadSensors();
|
||||
Task.Run((Action)PeripheralsProvider.RefreshBatteryForAllDevices);
|
||||
@@ -829,6 +827,9 @@ namespace GHelper
|
||||
if (HardwareControl.cpuTemp > 0)
|
||||
cpuTemp = ": " + Math.Round((decimal)HardwareControl.cpuTemp).ToString() + "°C";
|
||||
|
||||
if (HardwareControl.batteryCapacity > 0)
|
||||
charge = Properties.Strings.BatteryCharge + ": " + Math.Round(HardwareControl.batteryCapacity, 1) + "% ";
|
||||
|
||||
if (HardwareControl.batteryRate < 0)
|
||||
battery = Properties.Strings.Discharging + ": " + Math.Round(-(decimal)HardwareControl.batteryRate, 1).ToString() + "W";
|
||||
else if (HardwareControl.batteryRate > 0)
|
||||
@@ -847,7 +848,8 @@ namespace GHelper
|
||||
if (HardwareControl.midFan is not null)
|
||||
labelMidFan.Text = "Mid " + HardwareControl.midFan;
|
||||
|
||||
if (!batteryMouseOver) labelBattery.Text = battery;
|
||||
labelBattery.Text = battery;
|
||||
if (!batteryMouseOver) labelCharge.Text = charge;
|
||||
});
|
||||
|
||||
string trayTip = "CPU" + cpuTemp + " " + HardwareControl.cpuFan;
|
||||
@@ -928,7 +930,7 @@ namespace GHelper
|
||||
if (Program.acpi.IsXGConnected())
|
||||
AsusUSB.ApplyXGMLight(AppConfig.Is("xmg_light"));
|
||||
|
||||
if (AppConfig.ContainsModel("X16") || AppConfig.ContainsModel("X13")) InputDispatcher.TabletMode();
|
||||
if (AppConfig.HasTabletMode()) InputDispatcher.TabletMode();
|
||||
|
||||
}
|
||||
|
||||
|
||||
111
docs/README.md
111
docs/README.md
@@ -1,14 +1,20 @@
|
||||
# G-Helper (GHelper)
|
||||
[](https://GitHub.com/seerge/g-helper/releases/) [](https://GitHub.com/seerge/g-helper/releases/) [](https://GitHub.com/seerge/g-helper/stargazers/)
|
||||
|
||||
# G-Helper - Lightweight control tool for Asus laptops
|
||||
[](https://u24.gov.ua/)
|
||||
|
||||
Language: English | [中文](https://github.com/seerge/g-helper/blob/main/docs/README.zh-CN.md)
|
||||
|
||||
## Control tool for Asus laptops
|
||||
[](https://GitHub.com/seerge/g-helper/releases/)
|
||||
[](https://GitHub.com/seerge/g-helper/releases/) [](https://GitHub.com/seerge/g-helper/stargazers/) <sup> Language: English | <a href="https://github.com/seerge/g-helper/blob/main/docs/README.zh-CN.md">[中文]</a></sup>
|
||||
|
||||
Lightweight Armoury Crate alternative for Asus laptops. A small utility that allows you to do almost everything you could do with Armoury Crate but without extra bloat and unnecessary services. Works on all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar, ProArt and many more! Feel free to try :)
|
||||
|
||||
# [:floppy_disk: Download](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
|
||||
|
||||
- Don't forget to [Read FAQ](#question-faq)
|
||||
- If you like this app, please [star :star: it on Github](https://github.com/seerge/g-helper) and spread the word about it!
|
||||
|
||||
#### Support project in [:euro: EUR](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA) | [💵 USD](https://www.paypal.com/donate/?hosted_button_id=SRM6QUX6ACXDY) | [:credit_card: Stripe](https://buy.stripe.com/00gaFJ9Lf79v7WobII)
|
||||
|
||||

|
||||
|
||||
## :gift: Main advantages
|
||||
|
||||
1. Seamless and automatic GPU switching (without asking you to close all apps, etc)
|
||||
@@ -18,20 +24,11 @@ Lightweight Armoury Crate alternative for Asus laptops. A small utility that all
|
||||
5. FN-Lock
|
||||
6. Doesn't need administrator privileges to run (*)
|
||||
|
||||
# [:floppy_disk: Download G-Helper App](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
|
||||
|
||||
If you like this app, please [star :star: it on Github](https://github.com/seerge/g-helper) and spread a word about it!
|
||||
#### Support project in [:euro: EUR](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA) | [💵 USD](https://www.paypal.com/donate/?hosted_button_id=SRM6QUX6ACXDY) | [:credit_card: Stripe](https://buy.stripe.com/00gaFJ9Lf79v7WobII)
|
||||
|
||||
_If you post about the app - please include a link. Thanks._
|
||||
|
||||

|
||||
|
||||
### :zap: Features
|
||||
|
||||
1. **Performance modes**: Silent - Balanced - Turbo (built-in, with default fan curves)
|
||||
2. **GPU modes**: Eco - Standard - Ultimate - Optimized
|
||||
3. Laptop screen refresh rate 60hz or 120hz (144hz, etc) with display overdrive (OD) and miniled multizone switch
|
||||
3. Laptop screen refresh rate 60hz or 120hz (144hz, etc) with display overdrive (OD) and mini-led multi-zone switch
|
||||
4. Custom fan curve editor, power limits (PPT) and turbo boost selection for every performance mode
|
||||
5. Anime matrix control thanks to [Starlight](https://github.com/vddCore/Starlight) + some tweaks from my side including animated GIFs, clock and audio visualizer
|
||||
6. Keyboard backlit animation and colors (including sleep animation and support for TUF models)
|
||||
@@ -45,10 +42,10 @@ _If you post about the app - please include a link. Thanks._
|
||||

|
||||
|
||||
### :gear: Automatic switching when on battery or plugged in
|
||||
- Performance modes (app remembers last mode used on battery or when plugged)
|
||||
- App remembers last Mode used on battery or when plugged
|
||||
- Optimized GPU mode - disables dGPU on battery and enables when plugged
|
||||
- Auto Screen refresh rate (60hz on battery, 120+ hz when plugged)
|
||||
- Keyboard backlight can be turned off on battery
|
||||
- Auto Screen refresh rate (60hz on battery, max hz when plugged)
|
||||
- Keyboard backlight timeout on battery or when plugged
|
||||
|
||||
To keep auto switching and hotkeys working the app needs to stay running in the tray. It doesn't consume any resources.
|
||||
|
||||
@@ -56,20 +53,20 @@ To keep auto switching and hotkeys working the app needs to stay running in the
|
||||
|
||||
Modes are **same** as in Armoury Crate as they are stored in bios including default fan curves
|
||||
|
||||
1. Silent (minimal or no fans, 70W PPT total, up to 45W PPT to CPU) + Best power efficiency setting in windows
|
||||
2. Balanced (balanced fans, 100W PPT total, up to 45W PPT to CPU) + Balanced setting in windows
|
||||
3. Turbo (intense fans, 125W PPT total, up to 80W PPT to CPU) + Best performance setting in windows
|
||||
1. **Silent** (minimal or no fans, 70W PPT total, up to 45W PPT to CPU) + Best power efficiency setting in windows
|
||||
2. **Balanced** (balanced fans, 100W PPT total, up to 45W PPT to CPU) + Balanced setting in windows
|
||||
3. **Turbo** (intense fans, 125W PPT total, up to 80W PPT to CPU) + Best performance setting in windows
|
||||
|
||||
_PPTs are shown for G14 2022, for other models PPTs will be different as they are set in bios._
|
||||
|
||||
### :video_game: GPU Modes
|
||||
|
||||
1. Eco mode : only low power integrated GPU enabled, iGPU drives built in display
|
||||
2. Standard mode (MS Hybrid) : iGPU and dGPU enabled, iGPU drives built in display
|
||||
3. Ultimate mode: iGPU and dGPU enabled, but dGPU drives built in display (supported only on G14 2022 model)
|
||||
4. Optimized: disables dGPU on battery (Eco) and enables when plugged (Standard)
|
||||
1. **Eco** : only low power integrated GPU enabled, iGPU drives built in display
|
||||
2. **Standard** (MS Hybrid) : iGPU and dGPU enabled, iGPU drives built in display
|
||||
3. **Ultimate**: iGPU and dGPU enabled, but dGPU drives built in display (supported on 2022+ models)
|
||||
4. **Optimized**: disables dGPU on battery (Eco) and enables when plugged (Standard)
|
||||
|
||||

|
||||

|
||||
|
||||
## :question: FAQ
|
||||
|
||||
@@ -95,50 +92,53 @@ Click on them
|
||||
Most probably either you are using Eco / Optimized mode and your dGPU is simply off, or your windows has put the dGPU into sleep (to preserve power). In this situations G-helper won't be able to reach your GPU and get readings
|
||||
|
||||
#### I don't see app after starting it
|
||||
Please check system tray for a (G) icon. By default windows is keen to hide all icons, so you may need to click ^ to see them all. I would advise to right click on Task Bar select Task Bar Settings -> Other System Tray icons -> Mark G-Helper to be always ON.
|
||||
Please check the system tray for a (G) icon. By default windows is keen to hide all icons, so you may need to click ^ to see them all. I would advise to right click on Taskbar select TaskBar Settings -> Other System Tray icons -> Mark G-Helper to be always ON.
|
||||
|
||||
#### App crash or doesn't work properly what should I do ?
|
||||
Open "Event Viewer" from start menu, go to Windows Logs -> Application and check for recent Errors mentioning G-Helper. If you see one - please post a [new issue](https://github.com/seerge/g-helper/issues) with all details from this error.
|
||||
#### App crashes or doesn't work properly, what should I do ?
|
||||
Open "Event Viewer" from the start menu, go to Windows Logs -> Application and check for recent Errors mentioning G-Helper. If you see one - please post a [new issue](https://github.com/seerge/g-helper/issues) with all details from this error.
|
||||
|
||||
#### Battery charge limiter is not working
|
||||
It could be that Asus services are overwriting this limit after. You may want to stop them by clicking "Stop" in Asus Services section (under Extra).
|
||||
It could be that Asus services are overwriting this limit after. You may want to stop them by clicking "Stop" in the Asus Services section (under Extra).
|
||||
|
||||
#### Can I use MyASUS app along with G-Helper?
|
||||
You can, the only problem is that MyASUS may override the battery charge limit that you set before. My advice in such a situation would be to set the same limit (i.e. 80%) in both MyASUS and G-Helper.
|
||||
|
||||
#### How do I set Mute Microphone to M3?
|
||||
If you have Asus Optimization Service running, it's controlled by that service (therefore G-helper doesn't interfere and doesn't touch this function). Alternatively you can stop that service - and you can bind M3 to anything you want.
|
||||
If you have the Asus Optimization Service running, it's controlled by that service (therefore G-helper doesn't interfere and doesn't touch this function). Alternatively you can stop that service - and you can bind M3 to anything you want.
|
||||
|
||||
#### How do I set different "Visual styles"?
|
||||
Personally, i'm not a big fan of them, as they make colors very inaccurate. But if you want so - you can adjust display colors using either Nvidia Control panel or AMD Adrenaline (appropriate display sections). If you really want you can also use [own ASUS utility from MS Store](https://apps.microsoft.com/store/detail/gamevisual/9P4K1LFTXSH8?hl=nl-nl&gl=nl&rtc=1)
|
||||
Personally, I'm not a big fan of them, as they make colors very inaccurate. But if you want so - you can adjust display colors using either Nvidia Control panel or AMD Adrenaline (appropriate display sections). If you really want you can also use [own ASUS utility from MS Store](https://apps.microsoft.com/store/detail/gamevisual/9P4K1LFTXSH8?hl=nl-nl&gl=nl&rtc=1)
|
||||
|
||||
#### Can I overclock Nvidia GPU core / memory?
|
||||
Make sure that your dGPU is enabled (i.e. it's not in Eco mode). Open Fans + Power section and adjust core / memory clock offsets. They work same as in armoury's manual mode. Please keep in mind that (unfortunately) you need admin permissions for that, and app will ask you for them. (*)
|
||||
Make sure that your dGPU is enabled (i.e. it's not in Eco mode). Open Fans + Power section and adjust core / memory clock offsets. They work the same as in armoury's manual mode. Please keep in mind that (unfortunately) you need admin permissions for that, and the app will ask you for them. (*)
|
||||
|
||||
#### Windows defender marks app download as malware / virus
|
||||
False positives from Windows Defender (or any other similar system that uses machine learning for detection) is possible as application is not digitally signed with a certificate. You can always download a version below or compile app by yourself. All application sources are open and can be monitored from A to Z :)
|
||||
False positives from Windows Defender (or any other similar system that uses machine learning for detection) is possible as the application is not digitally signed with a certificate. You can always download a version below or compile the app by yourself. All application sources are open and can be monitored from A to Z :)
|
||||
|
||||
#### Where can I find app settings or logs ?
|
||||
You can find them under ``%AppData%\GHelper`` folder. Please include them when posting a new bug-report or issue.
|
||||
You can find them under the ``%AppData%\GHelper`` folder. Please include them when posting a new bug-report or issue.
|
||||
|
||||
#### App refuses to run on startup / runs without icon in tray on startup
|
||||
Open app, and uncheck and check again "run on startup". If it still doesn't help (by some reason), you can try to manually edit "GHelper" task in windows Task Scheduler, and add couple of seconds delay to start.
|
||||
Open the app, and uncheck and check again "run on startup". If it still doesn't help (for some reason), you can try to manually edit the "GHelper" task in Windows Task Scheduler, and add a couple of seconds delay to start.
|
||||
|
||||
#### How do I uninstall G-helper?
|
||||
G-helper is a single exe, and it doesn't install anything in the system. To remove it - you can simply delete exe :) If you have applied any custom fan profiles or PPTs - before removing I would recommend selecting your
|
||||
favorite performance mode (for example balanced) and clicking "Factory defaults" under Fans + Power.
|
||||
|
||||
#### Can I undervolt my CPU ?
|
||||
Currently you can undervolt AMD CPUs. If your model supports that - you will see undervolting slider under ``Fans+Power -> Advanced``. If you don't see slider there, it means your CPU doesn't support undervolting. Full list of models that suppor that [can be found here](https://github.com/seerge/g-helper/discussions/736)
|
||||
Currently you can undervolt AMD CPUs. If your model supports that - you will see an undervolting slider under ``Fans+Power -> Advanced``. If you don't see a slider there, it means your CPU doesn't support undervolting. Full list of models that support that [can be found here](https://github.com/seerge/g-helper/discussions/736)
|
||||
|
||||
#### I have G14 2023 and my GPU refuses to disable/enable
|
||||
It seem to be an issue in older BIOS versions. As [users report](https://github.com/seerge/g-helper/issues/680) - latest BIOS 310 (installable via myasus / g-helper -> updates) resolves all issues :) So please update.
|
||||
It seems to be an issue in older BIOS versions. As [users report](https://github.com/seerge/g-helper/issues/680) - latest BIOS 312 (installable via MyASUS or G-Helper -> Updates) resolves all issues :) So please update.
|
||||
|
||||
#### I have uninstalled Armoury andmy GPU performance is lower than it was
|
||||
#### I have G15 2022 and my GPU refuses to disable/enable or my fans missbehave
|
||||
G15 2022 is known to have a notoriously bugged BIOS (last one 313). Multiple users have reported that problems can be solved by rolling back to a [revious BIOS 311 from Asus Support website](https://rog.asus.com/nl/laptops/rog-zephyrus/rog-zephyrus-g15-2022-series/helpdesk_bios/).
|
||||
|
||||
#### I have uninstalled Armoury and my GPU performance is lower than it was
|
||||
Check your NVidia Experience settings and make sure that you have **Whisper Mode** set to ``OFF``. Also you can go to reset all settings ``Nvidia Control panel -> Manage 3D Settings -> Reset to defaults``
|
||||
|
||||
#### How do I do a hardware reset on a laptop?
|
||||
All Asus laptops have an option to do a hardware reset that can be handy sometimes. It doesn't touch your data, but resets all main hardware-related things (enables your dGPU, wakes up wifi/bt adapter if it hanged by some reason, etc). Turn OFF laptop. Press and hold "power" button for 30-40 seconds. Then boot normally (it will take a bit longer to boot)
|
||||
All Asus laptops have an option to do a hardware reset that can be handy sometimes. It doesn't touch your data, but resets all main hardware-related things (enables your dGPU, wakes up wifi/bt adapter if it hangs for some reason, etc). Turn OFF laptop. Press and hold the "power" button for 30-40 seconds. Then boot normally (it will take a bit longer to boot)
|
||||
|
||||
#### What is G-helper ?
|
||||
G-Helper is a lightweight Armoury Crate alternative for Asus laptops. A small utility that allows you to do almost everything you could do with Armoury Crate but without extra bloat and unnecessary services.
|
||||
@@ -164,7 +164,7 @@ G-Helper is a lightweight Armoury Crate alternative for Asus laptops. A small ut
|
||||
|
||||
- [Microsoft .NET7](https://dotnet.microsoft.com/en-us/download). Most probably you already have it. Otherwise [download it](https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-7.0.202-windows-x64-installer) from the official website.
|
||||
|
||||
- [Asus System Control Interface v3+](https://dlcdnets.asus.com/pub/ASUS/nb/Image/CustomComponent/ASUSSystemControlInterfaceV3/ASUSSystemControlInterfaceV3.exe). This "driver" from asus should be installed automatically by windows update or along other asus apps. If it's not the case by some reason - you can download and install it manually.
|
||||
- [Asus System Control Interface v3+](https://dlcdnets.asus.com/pub/ASUS/nb/Image/CustomComponent/ASUSSystemControlInterfaceV3/ASUSSystemControlInterfaceV3.exe). This "driver" from asus should be installed automatically by windows update or along other asus apps. If it's not the case for some reason - you can download and install it manually.
|
||||
|
||||
### Recommendations (optional)
|
||||
|
||||
@@ -191,25 +191,25 @@ _GENERAL NOTE: "Power user" settings require some config edits. Before making an
|
||||
|
||||
### Manual app language setting
|
||||
|
||||
By default app will use your windows language setting. But you can set language manually (if it supported of course)
|
||||
By default the app will use your windows language setting. But you can set language manually (if it supported of course)
|
||||
|
||||
Add following line to ``%AppData%\GHelper\config.json`` : ``"language" : "en"`` (by replacing "en" with language of your choice)
|
||||
|
||||
### Custom windows power plans with each mode
|
||||
|
||||
In ``%AppData%\GHelper\config.json`` you can manually add custom power plan (or power mode) GUID. It can be either "real" power plan that can be switched or "overlay" power plan like the ones g-helper sets by default.
|
||||
In ``%AppData%\GHelper\config.json`` you can manually add a custom power plan (or power mode) GUID. It can be either "real" power plan that can be switched or "overlay" power plan like the ones g-helper sets by default.
|
||||
|
||||
Format is following : ``"scheme_<mode>" : "GUID" ``
|
||||
Where ``mode = 0 (balanced), 1 (turbo), 2 (silent)``
|
||||
|
||||
Default behaviour is :
|
||||
Default behavior is :
|
||||
```
|
||||
"scheme_0": "00000000-0000-0000-0000-000000000000",
|
||||
"scheme_1": "ded574b5-45a0-4f42-8737-46345c09c238",
|
||||
"scheme_2": "961cc777-2547-4f9d-8174-7d86181b8a7a",
|
||||
```
|
||||
|
||||
Make sure to keep json structure (i.e. not to break it with extra or missing comas, etc) - or app will fail to read it and will just recreate a new config instead.
|
||||
Make sure to keep json structure (i.e. not to break it with extra or missing commas, etc) - or the app will fail to read it and will just recreate a new config instead.
|
||||
|
||||
### Custom hotkey actions
|
||||
|
||||
@@ -218,13 +218,13 @@ App supports custom actions for M3, M4 and FN+F4 hotkeys. To set them select "Cu
|
||||
1. To run any custom application - put a full path to exe into "action" text field, for example:
|
||||
``C:\Program Files\EA Games\Battlefield 2042\BF2042.exe``
|
||||
|
||||
2. To simulate any windows key - put appropriate keycode into "action" field, for example ``0x2C`` for Print screen.
|
||||
2. To simulate any windows key - put appropriate keycode into the "action" field, for example ``0x2C`` for Print Screen.
|
||||
Full list of keycodes https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
|
||||
|
||||

|
||||
|
||||
### Force Standard mode on shutdown / hibernation
|
||||
In some rare cases G14 2023 seem to have issues with enabling / disabling dGPU - i.e. Eco mode. Till we wait for a fix from asus on BIOS level, one of the proposed solutions is to always shutdown laptop in Standard mode (then everything seem to work fine). To enable "forced" Standard mode on shutdown add following line to ``%AppData%\GHelper\config.json``
|
||||
In some rare cases G14 2023 seem to have issues with enabling / disabling dGPU - i.e. Eco mode. Till we wait for a fix from asus on BIOS level, one of the proposed solutions is to always shutdown the laptop in Standard mode (then everything seems to work fine). To enable "forced" Standard mode on shutdown add following line to ``%AppData%\GHelper\config.json``
|
||||
```
|
||||
"gpu_fix" : 1,
|
||||
```
|
||||
@@ -235,12 +235,17 @@ You can disable app's OSD (for performance modes, keyboard backlight, etc) by ad
|
||||
"disable_osd": 1,
|
||||
```
|
||||
|
||||
### Extra Keybindings
|
||||
- ``Ctrl + Shift + 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
|
||||
|
||||
If you don't want this bindings to work you can add ``"skip_hotkeys":1,`` to ``%AppData%\GHelper\config.json``
|
||||
|
||||
### Keybinding to toggle performance modes (on external keyboards)
|
||||
|
||||
By default app will toggle performance modes with Ctr+Shift+F5. You can change this binding by adding ``"keybind_profile": 116`` in config.json (under ``%AppData%\GHelper``), where 116 is [numerical code for desired key](https://www.oreilly.com/library/view/javascript-dhtml/9780596514082/apb.html). Put 0 to completely disable this binding.
|
||||
|
||||
### Keybinding to open G-helper from external keyboards
|
||||
Ctrl + Shift + F12
|
||||
By default the app will toggle performance modes with Ctr+Shift+F5. You can change this binding by adding ``"keybind_profile": 116`` in config.json (under ``%AppData%\GHelper``), where 116 is [numerical code for desired key](https://www.oreilly.com/library/view/javascript-dhtml/9780596514082/apb.html). Put 0 to completely disable this binding.
|
||||
|
||||
------------
|
||||
|
||||
@@ -254,3 +259,5 @@ Ctrl + Shift + F12
|
||||
"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”, 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