mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Compare commits
503 Commits
v0.102
...
G14-2021-M
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fa79a72247 | ||
|
|
831f7b8989 | ||
|
|
77800475cb | ||
|
|
96553a162c | ||
|
|
d1e987f4da | ||
|
|
a1fb740c27 | ||
|
|
cff47002e1 | ||
|
|
c34ba9c620 | ||
|
|
3da2d042c8 | ||
|
|
b93499c20d | ||
|
|
feb7f1915e | ||
|
|
bd7f494830 | ||
|
|
1fc5095a65 | ||
|
|
920ed5e176 | ||
|
|
fce9cddd02 | ||
|
|
3332bd4b36 | ||
|
|
56289abc36 | ||
|
|
9be02a102d | ||
|
|
e1e94e1118 | ||
|
|
2ffd08e754 | ||
|
|
0378b65763 | ||
|
|
5dd3760e90 | ||
|
|
e7eb7fab8a | ||
|
|
ce128adc4f | ||
|
|
a794f8ed5f | ||
|
|
9d30f2f83e | ||
|
|
b93f1a385b | ||
|
|
6bb4ba4119 | ||
|
|
178cb04002 | ||
|
|
2d41cd62a8 | ||
|
|
f9e4e89c15 | ||
|
|
02717c47be | ||
|
|
cc010053b2 | ||
|
|
9bcc0fccd7 | ||
|
|
d8df9b03bf | ||
|
|
abfa2388e4 | ||
|
|
670f91efa8 | ||
|
|
70d442c409 | ||
|
|
5f018fa7b5 | ||
|
|
94f0b900de | ||
|
|
e17ff8fc94 | ||
|
|
bd4ee506ac | ||
|
|
8c5b224dc2 | ||
|
|
f111b5449e | ||
|
|
47f86d222f | ||
|
|
f9b7073dd7 | ||
|
|
a6c11f2ce3 | ||
|
|
46fad77bac | ||
|
|
22a96fcce0 | ||
|
|
6df0dc8e9e | ||
|
|
ee7c0c6dab | ||
|
|
6e086da024 | ||
|
|
292d2a8ebc | ||
|
|
52e78a8665 | ||
|
|
a97bfc2a58 | ||
|
|
15001d987a | ||
|
|
ecbeee82d8 | ||
|
|
e6c59283c1 | ||
|
|
495b695589 | ||
|
|
6ac7d7cc4d | ||
|
|
0c328b1fda | ||
|
|
bd8a670424 | ||
|
|
5f1139f132 | ||
|
|
188b01c158 | ||
|
|
8307fabe15 | ||
|
|
cead02eed2 | ||
|
|
fabf63655b | ||
|
|
da2f887c68 | ||
|
|
26dbd77b05 | ||
|
|
63382b748f | ||
|
|
1e2a5b0479 | ||
|
|
341e747f7e | ||
|
|
348f5a8ea1 | ||
|
|
c0b6c444b4 | ||
|
|
f8d07bad1b | ||
|
|
a138ebe0e7 | ||
|
|
2260b01480 | ||
|
|
9761f10398 | ||
|
|
984cb2f53e | ||
|
|
7c80a02cef | ||
|
|
f545d48179 | ||
|
|
07df99aaae | ||
|
|
6f60e1af1f | ||
|
|
e0080ca879 | ||
|
|
eaf2483558 | ||
|
|
8cac276925 | ||
|
|
499c83e3b0 | ||
|
|
ba0764aa85 | ||
|
|
53c1ee4c71 | ||
|
|
fe1891a2a9 | ||
|
|
0ffb9f11d4 | ||
|
|
307cc81f18 | ||
|
|
2384649e09 | ||
|
|
4952675749 | ||
|
|
e2596ed9cb | ||
|
|
190786a15a | ||
|
|
9bcf3f36f8 | ||
|
|
26e1ae4d7b | ||
|
|
98af882970 | ||
|
|
5835e71947 | ||
|
|
f46580bd1b | ||
|
|
a282da6fd7 | ||
|
|
1420d17413 | ||
|
|
b7b6270565 | ||
|
|
49eb45749a | ||
|
|
ec709f37e8 | ||
|
|
615c58ac3c | ||
|
|
20d698febd | ||
|
|
3bb6bf3228 | ||
|
|
9674f034dd | ||
|
|
f11ed679d9 | ||
|
|
2bb5087a63 | ||
|
|
e4aa5f0283 | ||
|
|
18b664a123 | ||
|
|
1d03eb064a | ||
|
|
0ad058ec4a | ||
|
|
18b54886ed | ||
|
|
f79a91fb78 | ||
|
|
584755ea93 | ||
|
|
3652e4d0ff | ||
|
|
0069234563 | ||
|
|
d92a1880ee | ||
|
|
dd72e2b573 | ||
|
|
10714d1002 | ||
|
|
daad1bca53 | ||
|
|
c82ec8a005 | ||
|
|
9fbea0a3d3 | ||
|
|
ed06247206 | ||
|
|
1e7bd816f2 | ||
|
|
592c4aa07a | ||
|
|
59f3aa9af4 | ||
|
|
8df825e250 | ||
|
|
a985cc5bbb | ||
|
|
bd7985e817 | ||
|
|
8706f9f03c | ||
|
|
5c6a587745 | ||
|
|
de4905f84f | ||
|
|
121a9224e9 | ||
|
|
af9626e385 | ||
|
|
6b3db926fc | ||
|
|
8f8be7a13e | ||
|
|
12450dbba4 | ||
|
|
4f6de3c6a3 | ||
|
|
d89420e0f1 | ||
|
|
ddc13e0dec | ||
|
|
61a3d782e8 | ||
|
|
b1c8aa97c8 | ||
|
|
3a50ee1784 | ||
|
|
a69ce3592f | ||
|
|
b49ae96dfe | ||
|
|
4c989c9d75 | ||
|
|
2282e56aad | ||
|
|
982f2e8e32 | ||
|
|
e90f19e3e2 | ||
|
|
6d6a9c68f2 | ||
|
|
8138e44cdd | ||
|
|
ef788798b7 | ||
|
|
07d81e6072 | ||
|
|
708e3aa40f | ||
|
|
3075e22e1e | ||
|
|
b15109d13e | ||
|
|
c491087a29 | ||
|
|
cf08ae0789 | ||
|
|
624f15be65 | ||
|
|
4789d0d782 | ||
|
|
f8fd8a9695 | ||
|
|
91cfb8d38c | ||
|
|
130d9b73fb | ||
|
|
604d24ebbe | ||
|
|
8c3a74a991 | ||
|
|
ed143a7bba | ||
|
|
ac5f1ec1b5 | ||
|
|
403db3057c | ||
|
|
4dac7b8e9d | ||
|
|
a856f87146 | ||
|
|
d733101a26 | ||
|
|
89741a5e8a | ||
|
|
f00026b53a | ||
|
|
5004358fe2 | ||
|
|
97f6565024 | ||
|
|
f1a69ebad3 | ||
|
|
bf6c3e636e | ||
|
|
a4e98a9fb1 | ||
|
|
8b717f856a | ||
|
|
4d8f093a4b | ||
|
|
c699c82bbe | ||
|
|
5634d75672 | ||
|
|
cf33b0cc52 | ||
|
|
ddbaeb623b | ||
|
|
3efb2e0db9 | ||
|
|
8159aec53b | ||
|
|
564efb2f32 | ||
|
|
4dfcd6a5f9 | ||
|
|
0aa4d873d0 | ||
|
|
911c01b6b2 | ||
|
|
3a5e5fa227 | ||
|
|
bf5786aca6 | ||
|
|
ed065d00dc | ||
|
|
6aa899d989 | ||
|
|
417d156300 | ||
|
|
2471edd82f | ||
|
|
196eda7463 | ||
|
|
1d63376c99 | ||
|
|
846b05b89e | ||
|
|
0f3b660824 | ||
|
|
14565cf8fa | ||
|
|
3d5c0d5ade | ||
|
|
14e0adaca8 | ||
|
|
4365d3b4cb | ||
|
|
62ca72e684 | ||
|
|
71c0c10f29 | ||
|
|
8733ef34d3 | ||
|
|
ff0a12d104 | ||
|
|
fe628319b7 | ||
|
|
86c11beee6 | ||
|
|
e45a72f6c6 | ||
|
|
88af725a08 | ||
|
|
d3fee87802 | ||
|
|
ea61e428da | ||
|
|
7d5bd42f53 | ||
|
|
78c689eb08 | ||
|
|
69c2f6ff6e | ||
|
|
b59db1432a | ||
|
|
4f85cd32aa | ||
|
|
f0d6d25e93 | ||
|
|
2d6d4093e9 | ||
|
|
8fc167fd57 | ||
|
|
475110af09 | ||
|
|
3fc4621dc9 | ||
|
|
43ddf6585c | ||
|
|
61d155d936 | ||
|
|
d133162579 | ||
|
|
fff4612a8d | ||
|
|
d6f410c6e6 | ||
|
|
ab11965d50 | ||
|
|
6071f41c33 | ||
|
|
e220ad73b3 | ||
|
|
f7b9efc3cb | ||
|
|
e19f815498 | ||
|
|
cf95bb1faa | ||
|
|
c9b7e4b2af | ||
|
|
1827450f4b | ||
|
|
a990770ce1 | ||
|
|
8bf20a9ed1 | ||
|
|
48674dcf90 | ||
|
|
4be50d68da | ||
|
|
0c6d31950e | ||
|
|
80e8c8fcc2 | ||
|
|
0c7621b798 | ||
|
|
3efe8fb67e | ||
|
|
5c613af9f2 | ||
|
|
e33c13bd19 | ||
|
|
d764a20dc7 | ||
|
|
39a61b5118 | ||
|
|
f93594c4ae | ||
|
|
3700e4469d | ||
|
|
60a154851f | ||
|
|
8c621fe6d5 | ||
|
|
d01fe2e4b0 | ||
|
|
08382a6ec5 | ||
|
|
6746916425 | ||
|
|
934ed919e4 | ||
|
|
53b0dc343c | ||
|
|
c04f26ae00 | ||
|
|
3b5587d2e1 | ||
|
|
cc48e04530 | ||
|
|
29f0de9cba | ||
|
|
f9a7bd0fe0 | ||
|
|
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 | ||
|
|
1038d4479c | ||
|
|
78d663c62c | ||
|
|
2f96adb204 | ||
|
|
e6f9be1bfd | ||
|
|
297cec6e77 | ||
|
|
5aca01b21e | ||
|
|
3df2193afb | ||
|
|
ed513e4469 | ||
|
|
c398537a1f | ||
|
|
42641f5627 | ||
|
|
7b10532650 | ||
|
|
eb4d4c3d70 | ||
|
|
43c93d6a70 | ||
|
|
bd26dfb774 | ||
|
|
c4aa38c82b | ||
|
|
c0597e01b6 | ||
|
|
8a6c4e1cee | ||
|
|
0a77176bcc | ||
|
|
35fc78d757 | ||
|
|
407206309a | ||
|
|
51bc8143dd | ||
|
|
98bac7171a | ||
|
|
839ef140ff | ||
|
|
c3e97caf49 | ||
|
|
96319f4dbb | ||
|
|
cbccd5b641 | ||
|
|
4742c33466 | ||
|
|
81681eb7c4 | ||
|
|
7c80a32fc2 | ||
|
|
9cb2904632 | ||
|
|
40859a06d0 | ||
|
|
b00ac96e99 | ||
|
|
c7c14a9211 | ||
|
|
78cbfc8813 | ||
|
|
569519aeea | ||
|
|
3cfd7e01ca | ||
|
|
93b6c360d6 | ||
|
|
15ba1b8c38 | ||
|
|
2f35889a61 | ||
|
|
e0e86962d1 | ||
|
|
cdde8afc7e | ||
|
|
0af87ecdac | ||
|
|
4b3d18347c | ||
|
|
8c2ee50c93 | ||
|
|
6d66831770 | ||
|
|
e0795dd16b | ||
|
|
b0733d9254 | ||
|
|
0d757ef06d | ||
|
|
d19aaf804a | ||
|
|
41adef4786 | ||
|
|
9ee3ae7359 | ||
|
|
bd0f97c5d9 | ||
|
|
f85644bd2b | ||
|
|
62f1263951 | ||
|
|
1fcd0f2b97 | ||
|
|
73baf548a4 | ||
|
|
6357a22e38 | ||
|
|
3a08ee8d7c | ||
|
|
af67684e91 | ||
|
|
a877904b46 | ||
|
|
f090b4a44e | ||
|
|
b3f5a2dfa2 | ||
|
|
6029660860 | ||
|
|
b304ce22b9 | ||
|
|
b7910d9f79 | ||
|
|
505b3a9e4a | ||
|
|
42a346b19e | ||
|
|
7c42f87751 | ||
|
|
a323bd85ab | ||
|
|
6e4b5226f5 | ||
|
|
acaa8bc523 | ||
|
|
ef31935b24 | ||
|
|
a9c104d388 | ||
|
|
bc9d6be0d6 | ||
|
|
d37e06d399 | ||
|
|
d49832ae0f | ||
|
|
f318d09b9b | ||
|
|
5cd77bb5cc | ||
|
|
6b4d18c9c5 | ||
|
|
5830220a3d | ||
|
|
dfe4bebe58 | ||
|
|
cff2c9af0b | ||
|
|
e16a50f1f2 | ||
|
|
254e6a8633 | ||
|
|
ccb413b2e6 | ||
|
|
e2ea79b758 | ||
|
|
c1043efc53 | ||
|
|
6c6c93b378 | ||
|
|
f9a8665290 | ||
|
|
54d7dfe4f8 | ||
|
|
eeb53cb483 | ||
|
|
b9625f2748 | ||
|
|
8d41c228e0 | ||
|
|
0146a40244 | ||
|
|
98534c9b43 | ||
|
|
67aa2b5af8 | ||
|
|
a451125475 | ||
|
|
fb3ffba343 | ||
|
|
86ded739d6 | ||
|
|
80e8d54b57 | ||
|
|
f0f05fa1fd | ||
|
|
b7a4027b41 | ||
|
|
5f3958ce2b | ||
|
|
dcf4fa5a48 | ||
|
|
6ace1fdd63 | ||
|
|
243e307f0a | ||
|
|
8e53a94a13 | ||
|
|
4f337a7100 | ||
|
|
b1a9bfe68d |
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
|
||||
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
using NAudio.Wave;
|
||||
using Starlight.AnimeMatrix;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Timers;
|
||||
|
||||
namespace GHelper.AnimeMatrix
|
||||
@@ -14,12 +16,12 @@ namespace GHelper.AnimeMatrix
|
||||
SettingsForm settings;
|
||||
|
||||
System.Timers.Timer matrixTimer = default!;
|
||||
AnimeMatrixDevice? mat;
|
||||
public AnimeMatrixDevice? device;
|
||||
|
||||
double[]? AudioValues;
|
||||
WasapiCapture? AudioDevice;
|
||||
|
||||
public bool IsValid => mat != null;
|
||||
public bool IsValid => device != null;
|
||||
|
||||
private long lastPresent;
|
||||
private List<double> maxes = new List<double>();
|
||||
@@ -30,19 +32,19 @@ namespace GHelper.AnimeMatrix
|
||||
|
||||
try
|
||||
{
|
||||
mat = new AnimeMatrixDevice();
|
||||
Task.Run(mat.WakeUp);
|
||||
device = new AnimeMatrixDevice();
|
||||
Task.Run(device.WakeUp);
|
||||
matrixTimer = new System.Timers.Timer(100);
|
||||
matrixTimer.Elapsed += MatrixTimer_Elapsed;
|
||||
}
|
||||
catch
|
||||
{
|
||||
mat = null;
|
||||
device = null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void SetMatrix()
|
||||
public void SetMatrix(bool wakeUp = false)
|
||||
{
|
||||
|
||||
if (!IsValid) return;
|
||||
@@ -65,17 +67,28 @@ namespace GHelper.AnimeMatrix
|
||||
StopMatrixTimer();
|
||||
StopMatrixAudio();
|
||||
|
||||
mat.SetProvider();
|
||||
try
|
||||
{
|
||||
device.SetProvider();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine(ex.Message);
|
||||
return;
|
||||
}
|
||||
|
||||
if (wakeUp && AppConfig.ContainsModel("401")) device.WakeUp();
|
||||
|
||||
if (brightness == 0 || (auto && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online))
|
||||
{
|
||||
mat.SetDisplayState(false);
|
||||
device.SetDisplayState(false);
|
||||
device.SetDisplayState(false); // some devices are dumb
|
||||
Logger.WriteLine("Matrix Off");
|
||||
}
|
||||
else
|
||||
{
|
||||
mat.SetDisplayState(true);
|
||||
mat.SetBrightness((BrightnessMode)brightness);
|
||||
device.SetDisplayState(true);
|
||||
device.SetBrightness((BrightnessMode)brightness);
|
||||
|
||||
switch (running)
|
||||
{
|
||||
@@ -89,7 +102,7 @@ namespace GHelper.AnimeMatrix
|
||||
SetMatrixAudio();
|
||||
break;
|
||||
default:
|
||||
mat.SetBuiltInAnimation(true, animation);
|
||||
device.SetBuiltInAnimation(true, animation);
|
||||
Logger.WriteLine("Matrix builtin " + animation.AsByte);
|
||||
break;
|
||||
|
||||
@@ -118,10 +131,10 @@ namespace GHelper.AnimeMatrix
|
||||
switch (AppConfig.Get("matrix_running"))
|
||||
{
|
||||
case 2:
|
||||
mat.PresentNextFrame();
|
||||
device.PresentNextFrame();
|
||||
break;
|
||||
case 3:
|
||||
mat.PresentClock();
|
||||
device.PresentClock();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -130,7 +143,7 @@ namespace GHelper.AnimeMatrix
|
||||
|
||||
public void SetMatrixClock()
|
||||
{
|
||||
mat.SetBuiltInAnimation(false);
|
||||
device.SetBuiltInAnimation(false);
|
||||
StartMatrixTimer(1000);
|
||||
Logger.WriteLine("Matrix Clock");
|
||||
}
|
||||
@@ -160,7 +173,7 @@ namespace GHelper.AnimeMatrix
|
||||
{
|
||||
if (!IsValid) return;
|
||||
|
||||
mat.SetBuiltInAnimation(false);
|
||||
device.SetBuiltInAnimation(false);
|
||||
StopMatrixTimer();
|
||||
StopMatrixAudio();
|
||||
|
||||
@@ -229,8 +242,8 @@ namespace GHelper.AnimeMatrix
|
||||
for (int x = 0; x < 2 - (y % 2); x++)
|
||||
{
|
||||
//color = (byte)(Math.Min(1,(h - y - 2)*2) * 255);
|
||||
mat.SetLedPlanar(x + dx, dy + y, (byte)(h * 255 / 30));
|
||||
mat.SetLedPlanar(x + dx, dy - y, 255);
|
||||
device.SetLedPlanar(x + dx, dy + y, (byte)(h * 255 / 30));
|
||||
device.SetLedPlanar(x + dx, dy - y, 255);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -240,7 +253,7 @@ namespace GHelper.AnimeMatrix
|
||||
if (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastPresent) < 70) return;
|
||||
lastPresent = DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
||||
|
||||
mat.Clear();
|
||||
device.Clear();
|
||||
|
||||
int size = 20;
|
||||
double[] bars = new double[size];
|
||||
@@ -258,7 +271,7 @@ namespace GHelper.AnimeMatrix
|
||||
|
||||
for (int i = 0; i < size; i++) DrawBar(20 - i, bars[i] * 20 / maxAverage);
|
||||
|
||||
mat.Present();
|
||||
device.Present();
|
||||
}
|
||||
|
||||
|
||||
@@ -293,22 +306,30 @@ namespace GHelper.AnimeMatrix
|
||||
|
||||
}
|
||||
|
||||
public void SetMatrixPicture(string fileName)
|
||||
public void SetMatrixPicture(string fileName, bool visualise = true)
|
||||
{
|
||||
|
||||
if (!IsValid) return;
|
||||
StopMatrixTimer();
|
||||
|
||||
Image image;
|
||||
|
||||
try
|
||||
{
|
||||
using (var fs = new FileStream(fileName, FileMode.Open))
|
||||
//using (var ms = new MemoryStream())
|
||||
{
|
||||
var ms = new MemoryStream();
|
||||
/*
|
||||
ms.SetLength(0);
|
||||
fs.CopyTo(ms);
|
||||
ms.Position = 0;
|
||||
image = Image.FromStream(ms);
|
||||
*/
|
||||
using (Image image = Image.FromStream(fs))
|
||||
{
|
||||
ProcessPicture(image);
|
||||
Logger.WriteLine("Matrix " + fileName);
|
||||
}
|
||||
|
||||
fs.Close();
|
||||
if (visualise) settings.VisualiseMatrix(fileName);
|
||||
}
|
||||
}
|
||||
catch
|
||||
@@ -317,30 +338,49 @@ namespace GHelper.AnimeMatrix
|
||||
return;
|
||||
}
|
||||
|
||||
mat.SetBuiltInAnimation(false);
|
||||
mat.ClearFrames();
|
||||
}
|
||||
|
||||
protected void ProcessPicture(Image image)
|
||||
{
|
||||
device.SetBuiltInAnimation(false);
|
||||
device.ClearFrames();
|
||||
|
||||
int matrixX = AppConfig.Get("matrix_x", 0);
|
||||
int matrixY = AppConfig.Get("matrix_y", 0);
|
||||
int matrixZoom = AppConfig.Get("matrix_zoom", 100);
|
||||
int matrixSpeed = AppConfig.Get("matrix_speed", 50);
|
||||
|
||||
InterpolationMode matrixQuality = (InterpolationMode)AppConfig.Get("matrix_quality", 0);
|
||||
|
||||
|
||||
FrameDimension dimension = new FrameDimension(image.FrameDimensionsList[0]);
|
||||
int frameCount = image.GetFrameCount(dimension);
|
||||
|
||||
if (frameCount > 1)
|
||||
{
|
||||
var delayPropertyBytes = image.GetPropertyItem(0x5100).Value;
|
||||
var frameDelay = BitConverter.ToInt32(delayPropertyBytes) * 10;
|
||||
|
||||
for (int i = 0; i < frameCount; i++)
|
||||
{
|
||||
image.SelectActiveFrame(dimension, i);
|
||||
mat.GenerateFrame(image);
|
||||
mat.AddFrame();
|
||||
device.GenerateFrame(image, matrixZoom, matrixX, matrixY, matrixQuality);
|
||||
device.AddFrame();
|
||||
}
|
||||
|
||||
StartMatrixTimer();
|
||||
Logger.WriteLine("Matrix GIF " + fileName);
|
||||
|
||||
Logger.WriteLine("GIF Delay:" + frameDelay);
|
||||
StartMatrixTimer(Math.Max(matrixSpeed, frameDelay));
|
||||
|
||||
//image.SelectActiveFrame(dimension, 0);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
mat.GenerateFrame(image);
|
||||
mat.Present();
|
||||
Logger.WriteLine("Matrix " + fileName);
|
||||
device.GenerateFrame(image, matrixZoom, matrixX, matrixY, matrixQuality);
|
||||
device.Present();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
using GHelper.AnimeMatrix.Communication;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Drawing.Imaging;
|
||||
using System.Drawing.Text;
|
||||
using System.Globalization;
|
||||
using System.Management;
|
||||
using System.Text;
|
||||
|
||||
@@ -77,6 +77,7 @@ namespace Starlight.AnimeMatrix
|
||||
}
|
||||
|
||||
|
||||
|
||||
public class AnimeMatrixDevice : Device
|
||||
{
|
||||
int UpdatePageLength = 490;
|
||||
@@ -86,35 +87,36 @@ namespace Starlight.AnimeMatrix
|
||||
List<byte[]> frames = new List<byte[]>();
|
||||
|
||||
public int MaxRows = 61;
|
||||
//public int FullRows = 11;
|
||||
//public int FullEvenRows = -1;
|
||||
|
||||
public int dx = 0;
|
||||
//Shifts the whole frame to the left or right to align with the diagonal cut
|
||||
public int frameShiftX = 0;
|
||||
public int MaxColumns = 34;
|
||||
public int LedStart = 0;
|
||||
|
||||
public int TextShift = 8;
|
||||
|
||||
private int frameIndex = 0;
|
||||
|
||||
private static AnimeType _model = AnimeType.GA402;
|
||||
|
||||
[System.Runtime.InteropServices.DllImport("gdi32.dll")]
|
||||
private static extern IntPtr AddFontMemResourceEx(IntPtr pbFont, uint cbFont, IntPtr pdv, [System.Runtime.InteropServices.In] ref uint pcFonts);
|
||||
private PrivateFontCollection fonts = new PrivateFontCollection();
|
||||
|
||||
public AnimeMatrixDevice()
|
||||
: base(0x0B05, 0x193B, 640)
|
||||
public AnimeMatrixDevice() : base(0x0B05, 0x193B, 640)
|
||||
{
|
||||
string model = GetModel();
|
||||
|
||||
if (model.Contains("401"))
|
||||
{
|
||||
|
||||
_model = AnimeType.GA401;
|
||||
|
||||
MaxColumns = 33;
|
||||
dx = 1;
|
||||
|
||||
MaxRows = 55;
|
||||
LedCount = 1245;
|
||||
|
||||
UpdatePageLength = 410;
|
||||
|
||||
TextShift = 11;
|
||||
|
||||
LedStart = 1;
|
||||
}
|
||||
|
||||
if (model.Contains("GU604"))
|
||||
@@ -124,14 +126,36 @@ namespace Starlight.AnimeMatrix
|
||||
MaxColumns = 39;
|
||||
MaxRows = 92;
|
||||
LedCount = 1711;
|
||||
frameShiftX = -5;
|
||||
UpdatePageLength = 630;
|
||||
|
||||
TextShift = 10;
|
||||
}
|
||||
|
||||
_displayBuffer = new byte[LedCount];
|
||||
|
||||
/*
|
||||
for (int i = 0; i < MaxRows; i++)
|
||||
{
|
||||
_model = AnimeType.GA401;
|
||||
Logger.WriteLine(FirstX(i) + " " + Pitch(i));
|
||||
}
|
||||
*/
|
||||
|
||||
LoadMFont();
|
||||
|
||||
}
|
||||
|
||||
private void LoadMFont()
|
||||
{
|
||||
byte[] fontData = GHelper.Properties.Resources.MFont;
|
||||
IntPtr fontPtr = System.Runtime.InteropServices.Marshal.AllocCoTaskMem(fontData.Length);
|
||||
System.Runtime.InteropServices.Marshal.Copy(fontData, 0, fontPtr, fontData.Length);
|
||||
uint dummy = 0;
|
||||
|
||||
fonts.AddMemoryFont(fontPtr, GHelper.Properties.Resources.MFont.Length);
|
||||
AddFontMemResourceEx(fontPtr, (uint)GHelper.Properties.Resources.MFont.Length, IntPtr.Zero, ref dummy);
|
||||
System.Runtime.InteropServices.Marshal.FreeCoTaskMem(fontPtr);
|
||||
}
|
||||
|
||||
public string GetModel()
|
||||
{
|
||||
@@ -175,28 +199,7 @@ namespace Starlight.AnimeMatrix
|
||||
}
|
||||
|
||||
|
||||
public static int FirstX(int y)
|
||||
{
|
||||
switch (_model)
|
||||
{
|
||||
case AnimeType.GA401:
|
||||
if (y < 5)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return (y + 1) / 2 - 3;
|
||||
}
|
||||
case AnimeType.GU604:
|
||||
return (int)Math.Ceiling(Math.Max(0, y - 9) / 2F);
|
||||
|
||||
default:
|
||||
return (int)Math.Ceiling(Math.Max(0, y - 11) / 2F);
|
||||
}
|
||||
}
|
||||
|
||||
public static int Width(int y)
|
||||
public int Width()
|
||||
{
|
||||
switch (_model)
|
||||
{
|
||||
@@ -209,7 +212,30 @@ namespace Starlight.AnimeMatrix
|
||||
}
|
||||
}
|
||||
|
||||
public static int Pitch(int y)
|
||||
public int FirstX(int y)
|
||||
{
|
||||
switch (_model)
|
||||
{
|
||||
case AnimeType.GA401:
|
||||
if (y < 5 && y % 2 == 0)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
return (int)Math.Ceiling(Math.Max(0, y - 5) / 2F);
|
||||
case AnimeType.GU604:
|
||||
if (y < 9 && y % 2 == 0)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
return (int)Math.Ceiling(Math.Max(0, y - 9) / 2F);
|
||||
|
||||
default:
|
||||
return (int)Math.Ceiling(Math.Max(0, y - 11) / 2F);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public int Pitch(int y)
|
||||
{
|
||||
switch (_model)
|
||||
{
|
||||
@@ -226,15 +252,38 @@ namespace Starlight.AnimeMatrix
|
||||
default:
|
||||
return 36 - y / 2;
|
||||
}
|
||||
|
||||
case AnimeType.GU604:
|
||||
switch (y)
|
||||
{
|
||||
case 0:
|
||||
case 2:
|
||||
case 4:
|
||||
case 6:
|
||||
case 8:
|
||||
return 38;
|
||||
|
||||
case 1:
|
||||
case 3:
|
||||
case 5:
|
||||
case 7:
|
||||
case 9:
|
||||
return 39;
|
||||
|
||||
default:
|
||||
return Width() - FirstX(y);
|
||||
}
|
||||
|
||||
|
||||
default:
|
||||
return Width(y) - FirstX(y);
|
||||
return Width() - FirstX(y);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public int RowToLinearAddress(int y)
|
||||
{
|
||||
int ret = 0;
|
||||
int ret = LedStart;
|
||||
for (var i = 0; i < y; i++)
|
||||
ret += Pitch(i);
|
||||
|
||||
@@ -245,8 +294,8 @@ namespace Starlight.AnimeMatrix
|
||||
{
|
||||
if (!IsRowInRange(y)) return;
|
||||
|
||||
if (x >= FirstX(y) && x < Width(y))
|
||||
SetLedLinear(RowToLinearAddress(y) - FirstX(y) + x + dx + frameShiftX, value);
|
||||
if (x >= FirstX(y) && x < Width())
|
||||
SetLedLinear(RowToLinearAddress(y) - FirstX(y) + x, value);
|
||||
}
|
||||
|
||||
public void WakeUp()
|
||||
@@ -344,20 +393,49 @@ namespace Starlight.AnimeMatrix
|
||||
|
||||
public void PresentClock()
|
||||
{
|
||||
int second = DateTime.Now.Second;
|
||||
string time;
|
||||
string second = (DateTime.Now.Second % 2 == 0) ? ":" : " ";
|
||||
string time = DateTime.Now.ToString("HH" + second + "mm");
|
||||
|
||||
if (CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern.Contains("H"))
|
||||
time = DateTime.Now.ToString("H" + ((second % 2 == 0) ? ":" : " ") + "mm");
|
||||
else
|
||||
time = DateTime.Now.ToString("h" + ((second % 2 == 0) ? ":" : " ") + "mmtt");
|
||||
Clear();
|
||||
TextDiagonal(time, 15, 12, TextShift + 11);
|
||||
TextDiagonal(DateTime.Now.ToString("yy'. 'MM'. 'dd"), 11.5F, 3, TextShift);
|
||||
Present();
|
||||
|
||||
if (_model == AnimeType.GA401)
|
||||
PresentText(time);
|
||||
else
|
||||
PresentTextDiagonal(time);
|
||||
}
|
||||
|
||||
public void TextDiagonal(string text, float fontSize = 10, int deltaX = 0, int deltaY = 10)
|
||||
{
|
||||
|
||||
int maxX = (int)Math.Sqrt(MaxRows * MaxRows + MaxColumns * MaxColumns);
|
||||
int textHeight;
|
||||
|
||||
using (Bitmap bmp = new Bitmap(maxX, MaxRows))
|
||||
{
|
||||
using (Graphics g = Graphics.FromImage(bmp))
|
||||
{
|
||||
g.CompositingQuality = CompositingQuality.HighQuality;
|
||||
g.SmoothingMode = SmoothingMode.AntiAlias;
|
||||
g.TextRenderingHint = TextRenderingHint.SingleBitPerPixel;
|
||||
|
||||
using (Font font = new Font(fonts.Families[0], fontSize, FontStyle.Regular, GraphicsUnit.Pixel))
|
||||
{
|
||||
SizeF textSize = g.MeasureString(text, font);
|
||||
textHeight = (int)textSize.Height;
|
||||
g.DrawString(text, font, Brushes.White, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
for (int y = 0; y < bmp.Height; y++)
|
||||
{
|
||||
for (int x = 0; x < bmp.Width; x++)
|
||||
{
|
||||
var pixel = bmp.GetPixel(x, y);
|
||||
var color = (pixel.R + pixel.G + pixel.B) / 3;
|
||||
if (color > 100) SetLedDiagonal(x, y, (byte)color, deltaX, deltaY);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void PresentText(string text1, string text2 = "")
|
||||
@@ -368,8 +446,9 @@ namespace Starlight.AnimeMatrix
|
||||
{
|
||||
g.CompositingQuality = CompositingQuality.HighQuality;
|
||||
g.SmoothingMode = SmoothingMode.AntiAlias;
|
||||
g.TextRenderingHint = TextRenderingHint.SingleBitPerPixel;
|
||||
|
||||
using (Font font = new Font("Consolas", 21F, FontStyle.Regular, GraphicsUnit.Pixel))
|
||||
using (Font font = new Font("Consolas", 22F, FontStyle.Regular, GraphicsUnit.Pixel))
|
||||
{
|
||||
SizeF textSize = g.MeasureString(text1, font);
|
||||
g.DrawString(text1, font, Brushes.White, (MaxColumns * 3 - textSize.Width) + 3, -4);
|
||||
@@ -384,13 +463,15 @@ namespace Starlight.AnimeMatrix
|
||||
|
||||
}
|
||||
|
||||
GenerateFrame(bmp, InterpolationMode.Bicubic);
|
||||
bmp.Save("test.bmp", ImageFormat.Bmp);
|
||||
|
||||
GenerateFrame(bmp);
|
||||
Present();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void GenerateFrame(Image image, InterpolationMode interpolation = InterpolationMode.High)
|
||||
public void GenerateFrame(Image image, float zoom = 100, int panX = 0, int panY = 0, InterpolationMode quality = InterpolationMode.Default)
|
||||
{
|
||||
|
||||
int width = MaxColumns / 2 * 6;
|
||||
@@ -402,25 +483,25 @@ namespace Starlight.AnimeMatrix
|
||||
|
||||
using (Bitmap bmp = new Bitmap(targetWidth, height))
|
||||
{
|
||||
scale = Math.Min((float)width / (float)image.Width, (float)height / (float)image.Height);
|
||||
scale = Math.Min((float)width / (float)image.Width, (float)height / (float)image.Height) * zoom / 100;
|
||||
|
||||
using (var graph = Graphics.FromImage(bmp))
|
||||
{
|
||||
var scaleWidth = (float)(image.Width * scale);
|
||||
var scaleHeight = (float)(image.Height * scale);
|
||||
|
||||
graph.InterpolationMode = interpolation;
|
||||
graph.InterpolationMode = quality;
|
||||
graph.CompositingQuality = CompositingQuality.HighQuality;
|
||||
graph.SmoothingMode = SmoothingMode.AntiAlias;
|
||||
|
||||
graph.DrawImage(image, (float)Math.Round(targetWidth - scaleWidth * targetWidth / width), 0, (float)Math.Round(scaleWidth * targetWidth / width), scaleHeight);
|
||||
graph.DrawImage(image, (float)Math.Round(targetWidth - (scaleWidth + panX) * targetWidth / width), -panY, (float)Math.Round(scaleWidth * targetWidth / width), scaleHeight);
|
||||
|
||||
}
|
||||
|
||||
for (int y = 0; y < bmp.Height; y++)
|
||||
{
|
||||
for (int x = 0; x < bmp.Width; x++)
|
||||
if (x % 2 == (y + dx) % 2)
|
||||
if (x % 2 == y % 2)
|
||||
{
|
||||
var pixel = bmp.GetPixel(x, y);
|
||||
var color = (pixel.R + pixel.G + pixel.B) / 3;
|
||||
@@ -432,68 +513,16 @@ namespace Starlight.AnimeMatrix
|
||||
}
|
||||
|
||||
|
||||
public void SetLedDiagonal(int x, int y, byte color, int delta = 10)
|
||||
public void SetLedDiagonal(int x, int y, byte color, int deltaX = 0, int deltaY = 10)
|
||||
{
|
||||
//x+=delta;
|
||||
y -= delta;
|
||||
x += deltaX;
|
||||
y -= deltaY;
|
||||
|
||||
int dx = (x - y) / 2;
|
||||
int dy = x + y;
|
||||
SetLedPlanar(dx, dy, color);
|
||||
int plX = (x - y) / 2;
|
||||
int plY = x + y;
|
||||
SetLedPlanar(plX, plY, color);
|
||||
}
|
||||
|
||||
public void PresentTextDiagonal(string text)
|
||||
{
|
||||
|
||||
Clear();
|
||||
|
||||
|
||||
InstalledFontCollection installedFontCollection = new InstalledFontCollection();
|
||||
|
||||
|
||||
string familyName;
|
||||
string familyList = "";
|
||||
FontFamily[] fontFamilies;
|
||||
// Get the array of FontFamily objects.
|
||||
fontFamilies = installedFontCollection.Families;
|
||||
|
||||
int count = fontFamilies.Length;
|
||||
for (int j = 0; j < count; ++j)
|
||||
{
|
||||
familyName = fontFamilies[j].Name;
|
||||
familyList = familyList + familyName;
|
||||
familyList = familyList + ", ";
|
||||
}
|
||||
|
||||
int maxX = (int)Math.Sqrt(MaxRows * MaxRows + MaxColumns * MaxColumns);
|
||||
|
||||
using (Bitmap bmp = new Bitmap(maxX, MaxRows))
|
||||
{
|
||||
using (Graphics g = Graphics.FromImage(bmp))
|
||||
{
|
||||
g.CompositingQuality = CompositingQuality.HighQuality;
|
||||
g.SmoothingMode = SmoothingMode.AntiAlias;
|
||||
|
||||
using (Font font = new Font("Consolas", 13F, FontStyle.Regular, GraphicsUnit.Pixel))
|
||||
{
|
||||
SizeF textSize = g.MeasureString(text, font);
|
||||
g.DrawString(text, font, Brushes.White, 4, 1);
|
||||
}
|
||||
}
|
||||
|
||||
for (int y = 0; y < bmp.Height; y++)
|
||||
{
|
||||
for (int x = 0; x < bmp.Width; x++)
|
||||
{
|
||||
var pixel = bmp.GetPixel(x, y);
|
||||
var color = (pixel.R + pixel.G + pixel.B) / 3;
|
||||
SetLedDiagonal(x, y, (byte)color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Present();
|
||||
}
|
||||
|
||||
private bool IsRowInRange(int row)
|
||||
{
|
||||
|
||||
137
app/AppConfig.cs
137
app/AppConfig.cs
@@ -79,7 +79,6 @@ public static class AppConfig
|
||||
|
||||
public static bool ContainsModel(string contains)
|
||||
{
|
||||
|
||||
GetModel();
|
||||
return (_model is not null && _model.ToLower().Contains(contains.ToLower()));
|
||||
}
|
||||
@@ -96,8 +95,15 @@ public static class AppConfig
|
||||
public static int Get(string name, int empty = -1)
|
||||
{
|
||||
if (config.ContainsKey(name))
|
||||
{
|
||||
//Debug.WriteLine(name);
|
||||
return int.Parse(config[name].ToString());
|
||||
else return empty;
|
||||
}
|
||||
else
|
||||
{
|
||||
//Debug.WriteLine(name + "E");
|
||||
return empty;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool Is(string name)
|
||||
@@ -147,6 +153,11 @@ public static class AppConfig
|
||||
Write();
|
||||
}
|
||||
|
||||
public static void RemoveMode(string name)
|
||||
{
|
||||
Remove(name + "_" + Modes.GetCurrent());
|
||||
}
|
||||
|
||||
public static string GgetParamName(AsusFan device, string paramName = "fan_profile")
|
||||
{
|
||||
int mode = Modes.GetCurrent();
|
||||
@@ -253,4 +264,126 @@ 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");
|
||||
}
|
||||
|
||||
public static bool IsVivobook()
|
||||
{
|
||||
return ContainsModel("Vivobook");
|
||||
}
|
||||
|
||||
// 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 IsSingleColor()
|
||||
{
|
||||
return ContainsModel("GA401");
|
||||
}
|
||||
|
||||
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 IsX13()
|
||||
{
|
||||
return ContainsModel("X13");
|
||||
}
|
||||
|
||||
|
||||
public static bool IsAdvantageEdition()
|
||||
{
|
||||
return ContainsModel("13QY");
|
||||
}
|
||||
|
||||
public static bool NoAutoUltimate()
|
||||
{
|
||||
return ContainsModel("G614") || ContainsModel("GU604") || ContainsModel("FX507") || ContainsModel("G513");
|
||||
}
|
||||
|
||||
|
||||
public static bool IsManualModeRequired()
|
||||
{
|
||||
if (!IsMode("auto_apply_power"))
|
||||
return false;
|
||||
|
||||
return
|
||||
Is("manual_mode") ||
|
||||
ContainsModel("GU604") ||
|
||||
ContainsModel("G733") ||
|
||||
ContainsModel("FX507Z");
|
||||
}
|
||||
|
||||
public static bool IsFanRequired()
|
||||
{
|
||||
return ContainsModel("GA402X") || ContainsModel("G513") || ContainsModel("G713R");
|
||||
}
|
||||
|
||||
public static bool IsPowerRequired()
|
||||
{
|
||||
return ContainsModel("FX507") || ContainsModel("FX517") || ContainsModel("FX707");
|
||||
}
|
||||
|
||||
public static bool IsGPUFixNeeded()
|
||||
{
|
||||
return ContainsModel("GA402X") || ContainsModel("GV302") || ContainsModel("FX506") || ContainsModel("GU603V");
|
||||
}
|
||||
|
||||
public static bool IsGPUFix()
|
||||
{
|
||||
return Is("gpu_fix") || (ContainsModel("GA402X") && IsNotFalse("gpu_fix"));
|
||||
}
|
||||
|
||||
public static bool IsForceSetGPUMode()
|
||||
{
|
||||
return Is("gpu_mode_force_set") || ContainsModel("503");
|
||||
}
|
||||
|
||||
public static bool IsNoGPUModes()
|
||||
{
|
||||
return ContainsModel("GV301RA") || ContainsModel("GV302XA");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -55,17 +55,24 @@ public class AsusACPI
|
||||
public const uint GPU_Fan = 0x00110014;
|
||||
public const uint Mid_Fan = 0x00110031;
|
||||
|
||||
public const uint PerformanceMode = 0x00120075; // Thermal Control
|
||||
public const uint PerformanceMode = 0x00120075; // Performance modes
|
||||
public const uint VivoBookMode = 0x00110019; // Vivobook performance modes
|
||||
|
||||
public const uint GPUEco = 0x00090020;
|
||||
|
||||
public const uint GPUXGInit = 0x00090017;
|
||||
public const uint GPUXGConnected = 0x00090018;
|
||||
public const uint GPUXG = 0x00090019;
|
||||
|
||||
public const uint GPUMux = 0x00090016;
|
||||
|
||||
public const uint BatteryLimit = 0x00120057;
|
||||
public const uint ScreenOverdrive = 0x00050019;
|
||||
public const uint ScreenMiniled = 0x0005001E;
|
||||
|
||||
public const uint DevsCPUFan = 0x00110022;
|
||||
public const uint DevsGPUFan = 0x00110023;
|
||||
|
||||
public const uint DevsCPUFanCurve = 0x00110024;
|
||||
public const uint DevsGPUFanCurve = 0x00110025;
|
||||
public const uint DevsMidFanCurve = 0x00110032;
|
||||
@@ -87,8 +94,11 @@ public class AsusACPI
|
||||
|
||||
public const int TUF_KB_BRIGHTNESS = 0x00050021;
|
||||
public const int TUF_KB = 0x00100056;
|
||||
public const int TUF_KB2 = 0x0010005a;
|
||||
public const int TUF_KB_STATE = 0x00100057;
|
||||
|
||||
public const int MICMUTE_LED = 0x00040017;
|
||||
|
||||
public const int TabletState = 0x00060077;
|
||||
public const int FnLock = 0x00100023;
|
||||
|
||||
@@ -109,12 +119,13 @@ public class AsusACPI
|
||||
public const int GPUModeStandard = 1;
|
||||
public const int GPUModeUltimate = 2;
|
||||
|
||||
public static int MaxTotal => AppConfig.ContainsModel("13QY") ? 250 : 150;
|
||||
public const int MinTotal = 5;
|
||||
public const int DefaultTotal = 125;
|
||||
|
||||
public const int MaxCPU = 100;
|
||||
public static int MaxTotal = 150;
|
||||
public static int DefaultTotal = 125;
|
||||
|
||||
public const int MinCPU = 5;
|
||||
public const int MaxCPU = 100;
|
||||
public const int DefaultCPU = 80;
|
||||
|
||||
public const int MinGPUBoost = 5;
|
||||
@@ -212,6 +223,19 @@ public class AsusACPI
|
||||
throw new Exception("Can't connect to ACPI");
|
||||
}
|
||||
|
||||
if (AppConfig.IsAdvantageEdition()) MaxTotal = 250;
|
||||
if (AppConfig.IsX13())
|
||||
{
|
||||
MaxTotal = 75;
|
||||
DefaultTotal = 50;
|
||||
}
|
||||
|
||||
if (AppConfig.IsAlly())
|
||||
{
|
||||
MaxTotal = 50;
|
||||
DefaultTotal = 30;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void Control(uint dwIoControlCode, byte[] lpInBuffer, byte[] lpOutBuffer)
|
||||
@@ -239,7 +263,7 @@ public class AsusACPI
|
||||
protected byte[] CallMethod(uint MethodID, byte[] args)
|
||||
{
|
||||
byte[] acpiBuf = new byte[8 + args.Length];
|
||||
byte[] outBuffer = new byte[20];
|
||||
byte[] outBuffer = new byte[16];
|
||||
|
||||
BitConverter.GetBytes((uint)MethodID).CopyTo(acpiBuf, 0);
|
||||
BitConverter.GetBytes((uint)args.Length).CopyTo(acpiBuf, 4);
|
||||
@@ -321,6 +345,25 @@ public class AsusACPI
|
||||
return -1;
|
||||
}
|
||||
|
||||
public int SetFanRange(AsusFan device, byte[] curve)
|
||||
{
|
||||
byte min = (byte)(curve[8] * 255 / 100);
|
||||
byte max = (byte)(curve[15] * 255 / 100);
|
||||
byte[] range = { min, max};
|
||||
|
||||
int result;
|
||||
switch (device)
|
||||
{
|
||||
case AsusFan.GPU:
|
||||
result = DeviceSet(DevsGPUFan, range, "FanRangeGPU");
|
||||
break;
|
||||
default:
|
||||
result = DeviceSet(DevsCPUFan, range, "FanRangeCPU");
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public int SetFanCurve(AsusFan device, byte[] curve)
|
||||
{
|
||||
@@ -392,7 +435,14 @@ public class AsusACPI
|
||||
if (curve.Length != 16) throw new Exception("Incorrect curve");
|
||||
|
||||
var points = new Dictionary<byte, byte>();
|
||||
for (int i = 0; i < 8; i++) points[curve[i]] = curve[i + 8];
|
||||
byte old = 0;
|
||||
|
||||
for (int i = 0; i < 8; i++)
|
||||
{
|
||||
if (curve[i] == old) curve[i]++; // preventing 2 points in same spot from default asus profiles
|
||||
points[curve[i]] = curve[i + 8];
|
||||
old = curve[i];
|
||||
}
|
||||
|
||||
var pointsFixed = new Dictionary<byte, byte>();
|
||||
bool fix = false;
|
||||
@@ -462,16 +512,17 @@ public class AsusACPI
|
||||
public void TUFKeyboardRGB(int mode, Color color, int speed)
|
||||
{
|
||||
|
||||
byte[] setting = new byte[12];
|
||||
setting[0] = (byte)0xB4;
|
||||
byte[] setting = new byte[6];
|
||||
|
||||
setting[0] = (byte)0xb4;
|
||||
setting[1] = (byte)mode;
|
||||
setting[2] = color.R;
|
||||
setting[3] = color.G;
|
||||
setting[4] = color.B;
|
||||
setting[5] = (byte)speed;
|
||||
|
||||
DeviceSet(TUF_KB, setting, "TUF RGB");
|
||||
//Debug.WriteLine(BitConverter.ToString(setting));
|
||||
int result = DeviceSet(TUF_KB, setting, "TUF RGB");
|
||||
if (result != 1) DeviceSet(TUF_KB2, setting, "TUF RGB");
|
||||
|
||||
}
|
||||
|
||||
|
||||
558
app/AsusMouseSettings.Designer.cs
generated
558
app/AsusMouseSettings.Designer.cs
generated
@@ -33,13 +33,28 @@
|
||||
labelProfile = new Label();
|
||||
panelPerformance = new Panel();
|
||||
panelPerformanceOther = new Panel();
|
||||
comboBoxLiftOffDistance = new UI.RComboBox();
|
||||
panelDeceleration = new Panel();
|
||||
labelDeceleration = new Label();
|
||||
sliderDeceleration = new UI.Slider();
|
||||
labelDecelerationValue = new Label();
|
||||
panelAcceleration = new Panel();
|
||||
labelAcceleration = new Label();
|
||||
sliderAcceleration = new UI.Slider();
|
||||
labelAccelerationValue = new Label();
|
||||
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,6 +75,12 @@
|
||||
labelPerformance = new Label();
|
||||
panelLighting = new Panel();
|
||||
panelLightingContent = new Panel();
|
||||
tableLayoutLightingZones = new TableLayoutPanel();
|
||||
buttonLightingZoneScroll = new UI.RButton();
|
||||
buttonLightingZoneLogo = new UI.RButton();
|
||||
buttonLightingZoneAll = new UI.RButton();
|
||||
buttonLightingZoneUnderglow = new UI.RButton();
|
||||
buttonLightingZoneDock = new UI.RButton();
|
||||
comboBoxAnimationDirection = new UI.RComboBox();
|
||||
labelAnimationDirection = new Label();
|
||||
checkBoxRandomColor = new CheckBox();
|
||||
@@ -89,9 +110,18 @@
|
||||
pictureBoxBatteryState = new PictureBox();
|
||||
buttonSync = new UI.RButton();
|
||||
panelBottomButtons = new Panel();
|
||||
tableLayoutPanel2 = new TableLayoutPanel();
|
||||
rButton1 = new UI.RButton();
|
||||
rButton2 = new UI.RButton();
|
||||
panelProfiles.SuspendLayout();
|
||||
panelPerformance.SuspendLayout();
|
||||
panelPerformanceOther.SuspendLayout();
|
||||
panelDeceleration.SuspendLayout();
|
||||
panelAcceleration.SuspendLayout();
|
||||
panelLiftOffDistance.SuspendLayout();
|
||||
panelDebounce.SuspendLayout();
|
||||
panelAngleSnapping.SuspendLayout();
|
||||
panelPollingRate.SuspendLayout();
|
||||
panelDPISettings.SuspendLayout();
|
||||
tableLayoutPanel1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)numericUpDownCurrentDPI).BeginInit();
|
||||
@@ -102,6 +132,7 @@
|
||||
((System.ComponentModel.ISupportInitialize)pictureKeyboard).BeginInit();
|
||||
panelLighting.SuspendLayout();
|
||||
panelLightingContent.SuspendLayout();
|
||||
tableLayoutLightingZones.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoxLightingColor).BeginInit();
|
||||
panelLightingHeader.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoxLighting).BeginInit();
|
||||
@@ -112,6 +143,7 @@
|
||||
panelBatteryState.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoxBatteryState).BeginInit();
|
||||
panelBottomButtons.SuspendLayout();
|
||||
tableLayoutPanel2.SuspendLayout();
|
||||
SuspendLayout();
|
||||
//
|
||||
// panelProfiles
|
||||
@@ -160,27 +192,142 @@
|
||||
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, 555);
|
||||
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(panelDeceleration);
|
||||
panelPerformanceOther.Controls.Add(panelAcceleration);
|
||||
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, 290);
|
||||
panelPerformanceOther.TabIndex = 49;
|
||||
//
|
||||
// panelDeceleration
|
||||
//
|
||||
panelDeceleration.AutoSize = true;
|
||||
panelDeceleration.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelDeceleration.Controls.Add(labelDeceleration);
|
||||
panelDeceleration.Controls.Add(sliderDeceleration);
|
||||
panelDeceleration.Controls.Add(labelDecelerationValue);
|
||||
panelDeceleration.Dock = DockStyle.Top;
|
||||
panelDeceleration.Location = new Point(0, 232);
|
||||
panelDeceleration.Name = "panelDeceleration";
|
||||
panelDeceleration.Padding = new Padding(5);
|
||||
panelDeceleration.Size = new Size(654, 47);
|
||||
panelDeceleration.TabIndex = 58;
|
||||
//
|
||||
// labelDeceleration
|
||||
//
|
||||
labelDeceleration.Location = new Point(6, 7);
|
||||
labelDeceleration.Margin = new Padding(6, 0, 6, 0);
|
||||
labelDeceleration.Name = "labelDeceleration";
|
||||
labelDeceleration.Size = new Size(348, 33);
|
||||
labelDeceleration.TabIndex = 52;
|
||||
labelDeceleration.Text = "Deceleration";
|
||||
//
|
||||
// sliderDeceleration
|
||||
//
|
||||
sliderDeceleration.AccessibleName = "DPI Slider";
|
||||
sliderDeceleration.Location = new Point(368, 9);
|
||||
sliderDeceleration.Max = 9;
|
||||
sliderDeceleration.Min = 0;
|
||||
sliderDeceleration.Name = "sliderDeceleration";
|
||||
sliderDeceleration.Size = new Size(213, 30);
|
||||
sliderDeceleration.Step = 1;
|
||||
sliderDeceleration.TabIndex = 50;
|
||||
sliderDeceleration.TabStop = false;
|
||||
sliderDeceleration.Text = "sliderBattery";
|
||||
sliderDeceleration.Value = 0;
|
||||
//
|
||||
// labelDecelerationValue
|
||||
//
|
||||
labelDecelerationValue.Location = new Point(590, 9);
|
||||
labelDecelerationValue.Margin = new Padding(6, 0, 6, 0);
|
||||
labelDecelerationValue.Name = "labelDecelerationValue";
|
||||
labelDecelerationValue.Size = new Size(60, 30);
|
||||
labelDecelerationValue.TabIndex = 51;
|
||||
labelDecelerationValue.Text = "0";
|
||||
labelDecelerationValue.TextAlign = ContentAlignment.MiddleRight;
|
||||
//
|
||||
// panelAcceleration
|
||||
//
|
||||
panelAcceleration.AutoSize = true;
|
||||
panelAcceleration.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelAcceleration.Controls.Add(labelAcceleration);
|
||||
panelAcceleration.Controls.Add(sliderAcceleration);
|
||||
panelAcceleration.Controls.Add(labelAccelerationValue);
|
||||
panelAcceleration.Dock = DockStyle.Top;
|
||||
panelAcceleration.Location = new Point(0, 185);
|
||||
panelAcceleration.Name = "panelAcceleration";
|
||||
panelAcceleration.Padding = new Padding(5);
|
||||
panelAcceleration.Size = new Size(654, 47);
|
||||
panelAcceleration.TabIndex = 57;
|
||||
//
|
||||
// labelAcceleration
|
||||
//
|
||||
labelAcceleration.Location = new Point(6, 7);
|
||||
labelAcceleration.Margin = new Padding(6, 0, 6, 0);
|
||||
labelAcceleration.Name = "labelAcceleration";
|
||||
labelAcceleration.Size = new Size(348, 33);
|
||||
labelAcceleration.TabIndex = 52;
|
||||
labelAcceleration.Text = "Acceleration";
|
||||
//
|
||||
// sliderAcceleration
|
||||
//
|
||||
sliderAcceleration.AccessibleName = "DPI Slider";
|
||||
sliderAcceleration.Location = new Point(368, 9);
|
||||
sliderAcceleration.Max = 9;
|
||||
sliderAcceleration.Min = 0;
|
||||
sliderAcceleration.Name = "sliderAcceleration";
|
||||
sliderAcceleration.Size = new Size(213, 30);
|
||||
sliderAcceleration.Step = 1;
|
||||
sliderAcceleration.TabIndex = 50;
|
||||
sliderAcceleration.TabStop = false;
|
||||
sliderAcceleration.Text = "sliderBattery";
|
||||
sliderAcceleration.Value = 0;
|
||||
//
|
||||
// labelAccelerationValue
|
||||
//
|
||||
labelAccelerationValue.Location = new Point(590, 9);
|
||||
labelAccelerationValue.Margin = new Padding(6, 0, 6, 0);
|
||||
labelAccelerationValue.Name = "labelAccelerationValue";
|
||||
labelAccelerationValue.Size = new Size(60, 30);
|
||||
labelAccelerationValue.TabIndex = 51;
|
||||
labelAccelerationValue.Text = "0";
|
||||
labelAccelerationValue.TextAlign = ContentAlignment.MiddleRight;
|
||||
//
|
||||
// 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;
|
||||
@@ -188,35 +335,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";
|
||||
@@ -230,7 +419,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);
|
||||
@@ -239,6 +428,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;
|
||||
@@ -246,21 +467,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;
|
||||
@@ -550,15 +762,16 @@
|
||||
panelLighting.Controls.Add(panelLightingContent);
|
||||
panelLighting.Controls.Add(panelLightingHeader);
|
||||
panelLighting.Dock = DockStyle.Top;
|
||||
panelLighting.Location = new Point(11, 476);
|
||||
panelLighting.Location = new Point(11, 623);
|
||||
panelLighting.Name = "panelLighting";
|
||||
panelLighting.Padding = new Padding(0, 0, 0, 25);
|
||||
panelLighting.Size = new Size(654, 271);
|
||||
panelLighting.Size = new Size(654, 329);
|
||||
panelLighting.TabIndex = 42;
|
||||
//
|
||||
// panelLightingContent
|
||||
//
|
||||
panelLightingContent.AutoSize = true;
|
||||
panelLightingContent.Controls.Add(tableLayoutLightingZones);
|
||||
panelLightingContent.Controls.Add(comboBoxAnimationDirection);
|
||||
panelLightingContent.Controls.Add(labelAnimationDirection);
|
||||
panelLightingContent.Controls.Add(checkBoxRandomColor);
|
||||
@@ -572,9 +785,148 @@
|
||||
panelLightingContent.Location = new Point(0, 30);
|
||||
panelLightingContent.Name = "panelLightingContent";
|
||||
panelLightingContent.Padding = new Padding(0, 0, 0, 11);
|
||||
panelLightingContent.Size = new Size(654, 216);
|
||||
panelLightingContent.Size = new Size(654, 274);
|
||||
panelLightingContent.TabIndex = 42;
|
||||
//
|
||||
// tableLayoutLightingZones
|
||||
//
|
||||
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
|
||||
//
|
||||
buttonLightingZoneScroll.AccessibleName = "DPI Setting 4";
|
||||
buttonLightingZoneScroll.Activated = false;
|
||||
buttonLightingZoneScroll.AutoSize = true;
|
||||
buttonLightingZoneScroll.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
buttonLightingZoneScroll.BackColor = SystemColors.ControlLightLight;
|
||||
buttonLightingZoneScroll.BorderColor = Color.LightGreen;
|
||||
buttonLightingZoneScroll.BorderRadius = 5;
|
||||
buttonLightingZoneScroll.Dock = DockStyle.Fill;
|
||||
buttonLightingZoneScroll.FlatAppearance.BorderSize = 0;
|
||||
buttonLightingZoneScroll.FlatStyle = FlatStyle.Flat;
|
||||
buttonLightingZoneScroll.ForeColor = SystemColors.ControlText;
|
||||
buttonLightingZoneScroll.ImageAlign = ContentAlignment.BottomCenter;
|
||||
buttonLightingZoneScroll.Location = new Point(263, 3);
|
||||
buttonLightingZoneScroll.Name = "buttonLightingZoneScroll";
|
||||
buttonLightingZoneScroll.Secondary = false;
|
||||
buttonLightingZoneScroll.Size = new Size(124, 54);
|
||||
buttonLightingZoneScroll.TabIndex = 7;
|
||||
buttonLightingZoneScroll.Text = "Scrollwheel";
|
||||
buttonLightingZoneScroll.TextImageRelation = TextImageRelation.ImageAboveText;
|
||||
buttonLightingZoneScroll.UseVisualStyleBackColor = false;
|
||||
//
|
||||
// buttonLightingZoneLogo
|
||||
//
|
||||
buttonLightingZoneLogo.AccessibleName = "DPI Setting 2";
|
||||
buttonLightingZoneLogo.Activated = false;
|
||||
buttonLightingZoneLogo.AutoSize = true;
|
||||
buttonLightingZoneLogo.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
buttonLightingZoneLogo.BackColor = SystemColors.ControlLightLight;
|
||||
buttonLightingZoneLogo.BorderColor = Color.LightGreen;
|
||||
buttonLightingZoneLogo.BorderRadius = 5;
|
||||
buttonLightingZoneLogo.Dock = DockStyle.Fill;
|
||||
buttonLightingZoneLogo.FlatAppearance.BorderSize = 0;
|
||||
buttonLightingZoneLogo.FlatStyle = FlatStyle.Flat;
|
||||
buttonLightingZoneLogo.ForeColor = SystemColors.ControlText;
|
||||
buttonLightingZoneLogo.ImageAlign = ContentAlignment.BottomCenter;
|
||||
buttonLightingZoneLogo.Location = new Point(133, 3);
|
||||
buttonLightingZoneLogo.Name = "buttonLightingZoneLogo";
|
||||
buttonLightingZoneLogo.Secondary = false;
|
||||
buttonLightingZoneLogo.Size = new Size(124, 54);
|
||||
buttonLightingZoneLogo.TabIndex = 4;
|
||||
buttonLightingZoneLogo.Text = "Logo";
|
||||
buttonLightingZoneLogo.TextImageRelation = TextImageRelation.ImageAboveText;
|
||||
buttonLightingZoneLogo.UseVisualStyleBackColor = false;
|
||||
//
|
||||
// buttonLightingZoneAll
|
||||
//
|
||||
buttonLightingZoneAll.AccessibleName = "DPI Setting 1";
|
||||
buttonLightingZoneAll.Activated = false;
|
||||
buttonLightingZoneAll.AutoSize = true;
|
||||
buttonLightingZoneAll.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
buttonLightingZoneAll.BackColor = SystemColors.ControlLightLight;
|
||||
buttonLightingZoneAll.BorderColor = Color.LightGreen;
|
||||
buttonLightingZoneAll.BorderRadius = 5;
|
||||
buttonLightingZoneAll.CausesValidation = false;
|
||||
buttonLightingZoneAll.Dock = DockStyle.Fill;
|
||||
buttonLightingZoneAll.FlatAppearance.BorderSize = 0;
|
||||
buttonLightingZoneAll.FlatStyle = FlatStyle.Flat;
|
||||
buttonLightingZoneAll.ForeColor = SystemColors.ControlText;
|
||||
buttonLightingZoneAll.Location = new Point(3, 3);
|
||||
buttonLightingZoneAll.Name = "buttonLightingZoneAll";
|
||||
buttonLightingZoneAll.Secondary = false;
|
||||
buttonLightingZoneAll.Size = new Size(124, 54);
|
||||
buttonLightingZoneAll.TabIndex = 4;
|
||||
buttonLightingZoneAll.Text = "All";
|
||||
buttonLightingZoneAll.TextImageRelation = TextImageRelation.ImageAboveText;
|
||||
buttonLightingZoneAll.UseVisualStyleBackColor = false;
|
||||
//
|
||||
// buttonLightingZoneUnderglow
|
||||
//
|
||||
buttonLightingZoneUnderglow.AccessibleName = "DPI Setting 3";
|
||||
buttonLightingZoneUnderglow.Activated = false;
|
||||
buttonLightingZoneUnderglow.AutoSize = true;
|
||||
buttonLightingZoneUnderglow.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
buttonLightingZoneUnderglow.BackColor = SystemColors.ControlLightLight;
|
||||
buttonLightingZoneUnderglow.BorderColor = Color.LightGreen;
|
||||
buttonLightingZoneUnderglow.BorderRadius = 5;
|
||||
buttonLightingZoneUnderglow.Dock = DockStyle.Fill;
|
||||
buttonLightingZoneUnderglow.FlatAppearance.BorderSize = 0;
|
||||
buttonLightingZoneUnderglow.FlatStyle = FlatStyle.Flat;
|
||||
buttonLightingZoneUnderglow.ForeColor = SystemColors.ControlText;
|
||||
buttonLightingZoneUnderglow.ImageAlign = ContentAlignment.BottomCenter;
|
||||
buttonLightingZoneUnderglow.Location = new Point(393, 3);
|
||||
buttonLightingZoneUnderglow.Name = "buttonLightingZoneUnderglow";
|
||||
buttonLightingZoneUnderglow.Secondary = false;
|
||||
buttonLightingZoneUnderglow.Size = new Size(124, 54);
|
||||
buttonLightingZoneUnderglow.TabIndex = 5;
|
||||
buttonLightingZoneUnderglow.Text = "Underglow";
|
||||
buttonLightingZoneUnderglow.TextImageRelation = TextImageRelation.ImageAboveText;
|
||||
buttonLightingZoneUnderglow.UseVisualStyleBackColor = false;
|
||||
//
|
||||
// buttonLightingZoneDock
|
||||
//
|
||||
buttonLightingZoneDock.AccessibleName = "DPI Setting 4";
|
||||
buttonLightingZoneDock.Activated = false;
|
||||
buttonLightingZoneDock.AutoSize = true;
|
||||
buttonLightingZoneDock.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
buttonLightingZoneDock.BackColor = SystemColors.ControlLightLight;
|
||||
buttonLightingZoneDock.BorderColor = Color.LightGreen;
|
||||
buttonLightingZoneDock.BorderRadius = 5;
|
||||
buttonLightingZoneDock.Dock = DockStyle.Fill;
|
||||
buttonLightingZoneDock.FlatAppearance.BorderSize = 0;
|
||||
buttonLightingZoneDock.FlatStyle = FlatStyle.Flat;
|
||||
buttonLightingZoneDock.ForeColor = SystemColors.ControlText;
|
||||
buttonLightingZoneDock.ImageAlign = ContentAlignment.BottomCenter;
|
||||
buttonLightingZoneDock.Location = new Point(523, 3);
|
||||
buttonLightingZoneDock.Name = "buttonLightingZoneDock";
|
||||
buttonLightingZoneDock.Secondary = false;
|
||||
buttonLightingZoneDock.Size = new Size(128, 54);
|
||||
buttonLightingZoneDock.TabIndex = 6;
|
||||
buttonLightingZoneDock.Text = "Dock";
|
||||
buttonLightingZoneDock.TextImageRelation = TextImageRelation.ImageAboveText;
|
||||
buttonLightingZoneDock.UseVisualStyleBackColor = false;
|
||||
//
|
||||
// comboBoxAnimationDirection
|
||||
//
|
||||
comboBoxAnimationDirection.BorderColor = Color.White;
|
||||
@@ -582,7 +934,7 @@
|
||||
comboBoxAnimationDirection.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||
comboBoxAnimationDirection.FlatStyle = FlatStyle.Flat;
|
||||
comboBoxAnimationDirection.FormattingEnabled = true;
|
||||
comboBoxAnimationDirection.Location = new Point(366, 172);
|
||||
comboBoxAnimationDirection.Location = new Point(366, 230);
|
||||
comboBoxAnimationDirection.Margin = new Padding(16, 0, 16, 0);
|
||||
comboBoxAnimationDirection.Name = "comboBoxAnimationDirection";
|
||||
comboBoxAnimationDirection.Size = new Size(284, 33);
|
||||
@@ -590,7 +942,7 @@
|
||||
//
|
||||
// labelAnimationDirection
|
||||
//
|
||||
labelAnimationDirection.Location = new Point(6, 172);
|
||||
labelAnimationDirection.Location = new Point(6, 230);
|
||||
labelAnimationDirection.Margin = new Padding(6, 0, 6, 0);
|
||||
labelAnimationDirection.Name = "labelAnimationDirection";
|
||||
labelAnimationDirection.Size = new Size(316, 33);
|
||||
@@ -599,7 +951,7 @@
|
||||
//
|
||||
// checkBoxRandomColor
|
||||
//
|
||||
checkBoxRandomColor.Location = new Point(520, 53);
|
||||
checkBoxRandomColor.Location = new Point(520, 111);
|
||||
checkBoxRandomColor.Margin = new Padding(6, 0, 6, 0);
|
||||
checkBoxRandomColor.Name = "checkBoxRandomColor";
|
||||
checkBoxRandomColor.Size = new Size(128, 37);
|
||||
@@ -614,7 +966,7 @@
|
||||
comboBoxAnimationSpeed.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||
comboBoxAnimationSpeed.FlatStyle = FlatStyle.Flat;
|
||||
comboBoxAnimationSpeed.FormattingEnabled = true;
|
||||
comboBoxAnimationSpeed.Location = new Point(366, 130);
|
||||
comboBoxAnimationSpeed.Location = new Point(366, 188);
|
||||
comboBoxAnimationSpeed.Margin = new Padding(16, 0, 16, 0);
|
||||
comboBoxAnimationSpeed.Name = "comboBoxAnimationSpeed";
|
||||
comboBoxAnimationSpeed.Size = new Size(284, 33);
|
||||
@@ -622,7 +974,7 @@
|
||||
//
|
||||
// labelAnimationSpeed
|
||||
//
|
||||
labelAnimationSpeed.Location = new Point(6, 130);
|
||||
labelAnimationSpeed.Location = new Point(6, 188);
|
||||
labelAnimationSpeed.Margin = new Padding(6, 0, 6, 0);
|
||||
labelAnimationSpeed.Name = "labelAnimationSpeed";
|
||||
labelAnimationSpeed.Size = new Size(316, 33);
|
||||
@@ -632,7 +984,7 @@
|
||||
// pictureBoxLightingColor
|
||||
//
|
||||
pictureBoxLightingColor.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||
pictureBoxLightingColor.Location = new Point(480, 62);
|
||||
pictureBoxLightingColor.Location = new Point(480, 120);
|
||||
pictureBoxLightingColor.Margin = new Padding(6);
|
||||
pictureBoxLightingColor.Name = "pictureBoxLightingColor";
|
||||
pictureBoxLightingColor.Size = new Size(20, 20);
|
||||
@@ -649,7 +1001,7 @@
|
||||
buttonLightingColor.BorderRadius = 2;
|
||||
buttonLightingColor.FlatStyle = FlatStyle.Flat;
|
||||
buttonLightingColor.ForeColor = SystemColors.ControlText;
|
||||
buttonLightingColor.Location = new Point(373, 53);
|
||||
buttonLightingColor.Location = new Point(373, 111);
|
||||
buttonLightingColor.Margin = new Padding(3, 6, 3, 6);
|
||||
buttonLightingColor.Name = "buttonLightingColor";
|
||||
buttonLightingColor.Secondary = false;
|
||||
@@ -666,7 +1018,7 @@
|
||||
comboBoxLightingMode.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||
comboBoxLightingMode.FlatStyle = FlatStyle.Flat;
|
||||
comboBoxLightingMode.FormattingEnabled = true;
|
||||
comboBoxLightingMode.Location = new Point(367, 14);
|
||||
comboBoxLightingMode.Location = new Point(367, 72);
|
||||
comboBoxLightingMode.Margin = new Padding(16, 0, 16, 0);
|
||||
comboBoxLightingMode.Name = "comboBoxLightingMode";
|
||||
comboBoxLightingMode.Size = new Size(284, 33);
|
||||
@@ -674,7 +1026,7 @@
|
||||
//
|
||||
// labelLightingMode
|
||||
//
|
||||
labelLightingMode.Location = new Point(7, 14);
|
||||
labelLightingMode.Location = new Point(7, 72);
|
||||
labelLightingMode.Margin = new Padding(6, 0, 6, 0);
|
||||
labelLightingMode.Name = "labelLightingMode";
|
||||
labelLightingMode.Size = new Size(316, 33);
|
||||
@@ -739,7 +1091,7 @@
|
||||
panelEnergy.Controls.Add(labelAutoPowerOff);
|
||||
panelEnergy.Controls.Add(panelEnergyHeader);
|
||||
panelEnergy.Dock = DockStyle.Top;
|
||||
panelEnergy.Location = new Point(11, 747);
|
||||
panelEnergy.Location = new Point(11, 952);
|
||||
panelEnergy.Name = "panelEnergy";
|
||||
panelEnergy.Padding = new Padding(0, 0, 0, 25);
|
||||
panelEnergy.Size = new Size(654, 143);
|
||||
@@ -920,11 +1272,72 @@
|
||||
panelBottomButtons.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelBottomButtons.Controls.Add(buttonSync);
|
||||
panelBottomButtons.Dock = DockStyle.Top;
|
||||
panelBottomButtons.Location = new Point(11, 890);
|
||||
panelBottomButtons.Location = new Point(11, 1095);
|
||||
panelBottomButtons.Name = "panelBottomButtons";
|
||||
panelBottomButtons.Size = new Size(654, 67);
|
||||
panelBottomButtons.TabIndex = 47;
|
||||
//
|
||||
// tableLayoutPanel2
|
||||
//
|
||||
tableLayoutPanel2.AutoSize = true;
|
||||
tableLayoutPanel2.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
tableLayoutPanel2.ColumnCount = 4;
|
||||
tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
|
||||
tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
|
||||
tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
|
||||
tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
|
||||
tableLayoutPanel2.Controls.Add(rButton1, 0, 0);
|
||||
tableLayoutPanel2.Location = new Point(0, 0);
|
||||
tableLayoutPanel2.Name = "tableLayoutPanel2";
|
||||
tableLayoutPanel2.RowCount = 1;
|
||||
tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 20F));
|
||||
tableLayoutPanel2.Size = new Size(200, 100);
|
||||
tableLayoutPanel2.TabIndex = 0;
|
||||
//
|
||||
// rButton1
|
||||
//
|
||||
rButton1.AccessibleName = "DPI Setting 2";
|
||||
rButton1.Activated = false;
|
||||
rButton1.BackColor = SystemColors.ControlLightLight;
|
||||
rButton1.BorderColor = Color.Transparent;
|
||||
rButton1.BorderRadius = 5;
|
||||
rButton1.Dock = DockStyle.Top;
|
||||
rButton1.FlatAppearance.BorderSize = 0;
|
||||
rButton1.FlatStyle = FlatStyle.Flat;
|
||||
rButton1.ForeColor = SystemColors.ControlText;
|
||||
rButton1.Image = Properties.Resources.lighting_dot_32;
|
||||
rButton1.ImageAlign = ContentAlignment.BottomCenter;
|
||||
rButton1.Location = new Point(3, 3);
|
||||
rButton1.Name = "rButton1";
|
||||
rButton1.Secondary = false;
|
||||
rButton1.Size = new Size(44, 90);
|
||||
rButton1.TabIndex = 4;
|
||||
rButton1.Text = "DPI 2\r\n1000";
|
||||
rButton1.TextImageRelation = TextImageRelation.ImageAboveText;
|
||||
rButton1.UseVisualStyleBackColor = false;
|
||||
//
|
||||
// rButton2
|
||||
//
|
||||
rButton2.AccessibleName = "DPI Setting 1";
|
||||
rButton2.Activated = false;
|
||||
rButton2.BackColor = SystemColors.ControlLightLight;
|
||||
rButton2.BorderColor = Color.Transparent;
|
||||
rButton2.BorderRadius = 5;
|
||||
rButton2.CausesValidation = false;
|
||||
rButton2.Dock = DockStyle.Top;
|
||||
rButton2.FlatAppearance.BorderSize = 0;
|
||||
rButton2.FlatStyle = FlatStyle.Flat;
|
||||
rButton2.ForeColor = SystemColors.ControlText;
|
||||
rButton2.Image = Properties.Resources.lighting_dot_32;
|
||||
rButton2.Location = new Point(3, 3);
|
||||
rButton2.Name = "rButton2";
|
||||
rButton2.Secondary = false;
|
||||
rButton2.Size = new Size(44, 90);
|
||||
rButton2.TabIndex = 4;
|
||||
rButton2.Text = "DPI 1\r\n800";
|
||||
rButton2.TextImageRelation = TextImageRelation.ImageAboveText;
|
||||
rButton2.UseVisualStyleBackColor = false;
|
||||
//
|
||||
// AsusMouseSettings
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(144F, 144F);
|
||||
@@ -932,7 +1345,7 @@
|
||||
AutoScroll = true;
|
||||
AutoSize = true;
|
||||
AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
ClientSize = new Size(676, 1030);
|
||||
ClientSize = new Size(676, 1183);
|
||||
Controls.Add(panelBottomButtons);
|
||||
Controls.Add(panelEnergy);
|
||||
Controls.Add(panelLighting);
|
||||
@@ -952,6 +1365,13 @@
|
||||
panelPerformance.ResumeLayout(false);
|
||||
panelPerformance.PerformLayout();
|
||||
panelPerformanceOther.ResumeLayout(false);
|
||||
panelPerformanceOther.PerformLayout();
|
||||
panelDeceleration.ResumeLayout(false);
|
||||
panelAcceleration.ResumeLayout(false);
|
||||
panelLiftOffDistance.ResumeLayout(false);
|
||||
panelDebounce.ResumeLayout(false);
|
||||
panelAngleSnapping.ResumeLayout(false);
|
||||
panelPollingRate.ResumeLayout(false);
|
||||
panelDPISettings.ResumeLayout(false);
|
||||
panelDPISettings.PerformLayout();
|
||||
tableLayoutPanel1.ResumeLayout(false);
|
||||
@@ -966,6 +1386,9 @@
|
||||
panelLighting.ResumeLayout(false);
|
||||
panelLighting.PerformLayout();
|
||||
panelLightingContent.ResumeLayout(false);
|
||||
panelLightingContent.PerformLayout();
|
||||
tableLayoutLightingZones.ResumeLayout(false);
|
||||
tableLayoutLightingZones.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoxLightingColor).EndInit();
|
||||
panelLightingHeader.ResumeLayout(false);
|
||||
panelLightingHeader.PerformLayout();
|
||||
@@ -979,6 +1402,7 @@
|
||||
panelBatteryState.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoxBatteryState).EndInit();
|
||||
panelBottomButtons.ResumeLayout(false);
|
||||
tableLayoutPanel2.ResumeLayout(false);
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
||||
}
|
||||
@@ -1047,5 +1471,29 @@
|
||||
private UI.RButton buttonSync;
|
||||
private Panel panelBottomButtons;
|
||||
private NumericUpDown numericUpDownCurrentDPI;
|
||||
private TableLayoutPanel tableLayoutLightingZones;
|
||||
private UI.RButton buttonLightingZoneScroll;
|
||||
private UI.RButton buttonLightingZoneLogo;
|
||||
private UI.RButton buttonLightingZoneAll;
|
||||
private UI.RButton buttonLightingZoneUnderglow;
|
||||
private UI.RButton buttonLightingZoneDock;
|
||||
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;
|
||||
private Panel panelDeceleration;
|
||||
private Label labelDeceleration;
|
||||
private UI.Slider sliderDeceleration;
|
||||
private Label labelDecelerationValue;
|
||||
private Panel panelAcceleration;
|
||||
private Label labelAcceleration;
|
||||
private UI.Slider sliderAcceleration;
|
||||
private Label labelAccelerationValue;
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,7 @@ namespace GHelper
|
||||
|
||||
private readonly AsusMouse mouse;
|
||||
private readonly RButton[] dpiButtons;
|
||||
private LightingZone visibleZone = LightingZone.All;
|
||||
|
||||
private bool updateMouseDPI = true;
|
||||
|
||||
@@ -33,6 +34,7 @@ namespace GHelper
|
||||
|
||||
labelPollingRate.Text = Properties.Strings.PollingRate;
|
||||
labelLighting.Text = Properties.Strings.Lighting;
|
||||
labelLightingMode.Text = Properties.Strings.AuraLightingMode;
|
||||
labelEnergy.Text = Properties.Strings.EnergySettings;
|
||||
labelPerformance.Text = Properties.Strings.MousePerformance;
|
||||
checkBoxRandomColor.Text = Properties.Strings.AuraRandomColor;
|
||||
@@ -43,6 +45,15 @@ namespace GHelper
|
||||
labelLiftOffDistance.Text = Properties.Strings.MouseLiftOffDistance;
|
||||
labelChargingState.Text = "(" + Properties.Strings.Charging + ")";
|
||||
labelProfile.Text = Properties.Strings.Profile;
|
||||
labelButtonDebounce.Text = Properties.Strings.MouseButtonResponse;
|
||||
labelAcceleration.Text = Properties.Strings.Acceleration;
|
||||
labelDeceleration.Text = Properties.Strings.Deceleration;
|
||||
|
||||
buttonLightingZoneLogo.Text = Properties.Strings.AuraZoneLogo;
|
||||
buttonLightingZoneScroll.Text = Properties.Strings.AuraZoneScroll;
|
||||
buttonLightingZoneUnderglow.Text = Properties.Strings.AuraZoneUnderglow;
|
||||
buttonLightingZoneAll.Text = Properties.Strings.AuraZoneAll;
|
||||
buttonLightingZoneDock.Text = Properties.Strings.AuraZoneDock;
|
||||
|
||||
InitTheme();
|
||||
|
||||
@@ -51,8 +62,6 @@ namespace GHelper
|
||||
Shown += AsusMouseSettings_Shown;
|
||||
FormClosing += AsusMouseSettings_FormClosing;
|
||||
|
||||
mouse.Disconnect += Mouse_Disconnect;
|
||||
mouse.BatteryUpdated += Mouse_BatteryUpdated;
|
||||
comboProfile.DropDownClosed += ComboProfile_DropDownClosed;
|
||||
|
||||
sliderDPI.ValueChanged += SliderDPI_ValueChanged;
|
||||
@@ -70,6 +79,14 @@ namespace GHelper
|
||||
sliderAngleAdjustment.ValueChanged += SliderAngleAdjustment_ValueChanged;
|
||||
sliderAngleAdjustment.MouseUp += SliderAngleAdjustment_MouseUp;
|
||||
comboBoxLiftOffDistance.DropDownClosed += ComboBoxLiftOffDistance_DropDownClosed;
|
||||
sliderButtonDebounce.ValueChanged += SliderButtonDebounce_ValueChanged;
|
||||
sliderButtonDebounce.MouseUp += SliderButtonDebounce_MouseUp;
|
||||
|
||||
sliderAcceleration.MouseUp += SliderAcceleration_MouseUp;
|
||||
sliderAcceleration.ValueChanged += SliderAcceleration_ValueChanged;
|
||||
|
||||
sliderDeceleration.MouseUp += SliderDeceleration_MouseUp;
|
||||
sliderDeceleration.ValueChanged += SliderDeceleration_ValueChanged;
|
||||
|
||||
buttonLightingColor.Click += ButtonLightingColor_Click;
|
||||
comboBoxLightingMode.DropDownClosed += ComboBoxLightingMode_DropDownClosed;
|
||||
@@ -82,18 +99,116 @@ namespace GHelper
|
||||
sliderLowBatteryWarning.MouseUp += SliderLowBatteryWarning_MouseUp;
|
||||
comboBoxAutoPowerOff.DropDownClosed += ComboBoxAutoPowerOff_DropDownClosed;
|
||||
|
||||
|
||||
buttonLightingZoneAll.Click += ButtonLightingZoneAll_Click;
|
||||
buttonLightingZoneDock.Click += ButtonLightingZoneDock_Click;
|
||||
buttonLightingZoneLogo.Click += ButtonLightingZoneLogo_Click;
|
||||
buttonLightingZoneUnderglow.Click += ButtonLightingZoneUnderglow_Click;
|
||||
buttonLightingZoneScroll.Click += ButtonLightingZoneScroll_Click;
|
||||
|
||||
InitMouseCapabilities();
|
||||
Logger.WriteLine(mouse.GetDisplayName() + " (GUI): Initialized capabilities. Synchronizing mouse data");
|
||||
RefreshMouseData();
|
||||
}
|
||||
|
||||
private void SliderAcceleration_MouseUp(object? sender, MouseEventArgs e)
|
||||
{
|
||||
mouse.SetAcceleration(sliderAcceleration.Value);
|
||||
}
|
||||
|
||||
private void SliderAcceleration_ValueChanged(object? sender, EventArgs e)
|
||||
{
|
||||
labelAccelerationValue.Text = sliderAcceleration.Value.ToString();
|
||||
}
|
||||
|
||||
private void SliderDeceleration_MouseUp(object? sender, MouseEventArgs e)
|
||||
{
|
||||
mouse.SetDeceleration(sliderDeceleration.Value);
|
||||
}
|
||||
|
||||
private void SliderDeceleration_ValueChanged(object? sender, EventArgs e)
|
||||
{
|
||||
labelDecelerationValue.Text = sliderDeceleration.Value.ToString();
|
||||
}
|
||||
|
||||
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())
|
||||
{
|
||||
return;
|
||||
}
|
||||
visibleZone = zone;
|
||||
InitLightingModes();
|
||||
VisusalizeLightingSettings();
|
||||
}
|
||||
|
||||
private void ButtonLightingZoneScroll_Click(object? sender, EventArgs e)
|
||||
{
|
||||
SwitchLightingZone(LightingZone.Scrollwheel);
|
||||
}
|
||||
|
||||
private void ButtonLightingZoneUnderglow_Click(object? sender, EventArgs e)
|
||||
{
|
||||
SwitchLightingZone(LightingZone.Underglow);
|
||||
}
|
||||
|
||||
private void ButtonLightingZoneLogo_Click(object? sender, EventArgs e)
|
||||
{
|
||||
SwitchLightingZone(LightingZone.Logo);
|
||||
}
|
||||
|
||||
private void ButtonLightingZoneDock_Click(object? sender, EventArgs e)
|
||||
{
|
||||
SwitchLightingZone(LightingZone.Dock);
|
||||
}
|
||||
|
||||
private void ButtonLightingZoneAll_Click(object? sender, EventArgs e)
|
||||
{
|
||||
SwitchLightingZone(LightingZone.All);
|
||||
}
|
||||
|
||||
private void AsusMouseSettings_FormClosing(object? sender, FormClosingEventArgs e)
|
||||
{
|
||||
mouse.BatteryUpdated -= Mouse_BatteryUpdated;
|
||||
mouse.Disconnect -= Mouse_Disconnect;
|
||||
mouse.MouseReadyChanged -= Mouse_MouseReadyChanged;
|
||||
}
|
||||
|
||||
private void Mouse_MouseReadyChanged(object? sender, EventArgs e)
|
||||
{
|
||||
if (Disposing || IsDisposed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!mouse.IsDeviceReady)
|
||||
{
|
||||
this.Invoke(delegate
|
||||
{
|
||||
Close();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void Mouse_BatteryUpdated(object? sender, EventArgs e)
|
||||
{
|
||||
if (Disposing || IsDisposed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
this.Invoke(delegate
|
||||
{
|
||||
VisualizeBatteryState();
|
||||
@@ -103,6 +218,11 @@ namespace GHelper
|
||||
|
||||
private void ComboProfile_DropDownClosed(object? sender, EventArgs e)
|
||||
{
|
||||
if (mouse.Profile == comboProfile.SelectedIndex)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
mouse.SetProfile(comboProfile.SelectedIndex);
|
||||
RefreshMouseData();
|
||||
}
|
||||
@@ -156,51 +276,65 @@ namespace GHelper
|
||||
VisualizeCurrentDPIProfile();
|
||||
}
|
||||
|
||||
private void UpdateLightingSettings(LightingSetting settings, LightingZone zone)
|
||||
{
|
||||
mouse.SetLightingSetting(settings, visibleZone);
|
||||
VisusalizeLightingSettings();
|
||||
}
|
||||
|
||||
private void CheckBoxRandomColor_CheckedChanged(object? sender, EventArgs e)
|
||||
{
|
||||
LightingSetting? ls = mouse.LightingSetting;
|
||||
LightingSetting? ls = mouse.LightingSettingForZone(visibleZone);
|
||||
ls.RandomColor = checkBoxRandomColor.Checked;
|
||||
|
||||
mouse.SetLightingSetting(ls);
|
||||
VisusalizeLightingSettings();
|
||||
UpdateLightingSettings(ls, visibleZone);
|
||||
}
|
||||
|
||||
private void ComboBoxAnimationDirection_DropDownClosed(object? sender, EventArgs e)
|
||||
{
|
||||
LightingSetting? ls = mouse.LightingSetting;
|
||||
LightingSetting? ls = mouse.LightingSettingForZone(visibleZone);
|
||||
ls.AnimationDirection = (AnimationDirection)comboBoxAnimationDirection.SelectedIndex;
|
||||
|
||||
mouse.SetLightingSetting(ls);
|
||||
VisusalizeLightingSettings();
|
||||
UpdateLightingSettings(ls, visibleZone);
|
||||
}
|
||||
|
||||
private void ComboBoxAnimationSpeed_DropDownClosed(object? sender, EventArgs e)
|
||||
{
|
||||
LightingSetting? ls = mouse.LightingSetting;
|
||||
ls.AnimationSpeed = (AnimationSpeed)comboBoxAnimationSpeed.SelectedIndex;
|
||||
|
||||
mouse.SetLightingSetting(ls);
|
||||
VisusalizeLightingSettings();
|
||||
LightingSetting? ls = mouse.LightingSettingForZone(visibleZone);
|
||||
// 0 => 0x9
|
||||
// 1 => 0x7
|
||||
// 2 => 0x5
|
||||
ls.AnimationSpeed = (AnimationSpeed)(0x9 - (comboBoxAnimationSpeed.SelectedIndex * 0x2));
|
||||
UpdateLightingSettings(ls, visibleZone);
|
||||
}
|
||||
|
||||
private void SliderBrightness_MouseUp(object? sender, MouseEventArgs e)
|
||||
{
|
||||
LightingSetting? ls = mouse.LightingSetting;
|
||||
LightingSetting? ls = mouse.LightingSettingForZone(visibleZone);
|
||||
ls.Brightness = sliderBrightness.Value;
|
||||
|
||||
mouse.SetLightingSetting(ls);
|
||||
UpdateLightingSettings(ls, visibleZone);
|
||||
}
|
||||
|
||||
private void ComboBoxLightingMode_DropDownClosed(object? sender, EventArgs e)
|
||||
{
|
||||
if (!mouse.HasRGB())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
LightingMode lm = supportedLightingModes[comboBoxLightingMode.SelectedIndex];
|
||||
|
||||
LightingSetting? ls = mouse.LightingSetting;
|
||||
LightingSetting? ls = mouse.LightingSettingForZone(visibleZone);
|
||||
if (ls.LightingMode == lm)
|
||||
{
|
||||
//Nothing to do here.
|
||||
return;
|
||||
}
|
||||
|
||||
ls.LightingMode = lm;
|
||||
|
||||
mouse.SetLightingSetting(ls);
|
||||
VisusalizeLightingSettings();
|
||||
UpdateLightingSettings(ls, visibleZone);
|
||||
}
|
||||
|
||||
private void ButtonLightingColor_Click(object? sender, EventArgs e)
|
||||
@@ -213,11 +347,10 @@ namespace GHelper
|
||||
|
||||
if (colorDlg.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
LightingSetting? ls = mouse.LightingSetting;
|
||||
LightingSetting? ls = mouse.LightingSettingForZone(visibleZone);
|
||||
ls.RGBColor = colorDlg.Color;
|
||||
|
||||
mouse.SetLightingSetting(ls);
|
||||
VisusalizeLightingSettings();
|
||||
UpdateLightingSettings(ls, visibleZone);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -305,6 +438,10 @@ namespace GHelper
|
||||
|
||||
private void Mouse_Disconnect(object? sender, EventArgs e)
|
||||
{
|
||||
if (Disposing || IsDisposed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
//Mouse disconnected. Bye bye.
|
||||
this.Invoke(delegate
|
||||
{
|
||||
@@ -316,15 +453,19 @@ namespace GHelper
|
||||
private void RefreshMouseData()
|
||||
{
|
||||
mouse.SynchronizeDevice();
|
||||
|
||||
Logger.WriteLine(mouse.GetDisplayName() + " (GUI): Mouse data synchronized");
|
||||
if (!mouse.IsDeviceReady)
|
||||
{
|
||||
this.Invoke(delegate
|
||||
{
|
||||
this.Close();
|
||||
});
|
||||
Logger.WriteLine(mouse.GetDisplayName() + " (GUI): Mouse is not ready. Closing view.");
|
||||
Mouse_Disconnect(this, EventArgs.Empty);
|
||||
return;
|
||||
}
|
||||
|
||||
if (Disposing || IsDisposed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
VisualizeMouseSettings();
|
||||
VisualizeBatteryState();
|
||||
@@ -343,9 +484,16 @@ namespace GHelper
|
||||
|
||||
sliderDPI.Max = mouse.MaxDPI();
|
||||
sliderDPI.Min = mouse.MinDPI();
|
||||
sliderDPI.Step = mouse.DPIIncrements();
|
||||
|
||||
numericUpDownCurrentDPI.Minimum = mouse.MinDPI();
|
||||
numericUpDownCurrentDPI.Maximum = mouse.MaxDPI();
|
||||
numericUpDownCurrentDPI.Increment = mouse.DPIIncrements();
|
||||
|
||||
if (!mouse.HasDebounceSetting())
|
||||
{
|
||||
panelDebounce.Visible = false;
|
||||
}
|
||||
|
||||
|
||||
if (!mouse.HasDPIColors())
|
||||
@@ -358,9 +506,9 @@ namespace GHelper
|
||||
buttonDPI4.Image = ControlHelper.TintImage(Properties.Resources.lighting_dot_24, Color.Green);
|
||||
|
||||
buttonDPI1.BorderColor = Color.Red;
|
||||
buttonDPI1.BorderColor = Color.Purple;
|
||||
buttonDPI1.BorderColor = Color.Blue;
|
||||
buttonDPI1.BorderColor = Color.Green;
|
||||
buttonDPI2.BorderColor = Color.Purple;
|
||||
buttonDPI3.BorderColor = Color.Blue;
|
||||
buttonDPI4.BorderColor = Color.Green;
|
||||
}
|
||||
|
||||
if (mouse.CanSetPollingRate())
|
||||
@@ -373,8 +521,7 @@ namespace GHelper
|
||||
}
|
||||
else
|
||||
{
|
||||
comboBoxPollingRate.Visible = false;
|
||||
labelPollingRate.Visible = false;
|
||||
panelPollingRate.Visible = false;
|
||||
}
|
||||
|
||||
if (!mouse.HasAngleSnapping())
|
||||
@@ -386,6 +533,32 @@ 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.HasAcceleration())
|
||||
{
|
||||
sliderAcceleration.Max = mouse.MaxAcceleration();
|
||||
}
|
||||
else
|
||||
{
|
||||
panelAcceleration.Visible = false;
|
||||
}
|
||||
|
||||
if (mouse.HasDeceleration())
|
||||
{
|
||||
sliderDeceleration.Max = mouse.MaxDeceleration();
|
||||
}
|
||||
else
|
||||
{
|
||||
panelDeceleration.Visible = false;
|
||||
}
|
||||
|
||||
if (mouse.HasLiftOffSetting())
|
||||
@@ -397,8 +570,7 @@ namespace GHelper
|
||||
}
|
||||
else
|
||||
{
|
||||
comboBoxLiftOffDistance.Visible = false;
|
||||
labelLiftOffDistance.Visible = false;
|
||||
panelLiftOffDistance.Visible = false;
|
||||
}
|
||||
|
||||
if (mouse.DPIProfileCount() < 4)
|
||||
@@ -432,6 +604,12 @@ namespace GHelper
|
||||
labelLowBatteryWarningValue.Visible = false;
|
||||
sliderLowBatteryWarning.Visible = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
sliderLowBatteryWarning.Min = 0;
|
||||
sliderLowBatteryWarning.Step = mouse.LowBatteryWarningStep();
|
||||
sliderLowBatteryWarning.Max = mouse.LowBatteryWarningMax();
|
||||
}
|
||||
|
||||
if (!mouse.HasAutoPowerOff() && !mouse.HasLowBatteryWarning())
|
||||
{
|
||||
@@ -440,14 +618,24 @@ namespace GHelper
|
||||
|
||||
if (mouse.HasRGB())
|
||||
{
|
||||
foreach (LightingMode lm in Enum.GetValues(typeof(LightingMode)))
|
||||
if (mouse.SupportedLightingZones().Length > 1)
|
||||
{
|
||||
if (mouse.IsLightingModeSupported(lm))
|
||||
{
|
||||
comboBoxLightingMode.Items.Add(lightingModeNames.GetValueOrDefault(lm));
|
||||
supportedLightingModes.Add(lm);
|
||||
}
|
||||
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();
|
||||
|
||||
InitLightingModes();
|
||||
|
||||
comboBoxAnimationDirection.Items.AddRange(new string[] {
|
||||
Properties.Strings.AuraClockwise,
|
||||
@@ -466,11 +654,37 @@ namespace GHelper
|
||||
}
|
||||
}
|
||||
|
||||
private void InitLightingModes()
|
||||
{
|
||||
comboBoxLightingMode.Items.Clear();
|
||||
supportedLightingModes.Clear();
|
||||
foreach (LightingMode lm in Enum.GetValues(typeof(LightingMode)))
|
||||
{
|
||||
if (mouse.IsLightingModeSupported(lm) && mouse.IsLightingModeSupportedForZone(lm, visibleZone))
|
||||
{
|
||||
comboBoxLightingMode.Items.Add(lightingModeNames.GetValueOrDefault(lm));
|
||||
supportedLightingModes.Add(lm);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void VisualizeMouseSettings()
|
||||
{
|
||||
comboProfile.SelectedIndex = mouse.Profile;
|
||||
|
||||
if (mouse.HasRGB())
|
||||
{
|
||||
//If current lighting mode is zoned, pre-select the first zone and not "All".
|
||||
bool zoned = mouse.IsLightingZoned();
|
||||
if (zoned)
|
||||
{
|
||||
visibleZone = mouse.SupportedLightingZones()[0];
|
||||
InitLightingModes();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
VisualizeDPIButtons();
|
||||
VisualizeCurrentDPIProfile();
|
||||
VisusalizeLightingSettings();
|
||||
@@ -516,6 +730,21 @@ namespace GHelper
|
||||
{
|
||||
comboBoxLiftOffDistance.SelectedIndex = (int)mouse.LiftOffDistance;
|
||||
}
|
||||
|
||||
if (mouse.HasDebounceSetting())
|
||||
{
|
||||
sliderButtonDebounce.Value = (int)mouse.Debounce;
|
||||
}
|
||||
|
||||
if (mouse.HasAcceleration())
|
||||
{
|
||||
sliderAcceleration.Value = mouse.Acceleration;
|
||||
}
|
||||
|
||||
if (mouse.HasDeceleration())
|
||||
{
|
||||
sliderDeceleration.Value = mouse.Deceleration;
|
||||
}
|
||||
}
|
||||
|
||||
private void VisualizeBatteryState()
|
||||
@@ -538,6 +767,29 @@ namespace GHelper
|
||||
}
|
||||
}
|
||||
|
||||
public void VisusalizeLightingZones()
|
||||
{
|
||||
bool zoned = mouse.IsLightingZoned();
|
||||
|
||||
buttonLightingZoneAll.Activated = visibleZone == LightingZone.All;
|
||||
buttonLightingZoneLogo.Activated = visibleZone == LightingZone.Logo;
|
||||
buttonLightingZoneScroll.Activated = visibleZone == LightingZone.Scrollwheel;
|
||||
buttonLightingZoneUnderglow.Activated = visibleZone == LightingZone.Underglow;
|
||||
buttonLightingZoneDock.Activated = visibleZone == LightingZone.Dock;
|
||||
|
||||
buttonLightingZoneAll.Secondary = zoned;
|
||||
buttonLightingZoneLogo.Secondary = !zoned;
|
||||
buttonLightingZoneScroll.Secondary = !zoned;
|
||||
buttonLightingZoneUnderglow.Secondary = !zoned;
|
||||
buttonLightingZoneDock.Secondary = !zoned;
|
||||
|
||||
buttonLightingZoneAll.BackColor = buttonLightingZoneAll.Secondary ? RForm.buttonSecond : RForm.buttonMain;
|
||||
buttonLightingZoneLogo.BackColor = buttonLightingZoneLogo.Secondary ? RForm.buttonSecond : RForm.buttonMain;
|
||||
buttonLightingZoneScroll.BackColor = buttonLightingZoneScroll.Secondary ? RForm.buttonSecond : RForm.buttonMain;
|
||||
buttonLightingZoneUnderglow.BackColor = buttonLightingZoneUnderglow.Secondary ? RForm.buttonSecond : RForm.buttonMain;
|
||||
buttonLightingZoneDock.BackColor = buttonLightingZoneDock.Secondary ? RForm.buttonSecond : RForm.buttonMain;
|
||||
}
|
||||
|
||||
private void VisusalizeLightingSettings()
|
||||
{
|
||||
if (!mouse.HasRGB())
|
||||
@@ -545,7 +797,9 @@ namespace GHelper
|
||||
return;
|
||||
}
|
||||
|
||||
LightingSetting? ls = mouse.LightingSetting;
|
||||
VisusalizeLightingZones();
|
||||
|
||||
LightingSetting? ls = mouse.LightingSettingForZone(visibleZone);
|
||||
|
||||
if (ls is null)
|
||||
{
|
||||
@@ -578,31 +832,41 @@ namespace GHelper
|
||||
else
|
||||
pictureBoxLightingColor.BackColor = ls.RGBColor;
|
||||
|
||||
|
||||
comboBoxAnimationSpeed.SelectedIndex = (((int)ls.AnimationSpeed) - 5) / 2;
|
||||
//0x09 => 0
|
||||
//0x07 => 1
|
||||
//0x05 => 2
|
||||
comboBoxAnimationSpeed.SelectedIndex = 2 - ((((int)ls.AnimationSpeed) - 5) / 2);
|
||||
comboBoxAnimationDirection.SelectedIndex = (int)ls.AnimationDirection;
|
||||
}
|
||||
|
||||
|
||||
private void VisualizeDPIButtons()
|
||||
{
|
||||
if (mouse.HasDPIColors())
|
||||
for (int i = 0; i < mouse.DPIProfileCount() && i < 4; ++i)
|
||||
{
|
||||
for (int i = 0; i < mouse.DPIProfileCount() && i < 4; ++i)
|
||||
AsusMouseDPI dpi = mouse.DpiSettings[i];
|
||||
if (dpi is null)
|
||||
{
|
||||
AsusMouseDPI dpi = mouse.DpiSettings[i];
|
||||
dpiButtons[i].Image = ControlHelper.TintImage(Properties.Resources.lighting_dot_24, dpi.Color);
|
||||
dpiButtons[i].Activated = (mouse.DpiProfile - 1) == i;
|
||||
dpiButtons[i].BorderColor = dpi.Color;
|
||||
dpiButtons[i].Text = "DPI " + (i + 1) + "\n" + dpi.DPI;
|
||||
continue;
|
||||
}
|
||||
if (mouse.HasDPIColors())
|
||||
{
|
||||
dpiButtons[i].Image = ControlHelper.TintImage(Properties.Resources.lighting_dot_24, dpi.Color);
|
||||
dpiButtons[i].BorderColor = dpi.Color;
|
||||
}
|
||||
dpiButtons[i].Activated = (mouse.DpiProfile - 1) == i;
|
||||
dpiButtons[i].Text = "DPI " + (i + 1) + "\n" + dpi.DPI;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void VisualizeCurrentDPIProfile()
|
||||
{
|
||||
AsusMouseDPI dpi = mouse.DpiSettings[mouse.DpiProfile - 1];
|
||||
if (dpi is null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
sliderDPI.Value = (int)dpi.DPI;
|
||||
pictureDPIColor.BackColor = dpi.Color;
|
||||
}
|
||||
@@ -620,6 +884,11 @@ namespace GHelper
|
||||
}
|
||||
|
||||
Left = Program.settingsForm.Left - Width - 5;
|
||||
|
||||
|
||||
mouse.Disconnect += Mouse_Disconnect;
|
||||
mouse.BatteryUpdated += Mouse_BatteryUpdated;
|
||||
mouse.MouseReadyChanged += Mouse_MouseReadyChanged;
|
||||
}
|
||||
|
||||
private void ButtonSync_Click(object sender, EventArgs e)
|
||||
|
||||
509
app/AsusUSB.cs
509
app/AsusUSB.cs
@@ -1,57 +1,47 @@
|
||||
using GHelper.Helpers;
|
||||
using GHelper.Gpu;
|
||||
using GHelper.Helpers;
|
||||
using HidLibrary;
|
||||
using NAudio.Gui;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
|
||||
namespace GHelper
|
||||
{
|
||||
|
||||
[Flags]
|
||||
public enum AuraDev19b6 : uint
|
||||
|
||||
public class AuraPower
|
||||
{
|
||||
BootLogo = 1,
|
||||
BootKeyb = 1 << 1,
|
||||
AwakeLogo = 1 << 2,
|
||||
AwakeKeyb = 1 << 3,
|
||||
SleepLogo = 1 << 4,
|
||||
SleepKeyb = 1 << 5,
|
||||
ShutdownLogo = 1 << 6,
|
||||
ShutdownKeyb = 1 << 7,
|
||||
public bool BootLogo;
|
||||
public bool BootKeyb;
|
||||
public bool AwakeLogo;
|
||||
public bool AwakeKeyb;
|
||||
public bool SleepLogo;
|
||||
public bool SleepKeyb;
|
||||
public bool ShutdownLogo;
|
||||
public bool ShutdownKeyb;
|
||||
|
||||
BootBar = 1 << (7 + 2),
|
||||
AwakeBar = 1 << (7 + 3),
|
||||
SleepBar = 1 << (7 + 4),
|
||||
ShutdownBar = 1 << (7 + 5),
|
||||
public bool BootBar;
|
||||
public bool AwakeBar;
|
||||
public bool SleepBar;
|
||||
public bool ShutdownBar;
|
||||
|
||||
BootLid = 1 << (15 + 1),
|
||||
AwakeLid = 1 << (15 + 2),
|
||||
SleepLid = 1 << (15 + 3),
|
||||
ShutdownLid = 1 << (15 + 4),
|
||||
|
||||
BootRear = 1 << (23 + 1),
|
||||
AwakeRear = 1 << (23 + 2),
|
||||
SleepRear = 1 << (23 + 3),
|
||||
ShutdownRear = 1 << (23 + 4),
|
||||
|
||||
}
|
||||
|
||||
public static class AuraDev19b6Extensions
|
||||
{
|
||||
public static byte[] ToBytes(this AuraDev19b6[] controls)
|
||||
{
|
||||
uint a = 0;
|
||||
foreach (var n in controls)
|
||||
{
|
||||
a |= (uint)n;
|
||||
}
|
||||
return new byte[] { 0x5d, 0xbd, 0x01, (byte)(a & 0xff), (byte)((a & 0xff00) >> 8), (byte)((a & 0xff0000) >> 16), (byte)((a & 0xff000000) >> 24) };
|
||||
}
|
||||
public bool BootLid;
|
||||
public bool AwakeLid;
|
||||
public bool SleepLid;
|
||||
public bool ShutdownLid;
|
||||
|
||||
public bool BootRear;
|
||||
public bool AwakeRear;
|
||||
public bool SleepRear;
|
||||
public bool ShutdownRear;
|
||||
}
|
||||
|
||||
|
||||
public static class AsusUSB
|
||||
{
|
||||
public const int HEATMAP = 20;
|
||||
public const int GPUMODE = 21;
|
||||
|
||||
public const int ASUS_ID = 0x0b05;
|
||||
|
||||
@@ -60,12 +50,12 @@ 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_SET = { AURA_HID_ID, 0xb5, 0, 0, 0 };
|
||||
static byte[] MESSAGE_APPLY = { AURA_HID_ID, 0xb4 };
|
||||
static byte[] MESSAGE_SET = { AURA_HID_ID, 0xb5, 0, 0, 0 };
|
||||
|
||||
static int[] deviceIds = { 0x1a30, 0x1854, 0x1869, 0x1866, 0x19b6, 0x1822, 0x1837, 0x1854, 0x184a, 0x183d, 0x8502, 0x1807, 0x17e0, 0x18c6, 0x1abe };
|
||||
|
||||
@@ -74,16 +64,75 @@ namespace GHelper
|
||||
public static Color Color1 = Color.White;
|
||||
public static Color Color2 = Color.Black;
|
||||
|
||||
static bool isTuf = AppConfig.IsTUF() || AppConfig.IsVivobook();
|
||||
static bool isStrix = AppConfig.IsStrix();
|
||||
|
||||
static System.Timers.Timer timer = new System.Timers.Timer(1000);
|
||||
static public bool isSingleColor = false;
|
||||
|
||||
static bool isOldHeatmap = AppConfig.Is("old_heatmap");
|
||||
|
||||
|
||||
static System.Timers.Timer timer = new System.Timers.Timer(2000);
|
||||
static HidDevice? auraDevice = null;
|
||||
|
||||
|
||||
static byte[] AuraPowerMessage(AuraPower flags)
|
||||
{
|
||||
byte keyb = 0, bar = 0, lid = 0, rear = 0;
|
||||
|
||||
if (flags.BootLogo) keyb |= 1 << 0;
|
||||
if (flags.BootKeyb) keyb |= 1 << 1;
|
||||
if (flags.AwakeLogo) keyb |= 1 << 2;
|
||||
if (flags.AwakeKeyb) keyb |= 1 << 3;
|
||||
if (flags.SleepLogo) keyb |= 1 << 4;
|
||||
if (flags.SleepKeyb) keyb |= 1 << 5;
|
||||
if (flags.ShutdownLogo) keyb |= 1 << 6;
|
||||
if (flags.ShutdownKeyb) keyb |= 1 << 7;
|
||||
|
||||
if (flags.BootBar) bar |= 1 << 1;
|
||||
if (flags.AwakeBar) bar |= 1 << 2;
|
||||
if (flags.SleepBar) bar |= 1 << 3;
|
||||
if (flags.ShutdownBar) bar |= 1 << 4;
|
||||
|
||||
if (flags.BootLid) lid |= 1 << 0;
|
||||
if (flags.AwakeLid) lid |= 1 << 1;
|
||||
if (flags.SleepLid) lid |= 1 << 2;
|
||||
if (flags.ShutdownLid) lid |= 1 << 3;
|
||||
|
||||
if (flags.BootLid) lid |= 1 << 4;
|
||||
if (flags.AwakeLid) lid |= 1 << 5;
|
||||
if (flags.SleepLid) lid |= 1 << 6;
|
||||
if (flags.ShutdownLid) lid |= 1 << 7;
|
||||
|
||||
if (flags.BootRear) rear |= 1 << 0;
|
||||
if (flags.AwakeRear) rear |= 1 << 1;
|
||||
if (flags.SleepRear) rear |= 1 << 2;
|
||||
if (flags.ShutdownRear) rear |= 1 << 3;
|
||||
|
||||
if (flags.BootRear) rear |= 1 << 4;
|
||||
if (flags.AwakeRear) rear |= 1 << 5;
|
||||
if (flags.SleepRear) rear |= 1 << 6;
|
||||
if (flags.ShutdownRear) rear |= 1 << 7;
|
||||
|
||||
return new byte[] { 0x5d, 0xbd, 0x01, keyb, bar, lid, rear, 0xFF };
|
||||
}
|
||||
|
||||
static AsusUSB()
|
||||
{
|
||||
timer.Elapsed += Timer_Elapsed;
|
||||
|
||||
isSingleColor = AppConfig.ContainsModel("GA401") || AppConfig.ContainsModel("X13"); // Mono Color
|
||||
|
||||
var device = GetDevice(AURA_HID_ID);
|
||||
if (device is not null && (device.Attributes.Version == 22 || device.Attributes.Version == 23) && (AppConfig.ContainsModel("GA402X") || AppConfig.ContainsModel("GA402N"))) isSingleColor = true;
|
||||
}
|
||||
|
||||
private static void Timer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
|
||||
{
|
||||
SetHeatmap();
|
||||
}
|
||||
|
||||
static void SetHeatmap(bool init = false)
|
||||
{
|
||||
float cpuTemp = (float)HardwareControl.GetCPUTemp();
|
||||
int freeze = 20, cold = 40, warm = 65, hot = 90;
|
||||
@@ -96,7 +145,7 @@ namespace GHelper
|
||||
else if (cpuTemp < hot) color = ColorUtilities.GetWeightedAverage(Color.Yellow, Color.Red, ((float)cpuTemp - warm) / (hot - warm));
|
||||
else color = Color.Red;
|
||||
|
||||
ApplyColor(color);
|
||||
ApplyColor(color, init);
|
||||
}
|
||||
|
||||
public static Dictionary<int, string> GetSpeeds()
|
||||
@@ -109,54 +158,60 @@ namespace GHelper
|
||||
};
|
||||
}
|
||||
|
||||
static Dictionary<int, string> _modesSingleColor = new Dictionary<int, string>
|
||||
{
|
||||
{ 0, Properties.Strings.AuraStatic },
|
||||
{ 1, Properties.Strings.AuraBreathe },
|
||||
{ 10, Properties.Strings.AuraStrobe },
|
||||
};
|
||||
|
||||
static Dictionary<int, string> _modes = new Dictionary<int, string>
|
||||
{
|
||||
{ 0, Properties.Strings.AuraStatic },
|
||||
{ 1, Properties.Strings.AuraBreathe },
|
||||
{ 2, Properties.Strings.AuraColorCycle },
|
||||
{ 3, Properties.Strings.AuraRainbow },
|
||||
{ 10, Properties.Strings.AuraStrobe },
|
||||
{ HEATMAP, "Heatmap"}
|
||||
};
|
||||
{
|
||||
{ 0, Properties.Strings.AuraStatic },
|
||||
{ 1, Properties.Strings.AuraBreathe },
|
||||
{ 2, Properties.Strings.AuraColorCycle },
|
||||
{ 3, Properties.Strings.AuraRainbow },
|
||||
{ 10, Properties.Strings.AuraStrobe },
|
||||
{ HEATMAP, "Heatmap"},
|
||||
{ GPUMODE, "GPU Mode" }
|
||||
};
|
||||
|
||||
static Dictionary<int, string> _modesStrix = new Dictionary<int, string>
|
||||
{
|
||||
{ 0, Properties.Strings.AuraStatic },
|
||||
{ 1, Properties.Strings.AuraBreathe },
|
||||
{ 2, Properties.Strings.AuraColorCycle },
|
||||
{ 3, Properties.Strings.AuraRainbow },
|
||||
{ 4, "Star" },
|
||||
{ 5, "Rain" },
|
||||
{ 6, "Highlight" },
|
||||
{ 7, "Laser" },
|
||||
{ 8, "Ripple" },
|
||||
{ 10, Properties.Strings.AuraStrobe},
|
||||
{ 11, "Comet" },
|
||||
{ 12, "Flash" },
|
||||
{ HEATMAP, "Heatmap"}
|
||||
};
|
||||
{
|
||||
{ 0, Properties.Strings.AuraStatic },
|
||||
{ 1, Properties.Strings.AuraBreathe },
|
||||
{ 2, Properties.Strings.AuraColorCycle },
|
||||
{ 3, Properties.Strings.AuraRainbow },
|
||||
{ 4, "Star" },
|
||||
{ 5, "Rain" },
|
||||
{ 6, "Highlight" },
|
||||
{ 7, "Laser" },
|
||||
{ 8, "Ripple" },
|
||||
{ 10, Properties.Strings.AuraStrobe},
|
||||
{ 11, "Comet" },
|
||||
{ 12, "Flash" },
|
||||
{ HEATMAP, "Heatmap"}
|
||||
};
|
||||
|
||||
|
||||
public static Dictionary<int, string> GetModes()
|
||||
{
|
||||
if (AppConfig.ContainsModel("TUF"))
|
||||
if (isTuf)
|
||||
{
|
||||
_modes.Remove(3);
|
||||
}
|
||||
|
||||
if (AppConfig.ContainsModel("401") || AppConfig.ContainsModel("X13"))
|
||||
if (isSingleColor)
|
||||
{
|
||||
_modes.Remove(2);
|
||||
_modes.Remove(3);
|
||||
return _modesSingleColor;
|
||||
}
|
||||
|
||||
if (AppConfig.ContainsModel("G513QY"))
|
||||
if (AppConfig.IsAdvantageEdition())
|
||||
{
|
||||
return _modes;
|
||||
}
|
||||
|
||||
if (AppConfig.ContainsModel("Strix") || AppConfig.ContainsModel("Scar"))
|
||||
if (AppConfig.IsStrix())
|
||||
{
|
||||
return _modesStrix;
|
||||
}
|
||||
@@ -177,14 +232,10 @@ namespace GHelper
|
||||
}
|
||||
}
|
||||
|
||||
public static bool HasColor()
|
||||
{
|
||||
return AppConfig.ContainsModel("GA401") || AppConfig.ContainsModel("X13");
|
||||
}
|
||||
|
||||
public static bool HasSecondColor()
|
||||
{
|
||||
return (mode == 1 && !AppConfig.ContainsModel("TUF"));
|
||||
return (mode == 1 && !isTuf);
|
||||
}
|
||||
|
||||
public static int Speed
|
||||
@@ -243,7 +294,7 @@ namespace GHelper
|
||||
}
|
||||
|
||||
|
||||
public static byte[] AuraMessage(int mode, Color color, Color color2, int speed)
|
||||
public static byte[] AuraMessage(int mode, Color color, Color color2, int speed, bool mono = false)
|
||||
{
|
||||
|
||||
byte[] msg = new byte[17];
|
||||
@@ -251,14 +302,15 @@ namespace GHelper
|
||||
msg[1] = 0xb3;
|
||||
msg[2] = 0x00; // Zone
|
||||
msg[3] = (byte)mode; // Aura Mode
|
||||
msg[4] = (byte)(color.R); // R
|
||||
msg[5] = (byte)(color.G); // G
|
||||
msg[6] = (byte)(color.B); // B
|
||||
msg[4] = color.R; // R
|
||||
msg[5] = mono ? (byte)0 : color.G; // G
|
||||
msg[6] = mono ? (byte)0 : color.B; // B
|
||||
msg[7] = (byte)speed; // aura.speed as u8;
|
||||
msg[8] = 0; // aura.direction as u8;
|
||||
msg[10] = (byte)(color2.R); // R
|
||||
msg[11] = (byte)(color2.G); // G
|
||||
msg[12] = (byte)(color2.B); // B
|
||||
msg[9] = (mode == 1) ? (byte)1 : (byte)0;
|
||||
msg[10] = color2.R; // R
|
||||
msg[11] = mono ? (byte)0 : color2.G; // G
|
||||
msg[12] = mono ? (byte)0 : color2.B; // B
|
||||
return msg;
|
||||
}
|
||||
|
||||
@@ -288,8 +340,7 @@ namespace GHelper
|
||||
Task.Run(async () =>
|
||||
{
|
||||
|
||||
if (AppConfig.ContainsModel("TUF"))
|
||||
Program.acpi.TUFKeyboardBrightness(brightness);
|
||||
if (isTuf) Program.acpi.TUFKeyboardBrightness(brightness);
|
||||
|
||||
byte[] msg = { AURA_HID_ID, 0xba, 0xc5, 0xc4, (byte)brightness };
|
||||
byte[] msgBackup = { INPUT_HID_ID, 0xba, 0xc5, 0xc4, (byte)brightness };
|
||||
@@ -339,64 +390,58 @@ namespace GHelper
|
||||
public static void ApplyAuraPower()
|
||||
{
|
||||
|
||||
Task.Run(async () =>
|
||||
AuraPower flags = new();
|
||||
|
||||
// Keyboard
|
||||
flags.AwakeKeyb = AppConfig.IsNotFalse("keyboard_awake");
|
||||
flags.BootKeyb = AppConfig.IsNotFalse("keyboard_boot");
|
||||
flags.SleepKeyb = AppConfig.IsNotFalse("keyboard_sleep");
|
||||
flags.ShutdownKeyb = AppConfig.IsNotFalse("keyboard_shutdown");
|
||||
|
||||
// Logo
|
||||
flags.AwakeLogo = AppConfig.IsNotFalse("keyboard_awake_logo");
|
||||
flags.BootLogo = AppConfig.IsNotFalse("keyboard_boot_logo");
|
||||
flags.SleepLogo = AppConfig.IsNotFalse("keyboard_sleep_logo");
|
||||
flags.ShutdownLogo = AppConfig.IsNotFalse("keyboard_shutdown_logo");
|
||||
|
||||
// Lightbar
|
||||
flags.AwakeBar = AppConfig.IsNotFalse("keyboard_awake_bar");
|
||||
flags.BootBar = AppConfig.IsNotFalse("keyboard_boot_bar");
|
||||
flags.SleepBar = AppConfig.IsNotFalse("keyboard_sleep_bar");
|
||||
flags.ShutdownBar = AppConfig.IsNotFalse("keyboard_shutdown_bar");
|
||||
|
||||
// Lid
|
||||
flags.AwakeLid = AppConfig.IsNotFalse("keyboard_awake_lid");
|
||||
flags.BootLid = AppConfig.IsNotFalse("keyboard_boot_lid");
|
||||
flags.SleepLid = AppConfig.IsNotFalse("keyboard_sleep_lid");
|
||||
flags.ShutdownLid = AppConfig.IsNotFalse("keyboard_shutdown_lid");
|
||||
|
||||
// Rear Bar
|
||||
flags.AwakeRear = AppConfig.IsNotFalse("keyboard_awake_lid");
|
||||
flags.BootRear = AppConfig.IsNotFalse("keyboard_boot_lid");
|
||||
flags.SleepRear = AppConfig.IsNotFalse("keyboard_sleep_lid");
|
||||
flags.ShutdownRear = AppConfig.IsNotFalse("keyboard_shutdown_lid");
|
||||
|
||||
var devices = GetHidDevices(deviceIds);
|
||||
byte[] msg = AuraPowerMessage(flags);
|
||||
|
||||
foreach (HidDevice device in devices)
|
||||
{
|
||||
|
||||
List<AuraDev19b6> flags = new();
|
||||
|
||||
// Keyboard
|
||||
if (AppConfig.IsNotFalse("keyboard_awake")) flags.Add(AuraDev19b6.AwakeKeyb);
|
||||
if (AppConfig.IsNotFalse("keyboard_boot")) flags.Add(AuraDev19b6.BootKeyb);
|
||||
if (AppConfig.IsNotFalse("keyboard_sleep")) flags.Add(AuraDev19b6.SleepKeyb);
|
||||
if (AppConfig.IsNotFalse("keyboard_shutdown")) flags.Add(AuraDev19b6.ShutdownKeyb);
|
||||
|
||||
// Logo
|
||||
if (AppConfig.IsNotFalse("keyboard_awake_logo")) flags.Add(AuraDev19b6.AwakeLogo);
|
||||
if (AppConfig.IsNotFalse("keyboard_boot_logo")) flags.Add(AuraDev19b6.BootLogo);
|
||||
if (AppConfig.IsNotFalse("keyboard_sleep_logo")) flags.Add(AuraDev19b6.SleepLogo);
|
||||
if (AppConfig.IsNotFalse("keyboard_shutdown_logo")) flags.Add(AuraDev19b6.ShutdownLogo);
|
||||
|
||||
// Lightbar
|
||||
if (AppConfig.IsNotFalse("keyboard_awake_bar")) flags.Add(AuraDev19b6.AwakeBar);
|
||||
if (AppConfig.IsNotFalse("keyboard_boot_bar")) flags.Add(AuraDev19b6.BootBar);
|
||||
if (AppConfig.IsNotFalse("keyboard_sleep_bar")) flags.Add(AuraDev19b6.SleepBar);
|
||||
if (AppConfig.IsNotFalse("keyboard_shutdown_bar")) flags.Add(AuraDev19b6.ShutdownBar);
|
||||
|
||||
// Lid
|
||||
if (AppConfig.IsNotFalse("keyboard_awake_lid")) flags.Add(AuraDev19b6.AwakeLid);
|
||||
if (AppConfig.IsNotFalse("keyboard_boot_lid")) flags.Add(AuraDev19b6.BootLid);
|
||||
if (AppConfig.IsNotFalse("keyboard_sleep_lid")) flags.Add(AuraDev19b6.SleepLid);
|
||||
if (AppConfig.IsNotFalse("keyboard_shutdown_lid")) flags.Add(AuraDev19b6.ShutdownLid);
|
||||
|
||||
if (AppConfig.IsNotFalse("keyboard_awake_lid")) flags.Add(AuraDev19b6.AwakeRear);
|
||||
if (AppConfig.IsNotFalse("keyboard_boot_lid")) flags.Add(AuraDev19b6.BootRear);
|
||||
if (AppConfig.IsNotFalse("keyboard_sleep_lid")) flags.Add(AuraDev19b6.SleepRear);
|
||||
if (AppConfig.IsNotFalse("keyboard_shutdown_lid")) flags.Add(AuraDev19b6.ShutdownRear);
|
||||
|
||||
byte[] msg = AuraDev19b6Extensions.ToBytes(flags.ToArray());
|
||||
|
||||
|
||||
var devices = GetHidDevices(deviceIds);
|
||||
|
||||
foreach (HidDevice device in devices)
|
||||
device.OpenDevice();
|
||||
if (device.ReadFeatureData(out byte[] data, AURA_HID_ID))
|
||||
{
|
||||
device.OpenDevice();
|
||||
if (device.ReadFeatureData(out byte[] data, AURA_HID_ID))
|
||||
{
|
||||
device.WriteFeatureData(msg);
|
||||
Logger.WriteLine("USB-KB " + device.Attributes.ProductHexId + ":" + BitConverter.ToString(msg));
|
||||
}
|
||||
device.CloseDevice();
|
||||
device.WriteFeatureData(msg);
|
||||
Logger.WriteLine("USB-KB " + device.Attributes.ProductHexId + ":" + BitConverter.ToString(msg));
|
||||
}
|
||||
device.CloseDevice();
|
||||
}
|
||||
|
||||
if (AppConfig.ContainsModel("TUF"))
|
||||
Program.acpi.TUFKeyboardPower(
|
||||
flags.Contains(AuraDev19b6.AwakeKeyb),
|
||||
flags.Contains(AuraDev19b6.BootKeyb),
|
||||
flags.Contains(AuraDev19b6.SleepKeyb),
|
||||
flags.Contains(AuraDev19b6.ShutdownKeyb));
|
||||
|
||||
});
|
||||
if (isTuf)
|
||||
Program.acpi.TUFKeyboardPower(
|
||||
flags.AwakeKeyb,
|
||||
flags.BootKeyb,
|
||||
flags.SleepKeyb,
|
||||
flags.ShutdownKeyb);
|
||||
|
||||
}
|
||||
|
||||
@@ -409,6 +454,7 @@ namespace GHelper
|
||||
device.OpenDevice();
|
||||
if (device.ReadFeatureData(out byte[] data, AURA_HID_ID))
|
||||
{
|
||||
Logger.WriteLine("Aura Device:" + device.DevicePath);
|
||||
auraDevice = device;
|
||||
return;
|
||||
}
|
||||
@@ -419,16 +465,96 @@ namespace GHelper
|
||||
}
|
||||
}
|
||||
|
||||
public static void ApplyColor(Color color)
|
||||
public static void ApplyColor(Color color, bool init = false)
|
||||
{
|
||||
Task.Run(async () =>
|
||||
|
||||
if (isTuf)
|
||||
{
|
||||
if (auraDevice is null || !auraDevice.IsConnected) GetAuraDevice();
|
||||
if (auraDevice is null || !auraDevice.IsConnected) return;
|
||||
auraDevice.WriteFeatureData(AuraMessage(0, color, color, 0));
|
||||
auraDevice.WriteFeatureData(MESSAGE_SET);
|
||||
//auraDevice.WriteFeatureData(MESSAGE_APPLY);
|
||||
});
|
||||
Program.acpi.TUFKeyboardRGB(0, color, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
if (auraDevice is null || !auraDevice.IsConnected) GetAuraDevice();
|
||||
if (auraDevice is null || !auraDevice.IsConnected) return;
|
||||
|
||||
if (isStrix && !isOldHeatmap)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
Debug.WriteLine(color.ToString());
|
||||
auraDevice.Write(AuraMessage(0, color, color, 0));
|
||||
auraDevice.Write(MESSAGE_SET);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static void ApplyGPUColor()
|
||||
{
|
||||
if (AppConfig.Get("aura_mode") != GPUMODE) return;
|
||||
|
||||
Logger.WriteLine(GPUModeControl.gpuMode.ToString());
|
||||
|
||||
switch (GPUModeControl.gpuMode)
|
||||
{
|
||||
case AsusACPI.GPUModeUltimate:
|
||||
ApplyColor(Color.Red, true);
|
||||
break;
|
||||
case AsusACPI.GPUModeEco:
|
||||
ApplyColor(Color.Green, true);
|
||||
break;
|
||||
default:
|
||||
ApplyColor(Color.Yellow, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -440,54 +566,54 @@ namespace GHelper
|
||||
SetColor(AppConfig.Get("aura_color"));
|
||||
SetColor2(AppConfig.Get("aura_color2"));
|
||||
|
||||
timer.Enabled = false;
|
||||
|
||||
if (Mode == HEATMAP)
|
||||
{
|
||||
SetHeatmap(true);
|
||||
timer.Enabled = true;
|
||||
return;
|
||||
}
|
||||
else
|
||||
}
|
||||
|
||||
if (Mode == GPUMODE)
|
||||
{
|
||||
timer.Enabled = false;
|
||||
ApplyGPUColor();
|
||||
return;
|
||||
}
|
||||
|
||||
Task.Run(async () =>
|
||||
int _speed;
|
||||
switch (Speed)
|
||||
{
|
||||
case 1:
|
||||
_speed = 0xeb;
|
||||
break;
|
||||
case 2:
|
||||
_speed = 0xf5;
|
||||
break;
|
||||
default:
|
||||
_speed = 0xe1;
|
||||
break;
|
||||
}
|
||||
|
||||
byte[] msg;
|
||||
var devices = GetHidDevices(deviceIds);
|
||||
|
||||
int _speed;
|
||||
|
||||
switch (Speed)
|
||||
foreach (HidDevice device in devices)
|
||||
{
|
||||
device.OpenDevice();
|
||||
if (device.ReadFeatureData(out byte[] data, AURA_HID_ID))
|
||||
{
|
||||
case 1:
|
||||
_speed = 0xeb;
|
||||
break;
|
||||
case 2:
|
||||
_speed = 0xf5;
|
||||
break;
|
||||
default:
|
||||
_speed = 0xe1;
|
||||
break;
|
||||
msg = AuraMessage(Mode, Color1, Color2, _speed, isSingleColor);
|
||||
device.WriteFeatureData(msg);
|
||||
device.WriteFeatureData(MESSAGE_APPLY);
|
||||
device.WriteFeatureData(MESSAGE_SET);
|
||||
Logger.WriteLine("USB-KB " + device.Attributes.Version + device.Description + device.DevicePath + ":" + BitConverter.ToString(msg));
|
||||
}
|
||||
device.CloseDevice();
|
||||
}
|
||||
|
||||
byte[] msg = AuraMessage(Mode, Color1, Color2, _speed);
|
||||
var devices = GetHidDevices(deviceIds);
|
||||
|
||||
foreach (HidDevice device in devices)
|
||||
{
|
||||
device.OpenDevice();
|
||||
if (device.ReadFeatureData(out byte[] data, AURA_HID_ID))
|
||||
{
|
||||
device.WriteFeatureData(msg);
|
||||
device.WriteFeatureData(MESSAGE_SET);
|
||||
device.WriteFeatureData(MESSAGE_APPLY);
|
||||
Logger.WriteLine("USB-KB " + device.Capabilities.FeatureReportByteLength + "|" + device.Capabilities.InputReportByteLength + device.Description + device.DevicePath + ":" + BitConverter.ToString(msg));
|
||||
}
|
||||
device.CloseDevice();
|
||||
}
|
||||
|
||||
if (AppConfig.ContainsModel("TUF"))
|
||||
Program.acpi.TUFKeyboardRGB(Mode, Color1, _speed);
|
||||
});
|
||||
if (isTuf)
|
||||
Program.acpi.TUFKeyboardRGB(Mode, Color1, _speed);
|
||||
|
||||
}
|
||||
|
||||
@@ -513,6 +639,21 @@ namespace GHelper
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static void InitXGM()
|
||||
{
|
||||
byte[] ASUS_INIT = Encoding.ASCII.GetBytes("^ASUS Tech.Inc.");
|
||||
|
||||
SetXGM(ASUS_INIT);
|
||||
SetXGM(new byte[] { 0x5e, 0xd0, 0x02 });
|
||||
SetXGM(new byte[] { 0x5e, 0xd0, 0x03 });
|
||||
SetXGM(ASUS_INIT);
|
||||
SetXGM(new byte[] { 0x5e, 0xd1, 0x02 }); // reset fan
|
||||
SetXGM(ASUS_INIT);
|
||||
SetXGM(new byte[] { 0x5e, 0xce, 0x03 });
|
||||
SetXGM(new byte[] { 0x5e, 0xd0, 0x04 });
|
||||
SetXGM(new byte[] { 0x5e, 0xd0, 0x01 });
|
||||
}
|
||||
|
||||
public static void ApplyXGMLight(bool status)
|
||||
{
|
||||
SetXGM(new byte[] { 0x5e, 0xc5, status ? (byte)0x50 : (byte)0 });
|
||||
@@ -529,6 +670,8 @@ namespace GHelper
|
||||
|
||||
if (AsusACPI.IsInvalidCurve(curve)) return -1;
|
||||
|
||||
//InitXGM();
|
||||
|
||||
byte[] msg = new byte[19];
|
||||
Array.Copy(new byte[] { 0x5e, 0xd1, 0x01 }, msg, 3);
|
||||
Array.Copy(curve, 0, msg, 3, curve.Length);
|
||||
|
||||
@@ -41,6 +41,8 @@ namespace GHelper.AutoUpdate
|
||||
async void CheckForUpdatesAsync()
|
||||
{
|
||||
|
||||
if (AppConfig.Is("skip_updates")) return;
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
if (limit < 0) limit = AppConfig.Get("charge_limit");
|
||||
if (limit < 40 || limit > 100) return;
|
||||
|
||||
Program.settingsForm.VisualiseBattery(limit);
|
||||
Program.acpi.DeviceSet(AsusACPI.BatteryLimit, limit, "BatteryLimit");
|
||||
Program.settingsForm.VisualiseBattery(limit);
|
||||
|
||||
AppConfig.Set("charge_limit", limit);
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
using System.ComponentModel;
|
||||
using GHelper.Helpers;
|
||||
using NvAPIWrapper.Display;
|
||||
using System.ComponentModel;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace GHelper.Display
|
||||
@@ -259,6 +261,49 @@ namespace GHelper.Display
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
[Flags]
|
||||
public enum DisplayDeviceStates : int
|
||||
{
|
||||
ATTACHED_TO_DESKTOP = 0x01,
|
||||
PRIMARY_DEVICE = 0x04,
|
||||
MIRRORING_DRIVER = 0x08,
|
||||
VGA_COMPATIBLE = 0x10,
|
||||
REMOVABLE = 0x20,
|
||||
DISCONNECTED = 0x2000000,
|
||||
REMOTE = 0x4000000,
|
||||
MODESPRUNED = 0x8000000
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
|
||||
public struct DISPLAY_DEVICE
|
||||
{
|
||||
public int cb;
|
||||
|
||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
|
||||
public string DeviceName;
|
||||
|
||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
|
||||
public string DeviceString;
|
||||
|
||||
public DisplayDeviceStates StateFlags;
|
||||
|
||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
|
||||
public string DeviceID;
|
||||
|
||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
|
||||
public string DeviceKey;
|
||||
}
|
||||
|
||||
|
||||
[DllImport(nameof(User32), CharSet = CharSet.Unicode, SetLastError = true)]
|
||||
public static extern bool EnumDisplayDevices(
|
||||
string? lpDevice,
|
||||
uint iDevNum,
|
||||
ref DISPLAY_DEVICE lpDisplayDevice,
|
||||
uint dwFlags);
|
||||
|
||||
|
||||
private static DISPLAYCONFIG_TARGET_DEVICE_NAME DeviceName(LUID adapterId, uint targetId)
|
||||
{
|
||||
var deviceName = new DISPLAYCONFIG_TARGET_DEVICE_NAME
|
||||
@@ -298,6 +343,33 @@ namespace GHelper.Display
|
||||
}
|
||||
|
||||
|
||||
public static IEnumerable<DISPLAY_DEVICE> GetDisplayDevices()
|
||||
{
|
||||
|
||||
var displayAdapter = new DISPLAY_DEVICE();
|
||||
displayAdapter.cb = Marshal.SizeOf<DISPLAY_DEVICE>();
|
||||
|
||||
var displayAdapterNumber = default(uint);
|
||||
while (EnumDisplayDevices(null, displayAdapterNumber, ref displayAdapter, 1))
|
||||
{
|
||||
var displayMonitor = new DISPLAY_DEVICE();
|
||||
displayMonitor.cb = Marshal.SizeOf<DISPLAY_DEVICE>();
|
||||
|
||||
var displayMonitorNumber = default(uint);
|
||||
while (EnumDisplayDevices(displayAdapter.DeviceName, displayMonitorNumber, ref displayMonitor, 1))
|
||||
{
|
||||
var isAttached = (displayMonitor.StateFlags & DisplayDeviceStates.ATTACHED_TO_DESKTOP) == DisplayDeviceStates.ATTACHED_TO_DESKTOP;
|
||||
var isMirroring = (displayMonitor.StateFlags & DisplayDeviceStates.MIRRORING_DRIVER) == DisplayDeviceStates.MIRRORING_DRIVER;
|
||||
if (isAttached && !isMirroring) yield return displayMonitor;
|
||||
displayMonitorNumber++;
|
||||
|
||||
}
|
||||
|
||||
displayAdapterNumber++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,8 +1,38 @@
|
||||
using System.Runtime.InteropServices;
|
||||
using Microsoft.VisualBasic.Logging;
|
||||
using System.Collections;
|
||||
using System.Diagnostics.Metrics;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows.Forms;
|
||||
using static GHelper.Display.ScreenInterrogatory;
|
||||
|
||||
namespace GHelper.Display
|
||||
{
|
||||
|
||||
class DeviceComparer : IComparer
|
||||
{
|
||||
public int Compare(object x, object y)
|
||||
{
|
||||
uint displayX = ((DISPLAYCONFIG_TARGET_DEVICE_NAME)x).connectorInstance;
|
||||
uint displayY = ((DISPLAYCONFIG_TARGET_DEVICE_NAME)y).connectorInstance;
|
||||
|
||||
if (displayX > displayY)
|
||||
return 1;
|
||||
if (displayX < displayY)
|
||||
return -1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
class ScreenComparer : IComparer
|
||||
{
|
||||
public int Compare(object x, object y)
|
||||
{
|
||||
int displayX = Int32.Parse(((Screen)x).DeviceName.Replace(@"\\.\DISPLAY", ""));
|
||||
int displayY = Int32.Parse(((Screen)y).DeviceName.Replace(@"\\.\DISPLAY", ""));
|
||||
return (new CaseInsensitiveComparer()).Compare(displayX, displayY);
|
||||
}
|
||||
}
|
||||
internal class ScreenNative
|
||||
{
|
||||
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
|
||||
@@ -118,39 +148,12 @@ namespace GHelper.Display
|
||||
public const int ENUM_CURRENT_SETTINGS = -1;
|
||||
public const string defaultDevice = @"\\.\DISPLAY1";
|
||||
|
||||
static bool? _ultimate = null;
|
||||
|
||||
static bool isUltimate
|
||||
private static string? FindInternalName(bool log = false)
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_ultimate is null) _ultimate = (Program.acpi.DeviceGet(AsusACPI.GPUMux) == 0);
|
||||
return (bool)_ultimate;
|
||||
}
|
||||
}
|
||||
|
||||
public static string? FindLaptopScreen(bool log = false)
|
||||
{
|
||||
string? laptopScreen = null;
|
||||
var screens = Screen.AllScreens;
|
||||
|
||||
/*
|
||||
if (!isUltimate)
|
||||
{
|
||||
foreach (var screen in screens )
|
||||
{
|
||||
if (log) Logger.WriteLine(screen.DeviceName);
|
||||
if (screen.DeviceName == defaultDevice) return defaultDevice;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
try
|
||||
{
|
||||
var devices = GetAllDevices().ToArray();
|
||||
|
||||
int count = 0, displayNum = -1;
|
||||
|
||||
string internalName = AppConfig.GetString("internal_display");
|
||||
|
||||
foreach (var device in devices)
|
||||
@@ -159,29 +162,68 @@ namespace GHelper.Display
|
||||
device.outputTechnology == DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED ||
|
||||
device.monitorFriendlyDeviceName == internalName)
|
||||
{
|
||||
displayNum = count;
|
||||
if (log) Logger.WriteLine(device.monitorDevicePath + " " + device.outputTechnology);
|
||||
AppConfig.Set("internal_display", device.monitorFriendlyDeviceName);
|
||||
var names = device.monitorDevicePath.Split("#");
|
||||
return names[1];
|
||||
}
|
||||
if (log) Logger.WriteLine(device.monitorFriendlyDeviceName + ":" + device.outputTechnology.ToString() + ": " + ((count < screens.Length) ? screens[count].DeviceName : ""));
|
||||
count++;
|
||||
}
|
||||
|
||||
count = 0;
|
||||
foreach (var screen in screens)
|
||||
{
|
||||
if (count == displayNum) laptopScreen = screen.DeviceName;
|
||||
count++;
|
||||
}
|
||||
|
||||
if (displayNum > 0 && count == 0) laptopScreen = defaultDevice;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine(ex.ToString());
|
||||
Logger.WriteLine("Can't detect internal screen");
|
||||
laptopScreen = Screen.PrimaryScreen.DeviceName;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
static string ExtractDisplay(string input)
|
||||
{
|
||||
int index = input.IndexOf('\\', 4); // Start searching from index 4 to skip ""
|
||||
|
||||
if (index != -1)
|
||||
{
|
||||
string extracted = input.Substring(0, index);
|
||||
return extracted;
|
||||
}
|
||||
|
||||
return input;
|
||||
}
|
||||
|
||||
public static string? FindLaptopScreen(bool log = false)
|
||||
{
|
||||
string? laptopScreen = null;
|
||||
string? internalName = FindInternalName(log);
|
||||
|
||||
if (internalName == null)
|
||||
{
|
||||
Logger.WriteLine("Internal screen off");
|
||||
return null;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var displays = GetDisplayDevices().ToArray();
|
||||
foreach (var display in displays)
|
||||
{
|
||||
if (log) Logger.WriteLine(display.DeviceID + " " + display.DeviceName);
|
||||
if (display.DeviceID.Contains(internalName))
|
||||
{
|
||||
laptopScreen = ExtractDisplay(display.DeviceName);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine(ex.ToString());
|
||||
}
|
||||
|
||||
if (laptopScreen is null)
|
||||
{
|
||||
Logger.WriteLine("Default internal screen");
|
||||
laptopScreen = Screen.PrimaryScreen.DeviceName;
|
||||
}
|
||||
|
||||
return laptopScreen;
|
||||
}
|
||||
@@ -234,15 +276,6 @@ namespace GHelper.Display
|
||||
dm.dmDisplayFrequency = frequency;
|
||||
int iRet = ChangeDisplaySettingsEx(laptopScreen, ref dm, IntPtr.Zero, DisplaySettingsFlags.CDS_UPDATEREGISTRY, IntPtr.Zero);
|
||||
Logger.WriteLine("Screen = " + frequency.ToString() + "Hz : " + (iRet == 0 ? "OK" : iRet));
|
||||
|
||||
//Fallback scenario
|
||||
if (iRet != 0)
|
||||
{
|
||||
Thread.Sleep(500);
|
||||
iRet = ChangeDisplaySettingsEx(laptopScreen, ref dm, IntPtr.Zero, DisplaySettingsFlags.CDS_UPDATEREGISTRY, IntPtr.Zero);
|
||||
Logger.WriteLine("Screen = " + frequency.ToString() + "Hz : " + (iRet == 0 ? "OK" : iRet));
|
||||
}
|
||||
|
||||
return iRet;
|
||||
}
|
||||
|
||||
|
||||
445
app/Extra.Designer.cs
generated
445
app/Extra.Designer.cs
generated
@@ -31,6 +31,7 @@ namespace GHelper
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
panelServices = new Panel();
|
||||
pictureService = new PictureBox();
|
||||
labelServices = new Label();
|
||||
@@ -41,8 +42,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 +64,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();
|
||||
@@ -102,13 +104,17 @@ namespace GHelper
|
||||
labelSettings = new Label();
|
||||
panelSettings = new Panel();
|
||||
checkAutoToggleClamshellMode = new CheckBox();
|
||||
checkAutoApplyWindowsPowerMode = new CheckBox();
|
||||
checkTopmost = new CheckBox();
|
||||
checkNoOverdrive = new CheckBox();
|
||||
checkUSBC = new CheckBox();
|
||||
checkVariBright = new CheckBox();
|
||||
checkGpuApps = new CheckBox();
|
||||
checkFnLock = new CheckBox();
|
||||
checkGPUFix = new CheckBox();
|
||||
panelPower = new Panel();
|
||||
numericHibernateAfter = new NumericUpDown();
|
||||
labelHibernateAfter = new Label();
|
||||
pictureHibernate = new PictureBox();
|
||||
toolTip = new ToolTip(components);
|
||||
panelServices.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureService).BeginInit();
|
||||
panelBindingsHeader.SuspendLayout();
|
||||
@@ -116,7 +122,6 @@ namespace GHelper
|
||||
((System.ComponentModel.ISupportInitialize)pictureHelp).BeginInit();
|
||||
panelBindings.SuspendLayout();
|
||||
tableBindings.SuspendLayout();
|
||||
tableKeys.SuspendLayout();
|
||||
panelBacklightHeader.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBacklight).BeginInit();
|
||||
panelBacklight.SuspendLayout();
|
||||
@@ -129,18 +134,23 @@ namespace GHelper
|
||||
((System.ComponentModel.ISupportInitialize)pictureLog).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)pictureSettings).BeginInit();
|
||||
panelSettings.SuspendLayout();
|
||||
panelPower.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)numericHibernateAfter).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)pictureHibernate).BeginInit();
|
||||
SuspendLayout();
|
||||
//
|
||||
// panelServices
|
||||
//
|
||||
panelServices.AccessibleName = "Asus Services";
|
||||
panelServices.AccessibleRole = AccessibleRole.Grouping;
|
||||
panelServices.Controls.Add(pictureService);
|
||||
panelServices.Controls.Add(labelServices);
|
||||
panelServices.Controls.Add(buttonServices);
|
||||
panelServices.Dock = DockStyle.Top;
|
||||
panelServices.Location = new Point(15, 1216);
|
||||
panelServices.Location = new Point(15, 1279);
|
||||
panelServices.Name = "panelServices";
|
||||
panelServices.Size = new Size(983, 75);
|
||||
panelServices.TabIndex = 3;
|
||||
panelServices.TabIndex = 5;
|
||||
//
|
||||
// pictureService
|
||||
//
|
||||
@@ -156,7 +166,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 +199,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 +219,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);
|
||||
@@ -228,26 +238,33 @@ namespace GHelper
|
||||
//
|
||||
// panelBindings
|
||||
//
|
||||
panelBindings.AccessibleName = "Key Bindings";
|
||||
panelBindings.AutoSize = true;
|
||||
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.TabIndex = 5;
|
||||
panelBindings.Padding = new Padding(0, 0, 11, 5);
|
||||
panelBindings.Size = new Size(983, 351);
|
||||
panelBindings.TabIndex = 1;
|
||||
panelBindings.TabStop = true;
|
||||
//
|
||||
// tableBindings
|
||||
//
|
||||
tableBindings.AccessibleName = "Keyboard Bindings";
|
||||
tableBindings.AccessibleRole = AccessibleRole.Table;
|
||||
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,59 +286,99 @@ 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.AccessibleName = "Fn+Numpad Action";
|
||||
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 = 7;
|
||||
//
|
||||
// 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;
|
||||
textFNE.TabStop = false;
|
||||
//
|
||||
// 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;
|
||||
textM2.TabStop = false;
|
||||
//
|
||||
// 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;
|
||||
textM1.TabStop = false;
|
||||
//
|
||||
// comboM1
|
||||
//
|
||||
comboM1.AccessibleName = "M1 Action";
|
||||
comboM1.BorderColor = Color.White;
|
||||
comboM1.ButtonColor = Color.FromArgb(255, 255, 255);
|
||||
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.TabIndex = 11;
|
||||
comboM1.Size = new Size(374, 40);
|
||||
comboM1.TabIndex = 1;
|
||||
//
|
||||
// labelM1
|
||||
//
|
||||
@@ -329,56 +386,60 @@ 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:";
|
||||
//
|
||||
// comboM4
|
||||
//
|
||||
comboM4.AccessibleName = "M4 Action";
|
||||
comboM4.BorderColor = Color.White;
|
||||
comboM4.ButtonColor = Color.FromArgb(255, 255, 255);
|
||||
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.TabIndex = 3;
|
||||
comboM4.Size = new Size(374, 40);
|
||||
comboM4.TabIndex = 4;
|
||||
//
|
||||
// comboM3
|
||||
//
|
||||
comboM3.AccessibleName = "M3 Action";
|
||||
comboM3.BorderColor = Color.White;
|
||||
comboM3.ButtonColor = Color.FromArgb(255, 255, 255);
|
||||
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.TabIndex = 1;
|
||||
comboM3.Size = new Size(374, 40);
|
||||
comboM3.TabIndex = 3;
|
||||
//
|
||||
// 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;
|
||||
textM4.TabStop = false;
|
||||
//
|
||||
// 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;
|
||||
textM3.TabStop = false;
|
||||
//
|
||||
// labelM4
|
||||
//
|
||||
@@ -386,8 +447,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 +458,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,23 +469,24 @@ 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:";
|
||||
//
|
||||
// comboM2
|
||||
//
|
||||
comboM2.AccessibleName = "M2 Action";
|
||||
comboM2.BorderColor = Color.White;
|
||||
comboM2.ButtonColor = Color.FromArgb(255, 255, 255);
|
||||
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.TabIndex = 12;
|
||||
comboM2.Size = new Size(374, 40);
|
||||
comboM2.TabIndex = 2;
|
||||
//
|
||||
// labelFNF4
|
||||
//
|
||||
@@ -432,54 +494,58 @@ 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:";
|
||||
//
|
||||
// comboFNF4
|
||||
//
|
||||
comboFNF4.AccessibleName = "Fn+F4 Action";
|
||||
comboFNF4.BorderColor = Color.White;
|
||||
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.TabIndex = 7;
|
||||
comboFNF4.Size = new Size(374, 40);
|
||||
comboFNF4.TabIndex = 5;
|
||||
//
|
||||
// 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;
|
||||
textFNF4.TabStop = false;
|
||||
//
|
||||
// comboFNC
|
||||
//
|
||||
comboFNC.AccessibleName = "Fn+C Action";
|
||||
comboFNC.BorderColor = Color.White;
|
||||
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.TabIndex = 16;
|
||||
comboFNC.Size = new Size(374, 40);
|
||||
comboFNC.TabIndex = 6;
|
||||
//
|
||||
// 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;
|
||||
textFNC.TabStop = false;
|
||||
//
|
||||
// tableKeys
|
||||
//
|
||||
@@ -487,7 +553,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 +565,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,22 +573,24 @@ 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.TabStop = false;
|
||||
sliderBrightness.Text = "sliderBrightness";
|
||||
sliderBrightness.Value = 3;
|
||||
//
|
||||
@@ -551,7 +598,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,11 +621,11 @@ 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);
|
||||
panelBacklight.TabIndex = 6;
|
||||
panelBacklight.TabIndex = 2;
|
||||
//
|
||||
// panelBacklightExtra
|
||||
//
|
||||
@@ -599,30 +646,32 @@ namespace GHelper
|
||||
//
|
||||
// numericBacklightPluggedTime
|
||||
//
|
||||
numericBacklightPluggedTime.AccessibleName = "Backlight Timeout when plugged";
|
||||
numericBacklightPluggedTime.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||
numericBacklightPluggedTime.Location = new Point(670, 63);
|
||||
numericBacklightPluggedTime.Margin = new Padding(4, 3, 4, 3);
|
||||
numericBacklightPluggedTime.Maximum = new decimal(new int[] { 3600, 0, 0, 0 });
|
||||
numericBacklightPluggedTime.Name = "numericBacklightPluggedTime";
|
||||
numericBacklightPluggedTime.Size = new Size(140, 39);
|
||||
numericBacklightPluggedTime.TabIndex = 49;
|
||||
numericBacklightPluggedTime.TabIndex = 1;
|
||||
//
|
||||
// numericBacklightTime
|
||||
//
|
||||
numericBacklightTime.AccessibleName = "Backlight Timeout when on battery";
|
||||
numericBacklightTime.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||
numericBacklightTime.Location = new Point(822, 63);
|
||||
numericBacklightTime.Margin = new Padding(4, 3, 4, 3);
|
||||
numericBacklightTime.Maximum = new decimal(new int[] { 3600, 0, 0, 0 });
|
||||
numericBacklightTime.Name = "numericBacklightTime";
|
||||
numericBacklightTime.Size = new Size(140, 39);
|
||||
numericBacklightTime.TabIndex = 47;
|
||||
numericBacklightTime.TabIndex = 2;
|
||||
//
|
||||
// labelBacklightTimeout
|
||||
//
|
||||
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,12 +680,13 @@ 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";
|
||||
//
|
||||
// comboKeyboardSpeed
|
||||
//
|
||||
comboKeyboardSpeed.AccessibleName = "Keyboard Animation Speed";
|
||||
comboKeyboardSpeed.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||
comboKeyboardSpeed.BorderColor = Color.White;
|
||||
comboKeyboardSpeed.ButtonColor = SystemColors.ControlLight;
|
||||
@@ -649,7 +699,7 @@ namespace GHelper
|
||||
comboKeyboardSpeed.Margin = new Padding(4, 12, 4, 9);
|
||||
comboKeyboardSpeed.Name = "comboKeyboardSpeed";
|
||||
comboKeyboardSpeed.Size = new Size(293, 40);
|
||||
comboKeyboardSpeed.TabIndex = 43;
|
||||
comboKeyboardSpeed.TabIndex = 0;
|
||||
comboKeyboardSpeed.TabStop = false;
|
||||
//
|
||||
// panelXMG
|
||||
@@ -665,7 +715,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);
|
||||
@@ -729,6 +779,7 @@ namespace GHelper
|
||||
//
|
||||
// checkAwake
|
||||
//
|
||||
checkAwake.AccessibleName = "Awake Backlight";
|
||||
checkAwake.Dock = DockStyle.Fill;
|
||||
checkAwake.Location = new Point(4, 45);
|
||||
checkAwake.Margin = new Padding(4, 0, 4, 0);
|
||||
@@ -741,6 +792,7 @@ namespace GHelper
|
||||
//
|
||||
// checkBoot
|
||||
//
|
||||
checkBoot.AccessibleName = "Boot Backlight";
|
||||
checkBoot.Dock = DockStyle.Fill;
|
||||
checkBoot.Location = new Point(4, 88);
|
||||
checkBoot.Margin = new Padding(4, 0, 4, 0);
|
||||
@@ -753,6 +805,7 @@ namespace GHelper
|
||||
//
|
||||
// checkSleep
|
||||
//
|
||||
checkSleep.AccessibleName = "Sleep Backlight";
|
||||
checkSleep.Dock = DockStyle.Fill;
|
||||
checkSleep.Location = new Point(4, 131);
|
||||
checkSleep.Margin = new Padding(4, 0, 4, 0);
|
||||
@@ -765,6 +818,7 @@ namespace GHelper
|
||||
//
|
||||
// checkShutdown
|
||||
//
|
||||
checkShutdown.AccessibleName = "Shutdown Backlight";
|
||||
checkShutdown.Dock = DockStyle.Fill;
|
||||
checkShutdown.Location = new Point(4, 174);
|
||||
checkShutdown.Margin = new Padding(4, 0, 4, 0);
|
||||
@@ -963,10 +1017,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 +1029,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 +1040,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;
|
||||
@@ -1004,49 +1058,36 @@ namespace GHelper
|
||||
//
|
||||
// panelSettings
|
||||
//
|
||||
panelSettings.AccessibleName = "Extra Settings";
|
||||
panelSettings.AccessibleRole = AccessibleRole.Grouping;
|
||||
panelSettings.AutoSize = true;
|
||||
panelSettings.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelSettings.Controls.Add(checkAutoToggleClamshellMode);
|
||||
panelSettings.Controls.Add(checkAutoApplyWindowsPowerMode);
|
||||
panelSettings.Controls.Add(checkTopmost);
|
||||
panelSettings.Controls.Add(checkNoOverdrive);
|
||||
panelSettings.Controls.Add(checkUSBC);
|
||||
panelSettings.Controls.Add(checkVariBright);
|
||||
panelSettings.Controls.Add(checkGpuApps);
|
||||
panelSettings.Controls.Add(checkFnLock);
|
||||
panelSettings.Controls.Add(checkGPUFix);
|
||||
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.TabIndex = 46;
|
||||
panelSettings.Padding = new Padding(20, 5, 11, 5);
|
||||
panelSettings.Size = new Size(983, 304);
|
||||
panelSettings.TabIndex = 3;
|
||||
//
|
||||
// checkAutoToggleClamshellMode
|
||||
//
|
||||
checkAutoToggleClamshellMode.AutoSize = true;
|
||||
checkAutoToggleClamshellMode.Dock = DockStyle.Top;
|
||||
checkAutoToggleClamshellMode.Location = new Point(20, 299);
|
||||
checkAutoToggleClamshellMode.Margin = new Padding(2);
|
||||
checkAutoToggleClamshellMode.Location = new Point(20, 257);
|
||||
checkAutoToggleClamshellMode.Name = "checkAutoToggleClamshellMode";
|
||||
checkAutoToggleClamshellMode.Padding = new Padding(2);
|
||||
checkAutoToggleClamshellMode.Size = new Size(953, 40);
|
||||
checkAutoToggleClamshellMode.TabIndex = 58;
|
||||
checkAutoToggleClamshellMode.Padding = new Padding(3);
|
||||
checkAutoToggleClamshellMode.Size = new Size(952, 42);
|
||||
checkAutoToggleClamshellMode.TabIndex = 8;
|
||||
checkAutoToggleClamshellMode.Text = "Auto Toggle Clamshell Mode";
|
||||
checkAutoToggleClamshellMode.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkAutoApplyWindowsPowerMode
|
||||
//
|
||||
checkAutoApplyWindowsPowerMode.AutoSize = true;
|
||||
checkAutoApplyWindowsPowerMode.Dock = DockStyle.Top;
|
||||
checkAutoApplyWindowsPowerMode.Location = new Point(20, 257);
|
||||
checkAutoApplyWindowsPowerMode.Margin = new Padding(4, 3, 4, 3);
|
||||
checkAutoApplyWindowsPowerMode.Name = "checkAutoApplyWindowsPowerMode";
|
||||
checkAutoApplyWindowsPowerMode.Padding = new Padding(3);
|
||||
checkAutoApplyWindowsPowerMode.Size = new Size(953, 42);
|
||||
checkAutoApplyWindowsPowerMode.TabIndex = 54;
|
||||
checkAutoApplyWindowsPowerMode.Text = "Auto Adjust Windows Power Mode";
|
||||
checkAutoApplyWindowsPowerMode.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkTopmost
|
||||
//
|
||||
checkTopmost.AutoSize = true;
|
||||
@@ -1055,8 +1096,8 @@ 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.TabIndex = 51;
|
||||
checkTopmost.Size = new Size(952, 42);
|
||||
checkTopmost.TabIndex = 6;
|
||||
checkTopmost.Text = Strings.WindowTop;
|
||||
checkTopmost.UseVisualStyleBackColor = true;
|
||||
//
|
||||
@@ -1068,8 +1109,8 @@ 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.TabIndex = 52;
|
||||
checkNoOverdrive.Size = new Size(952, 42);
|
||||
checkNoOverdrive.TabIndex = 5;
|
||||
checkNoOverdrive.Text = Strings.DisableOverdrive;
|
||||
checkNoOverdrive.UseVisualStyleBackColor = true;
|
||||
//
|
||||
@@ -1081,8 +1122,8 @@ 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.TabIndex = 53;
|
||||
checkUSBC.Size = new Size(952, 42);
|
||||
checkUSBC.TabIndex = 4;
|
||||
checkUSBC.Text = "Keep GPU disabled on USB-C charger in Optimized mode";
|
||||
checkUSBC.UseVisualStyleBackColor = true;
|
||||
//
|
||||
@@ -1094,8 +1135,8 @@ 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.TabIndex = 57;
|
||||
checkVariBright.Size = new Size(952, 42);
|
||||
checkVariBright.TabIndex = 3;
|
||||
checkVariBright.Text = "AMD Display VariBright";
|
||||
checkVariBright.UseVisualStyleBackColor = true;
|
||||
//
|
||||
@@ -1107,34 +1148,76 @@ 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.TabIndex = 55;
|
||||
checkGpuApps.Size = new Size(952, 42);
|
||||
checkGpuApps.TabIndex = 2;
|
||||
checkGpuApps.Text = "Stop all apps using GPU when switching to Eco";
|
||||
checkGpuApps.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkFnLock
|
||||
// checkGPUFix
|
||||
//
|
||||
checkFnLock.AutoSize = true;
|
||||
checkFnLock.Dock = DockStyle.Top;
|
||||
checkFnLock.Location = new Point(20, 5);
|
||||
checkFnLock.Margin = new Padding(4, 3, 4, 3);
|
||||
checkFnLock.MaximumSize = new Size(800, 0);
|
||||
checkFnLock.Name = "checkFnLock";
|
||||
checkFnLock.Padding = new Padding(3);
|
||||
checkFnLock.Size = new Size(800, 42);
|
||||
checkFnLock.TabIndex = 56;
|
||||
checkFnLock.Text = "Process Fn+F hotkeys without Fn";
|
||||
checkFnLock.UseVisualStyleBackColor = true;
|
||||
checkGPUFix.AutoSize = true;
|
||||
checkGPUFix.Dock = DockStyle.Top;
|
||||
checkGPUFix.Location = new Point(20, 5);
|
||||
checkGPUFix.Margin = new Padding(4, 3, 4, 3);
|
||||
checkGPUFix.Name = "checkGPUFix";
|
||||
checkGPUFix.Padding = new Padding(3);
|
||||
checkGPUFix.Size = new Size(952, 42);
|
||||
checkGPUFix.TabIndex = 9;
|
||||
checkGPUFix.Text = "Enable GPU on shutdown (prevents issue with Eco mode)";
|
||||
checkGPUFix.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// panelPower
|
||||
//
|
||||
panelPower.Controls.Add(numericHibernateAfter);
|
||||
panelPower.Controls.Add(labelHibernateAfter);
|
||||
panelPower.Controls.Add(pictureHibernate);
|
||||
panelPower.Dock = DockStyle.Top;
|
||||
panelPower.Location = new Point(15, 1225);
|
||||
panelPower.Name = "panelPower";
|
||||
panelPower.Size = new Size(983, 54);
|
||||
panelPower.TabIndex = 4;
|
||||
//
|
||||
// numericHibernateAfter
|
||||
//
|
||||
numericHibernateAfter.AccessibleName = "Minutes till Hibernation in sleep";
|
||||
numericHibernateAfter.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||
numericHibernateAfter.Increment = new decimal(new int[] { 10, 0, 0, 0 });
|
||||
numericHibernateAfter.Location = new Point(810, 7);
|
||||
numericHibernateAfter.Margin = new Padding(4, 3, 4, 3);
|
||||
numericHibernateAfter.Maximum = new decimal(new int[] { 3000000, 0, 0, 0 });
|
||||
numericHibernateAfter.Name = "numericHibernateAfter";
|
||||
numericHibernateAfter.Size = new Size(152, 39);
|
||||
numericHibernateAfter.TabIndex = 1;
|
||||
//
|
||||
// labelHibernateAfter
|
||||
//
|
||||
labelHibernateAfter.AutoSize = true;
|
||||
labelHibernateAfter.Location = new Point(59, 10);
|
||||
labelHibernateAfter.Margin = new Padding(4, 0, 4, 0);
|
||||
labelHibernateAfter.Name = "labelHibernateAfter";
|
||||
labelHibernateAfter.Size = new Size(457, 32);
|
||||
labelHibernateAfter.TabIndex = 45;
|
||||
labelHibernateAfter.Text = "Minutes till Hibernation in sleep (0 - OFF)";
|
||||
//
|
||||
// pictureHibernate
|
||||
//
|
||||
pictureHibernate.BackgroundImage = Resources.icons8_hibernate_32;
|
||||
pictureHibernate.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
pictureHibernate.Location = new Point(20, 10);
|
||||
pictureHibernate.Name = "pictureHibernate";
|
||||
pictureHibernate.Size = new Size(32, 32);
|
||||
pictureHibernate.TabIndex = 22;
|
||||
pictureHibernate.TabStop = false;
|
||||
//
|
||||
// Extra
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(192F, 192F);
|
||||
AutoScaleMode = AutoScaleMode.Dpi;
|
||||
AutoScroll = true;
|
||||
AutoSize = true;
|
||||
AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
ClientSize = new Size(1013, 1355);
|
||||
ClientSize = new Size(1013, 1467);
|
||||
Controls.Add(panelServices);
|
||||
Controls.Add(panelPower);
|
||||
Controls.Add(panelSettings);
|
||||
Controls.Add(panelSettingsHeader);
|
||||
Controls.Add(panelBacklight);
|
||||
@@ -1146,7 +1229,7 @@ namespace GHelper
|
||||
MaximizeBox = false;
|
||||
MdiChildrenMinimizedAnchorBottom = false;
|
||||
MinimizeBox = false;
|
||||
MinimumSize = new Size(1034, 71);
|
||||
MinimumSize = new Size(1033, 0);
|
||||
Name = "Extra";
|
||||
Padding = new Padding(15);
|
||||
ShowIcon = false;
|
||||
@@ -1163,8 +1246,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();
|
||||
@@ -1182,6 +1263,10 @@ namespace GHelper
|
||||
((System.ComponentModel.ISupportInitialize)pictureSettings).EndInit();
|
||||
panelSettings.ResumeLayout(false);
|
||||
panelSettings.PerformLayout();
|
||||
panelPower.ResumeLayout(false);
|
||||
panelPower.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)numericHibernateAfter).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)pictureHibernate).EndInit();
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
||||
}
|
||||
@@ -1193,8 +1278,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 +1298,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;
|
||||
@@ -1252,18 +1335,26 @@ namespace GHelper
|
||||
private PictureBox pictureSettings;
|
||||
private Label labelSettings;
|
||||
private Panel panelSettings;
|
||||
private CheckBox checkAutoApplyWindowsPowerMode;
|
||||
private CheckBox checkTopmost;
|
||||
private CheckBox checkNoOverdrive;
|
||||
private CheckBox checkUSBC;
|
||||
private CheckBox checkVariBright;
|
||||
private CheckBox checkGpuApps;
|
||||
private CheckBox checkFnLock;
|
||||
private PictureBox pictureBacklight;
|
||||
private Label labelBacklightTitle;
|
||||
private PictureBox pictureService;
|
||||
private Slider sliderBrightness;
|
||||
private PictureBox pictureLog;
|
||||
private CheckBox checkAutoToggleClamshellMode;
|
||||
private Label labelFNE;
|
||||
private RComboBox comboFNE;
|
||||
private TextBox textFNE;
|
||||
private Slider slider1;
|
||||
private Panel panelPower;
|
||||
private PictureBox pictureHibernate;
|
||||
private Label labelHibernateAfter;
|
||||
private NumericUpDown numericHibernateAfter;
|
||||
private CheckBox checkGPUFix;
|
||||
private ToolTip toolTip;
|
||||
}
|
||||
}
|
||||
156
app/Extra.cs
156
app/Extra.cs
@@ -2,6 +2,7 @@
|
||||
using GHelper.Gpu.AMD;
|
||||
using GHelper.Helpers;
|
||||
using GHelper.Input;
|
||||
using GHelper.Mode;
|
||||
using GHelper.UI;
|
||||
using System.Diagnostics;
|
||||
|
||||
@@ -13,9 +14,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 +57,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;
|
||||
@@ -105,8 +118,6 @@ namespace GHelper
|
||||
checkNoOverdrive.Text = Properties.Strings.DisableOverdrive;
|
||||
checkTopmost.Text = Properties.Strings.WindowTop;
|
||||
checkUSBC.Text = Properties.Strings.OptimizedUSBC;
|
||||
checkAutoApplyWindowsPowerMode.Text = Properties.Strings.ApplyWindowsPowerPlan;
|
||||
checkFnLock.Text = Properties.Strings.FnLock;
|
||||
checkAutoToggleClamshellMode.Text = Properties.Strings.ToggleClamshellMode;
|
||||
|
||||
labelBacklightKeyboard.Text = Properties.Strings.Keyboard;
|
||||
@@ -115,41 +126,83 @@ namespace GHelper
|
||||
labelBacklightLogo.Text = Properties.Strings.Logo;
|
||||
|
||||
checkGpuApps.Text = Properties.Strings.KillGpuApps;
|
||||
labelHibernateAfter.Text = Properties.Strings.HibernateAfter;
|
||||
|
||||
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");
|
||||
}
|
||||
|
||||
if (AppConfig.IsStrix())
|
||||
{
|
||||
labelM4.Text = "M5/ROG";
|
||||
}
|
||||
|
||||
|
||||
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 +256,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 +264,7 @@ namespace GHelper
|
||||
checkSleepBar.Visible = false;
|
||||
checkShutdownBar.Visible = false;
|
||||
|
||||
if (!AppConfig.ContainsModel("Z13"))
|
||||
if (!AppConfig.IsZ13())
|
||||
{
|
||||
labelBacklightLid.Visible = false;
|
||||
checkAwakeLid.Visible = false;
|
||||
@@ -242,9 +295,6 @@ namespace GHelper
|
||||
checkUSBC.Checked = AppConfig.Is("optimized_usbc");
|
||||
checkUSBC.CheckedChanged += CheckUSBC_CheckedChanged;
|
||||
|
||||
checkAutoApplyWindowsPowerMode.Checked = (AppConfig.Get("auto_apply_power_plan") != 0);
|
||||
checkAutoApplyWindowsPowerMode.CheckedChanged += checkAutoApplyWindowsPowerMode_CheckedChanged;
|
||||
|
||||
sliderBrightness.Value = InputDispatcher.GetBacklight();
|
||||
sliderBrightness.ValueChanged += SliderBrightness_ValueChanged;
|
||||
|
||||
@@ -261,17 +311,48 @@ namespace GHelper
|
||||
checkGpuApps.Checked = AppConfig.Is("kill_gpu_apps");
|
||||
checkGpuApps.CheckedChanged += CheckGpuApps_CheckedChanged;
|
||||
|
||||
checkFnLock.Checked = AppConfig.Is("fn_lock");
|
||||
checkFnLock.CheckedChanged += CheckFnLock_CheckedChanged; ;
|
||||
|
||||
pictureHelp.Click += PictureHelp_Click;
|
||||
|
||||
buttonServices.Click += ButtonServices_Click;
|
||||
|
||||
pictureLog.Click += PictureLog_Click;
|
||||
|
||||
checkGPUFix.Visible = AppConfig.IsGPUFixNeeded();
|
||||
checkGPUFix.Checked = AppConfig.IsGPUFix();
|
||||
checkGPUFix.CheckedChanged += CheckGPUFix_CheckedChanged;
|
||||
|
||||
toolTip.SetToolTip(checkAutoToggleClamshellMode, "Disable sleep on lid close when plugged in and external monitor is connected");
|
||||
|
||||
InitVariBright();
|
||||
InitServices();
|
||||
InitHibernate();
|
||||
}
|
||||
|
||||
private void CheckGPUFix_CheckedChanged(object? sender, EventArgs e)
|
||||
{
|
||||
AppConfig.Set("gpu_fix", (checkGPUFix.Checked ? 1 : 0));
|
||||
}
|
||||
|
||||
private void InitHibernate()
|
||||
{
|
||||
try
|
||||
{
|
||||
int hibernate = PowerNative.GetHibernateAfter();
|
||||
if (hibernate < 0 || hibernate > numericHibernateAfter.Maximum) hibernate = 0;
|
||||
numericHibernateAfter.Value = hibernate;
|
||||
numericHibernateAfter.ValueChanged += NumericHibernateAfter_ValueChanged;
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
panelPower.Visible = false;
|
||||
Logger.WriteLine(ex.ToString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void NumericHibernateAfter_ValueChanged(object? sender, EventArgs e)
|
||||
{
|
||||
PowerNative.SetHibernateAfter((int)numericHibernateAfter.Value);
|
||||
}
|
||||
|
||||
private void PictureLog_Click(object? sender, EventArgs e)
|
||||
@@ -287,8 +368,13 @@ namespace GHelper
|
||||
|
||||
private void SliderBrightness_ValueChanged(object? sender, EventArgs e)
|
||||
{
|
||||
AppConfig.Set("keyboard_brightness", sliderBrightness.Value);
|
||||
AppConfig.Set("keyboard_brightness_ac", sliderBrightness.Value);
|
||||
bool onBattery = SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online;
|
||||
|
||||
if (onBattery)
|
||||
AppConfig.Set("keyboard_brightness_ac", sliderBrightness.Value);
|
||||
else
|
||||
AppConfig.Set("keyboard_brightness", sliderBrightness.Value);
|
||||
|
||||
AsusUSB.ApplyBrightness(sliderBrightness.Value, "Slider");
|
||||
}
|
||||
|
||||
@@ -317,7 +403,7 @@ namespace GHelper
|
||||
{
|
||||
buttonServices.Enabled = false;
|
||||
|
||||
if (OptimizationService.IsRunning())
|
||||
if (OptimizationService.GetRunningCount() > 0)
|
||||
{
|
||||
labelServices.Text = Properties.Strings.StoppingServices + " ...";
|
||||
Task.Run(() =>
|
||||
@@ -356,6 +442,7 @@ namespace GHelper
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
using (var amdControl = new AmdGpuControl())
|
||||
{
|
||||
int variBrightSupported = 0, VariBrightEnabled;
|
||||
@@ -388,15 +475,6 @@ namespace GHelper
|
||||
}
|
||||
}
|
||||
|
||||
private void CheckFnLock_CheckedChanged(object? sender, EventArgs e)
|
||||
{
|
||||
int fnLock = checkFnLock.Checked ? 1 : 0;
|
||||
AppConfig.Set("fn_lock", fnLock);
|
||||
Program.acpi.DeviceSet(AsusACPI.FnLock, (fnLock == 1) ? 0 : 1, "FnLock");
|
||||
|
||||
Program.inputDispatcher.RegisterKeys();
|
||||
}
|
||||
|
||||
private void CheckGpuApps_CheckedChanged(object? sender, EventArgs e)
|
||||
{
|
||||
AppConfig.Set("kill_gpu_apps", (checkGpuApps.Checked ? 1 : 0));
|
||||
@@ -485,10 +563,6 @@ namespace GHelper
|
||||
Left = Program.settingsForm.Left - Width - 5;
|
||||
}
|
||||
|
||||
private void checkAutoApplyWindowsPowerMode_CheckedChanged(object? sender, EventArgs e)
|
||||
{
|
||||
AppConfig.Set("auto_apply_power_plan", checkAutoApplyWindowsPowerMode.Checked ? 1 : 0);
|
||||
}
|
||||
|
||||
private void checkAutoToggleClamshellMode_CheckedChanged(object? sender, EventArgs e)
|
||||
{
|
||||
|
||||
@@ -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>
|
||||
@@ -117,4 +117,7 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
||||
221
app/Fans.Designer.cs
generated
221
app/Fans.Designer.cs
generated
@@ -31,14 +31,14 @@ namespace GHelper
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
ChartArea chartArea1 = new ChartArea();
|
||||
Title title1 = new Title();
|
||||
ChartArea chartArea2 = new ChartArea();
|
||||
Title title2 = new Title();
|
||||
ChartArea chartArea3 = new ChartArea();
|
||||
Title title3 = new Title();
|
||||
ChartArea chartArea4 = new ChartArea();
|
||||
Title title4 = new Title();
|
||||
ChartArea chartArea9 = new ChartArea();
|
||||
Title title9 = new Title();
|
||||
ChartArea chartArea10 = new ChartArea();
|
||||
Title title10 = new Title();
|
||||
ChartArea chartArea11 = new ChartArea();
|
||||
Title title11 = new Title();
|
||||
ChartArea chartArea12 = new ChartArea();
|
||||
Title title12 = new Title();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Fans));
|
||||
panelFans = new Panel();
|
||||
labelTip = new Label();
|
||||
@@ -106,6 +106,11 @@ namespace GHelper
|
||||
panelBoostTitle = new Panel();
|
||||
pictureBoost = new PictureBox();
|
||||
labelBoost = new Label();
|
||||
panelPowerMode = new Panel();
|
||||
comboPowerMode = new RComboBox();
|
||||
panelPowerModeTItle = new Panel();
|
||||
picturePowerMode = new PictureBox();
|
||||
labelPowerModeTitle = new Label();
|
||||
panelGPU = new Panel();
|
||||
panelGPUTemp = new Panel();
|
||||
labelGPUTemp = new Label();
|
||||
@@ -131,6 +136,10 @@ namespace GHelper
|
||||
buttonAdvanced = new RButton();
|
||||
buttonGPU = new RButton();
|
||||
buttonCPU = new RButton();
|
||||
panelGPUClockLimit = new Panel();
|
||||
labelGPUClockLimit = new Label();
|
||||
trackGPUClockLimit = new TrackBar();
|
||||
labelGPUClockLimitTitle = new Label();
|
||||
panelFans.SuspendLayout();
|
||||
tableFanCharts.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)chartGPU).BeginInit();
|
||||
@@ -167,6 +176,9 @@ namespace GHelper
|
||||
panelBoost.SuspendLayout();
|
||||
panelBoostTitle.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoost).BeginInit();
|
||||
panelPowerMode.SuspendLayout();
|
||||
panelPowerModeTItle.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)picturePowerMode).BeginInit();
|
||||
panelGPU.SuspendLayout();
|
||||
panelGPUTemp.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)trackGPUTemp).BeginInit();
|
||||
@@ -180,6 +192,8 @@ namespace GHelper
|
||||
((System.ComponentModel.ISupportInitialize)pictureGPU).BeginInit();
|
||||
panelNav.SuspendLayout();
|
||||
tableNav.SuspendLayout();
|
||||
panelGPUClockLimit.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)trackGPUClockLimit).BeginInit();
|
||||
SuspendLayout();
|
||||
//
|
||||
// panelFans
|
||||
@@ -236,8 +250,8 @@ namespace GHelper
|
||||
//
|
||||
// chartGPU
|
||||
//
|
||||
chartArea1.Name = "ChartArea1";
|
||||
chartGPU.ChartAreas.Add(chartArea1);
|
||||
chartArea9.Name = "ChartArea1";
|
||||
chartGPU.ChartAreas.Add(chartArea9);
|
||||
chartGPU.Dock = DockStyle.Fill;
|
||||
chartGPU.Location = new Point(12, 491);
|
||||
chartGPU.Margin = new Padding(2, 10, 2, 10);
|
||||
@@ -245,13 +259,13 @@ namespace GHelper
|
||||
chartGPU.Size = new Size(782, 461);
|
||||
chartGPU.TabIndex = 17;
|
||||
chartGPU.Text = "chartGPU";
|
||||
title1.Name = "Title1";
|
||||
chartGPU.Titles.Add(title1);
|
||||
title9.Name = "Title1";
|
||||
chartGPU.Titles.Add(title9);
|
||||
//
|
||||
// chartCPU
|
||||
//
|
||||
chartArea2.Name = "ChartArea1";
|
||||
chartCPU.ChartAreas.Add(chartArea2);
|
||||
chartArea10.Name = "ChartArea1";
|
||||
chartCPU.ChartAreas.Add(chartArea10);
|
||||
chartCPU.Dock = DockStyle.Fill;
|
||||
chartCPU.Location = new Point(12, 10);
|
||||
chartCPU.Margin = new Padding(2, 10, 2, 10);
|
||||
@@ -259,13 +273,13 @@ namespace GHelper
|
||||
chartCPU.Size = new Size(782, 461);
|
||||
chartCPU.TabIndex = 14;
|
||||
chartCPU.Text = "chartCPU";
|
||||
title2.Name = "Title1";
|
||||
chartCPU.Titles.Add(title2);
|
||||
title10.Name = "Title1";
|
||||
chartCPU.Titles.Add(title10);
|
||||
//
|
||||
// chartXGM
|
||||
//
|
||||
chartArea3.Name = "ChartAreaXGM";
|
||||
chartXGM.ChartAreas.Add(chartArea3);
|
||||
chartArea11.Name = "ChartAreaXGM";
|
||||
chartXGM.ChartAreas.Add(chartArea11);
|
||||
chartXGM.Dock = DockStyle.Fill;
|
||||
chartXGM.Location = new Point(12, 1453);
|
||||
chartXGM.Margin = new Padding(2, 10, 2, 10);
|
||||
@@ -273,14 +287,14 @@ namespace GHelper
|
||||
chartXGM.Size = new Size(782, 464);
|
||||
chartXGM.TabIndex = 14;
|
||||
chartXGM.Text = "chartXGM";
|
||||
title3.Name = "Title4";
|
||||
chartXGM.Titles.Add(title3);
|
||||
title11.Name = "Title4";
|
||||
chartXGM.Titles.Add(title11);
|
||||
chartXGM.Visible = false;
|
||||
//
|
||||
// chartMid
|
||||
//
|
||||
chartArea4.Name = "ChartArea3";
|
||||
chartMid.ChartAreas.Add(chartArea4);
|
||||
chartArea12.Name = "ChartArea3";
|
||||
chartMid.ChartAreas.Add(chartArea12);
|
||||
chartMid.Dock = DockStyle.Fill;
|
||||
chartMid.Location = new Point(12, 972);
|
||||
chartMid.Margin = new Padding(2, 10, 2, 10);
|
||||
@@ -288,8 +302,8 @@ namespace GHelper
|
||||
chartMid.Size = new Size(782, 461);
|
||||
chartMid.TabIndex = 14;
|
||||
chartMid.Text = "chartMid";
|
||||
title4.Name = "Title3";
|
||||
chartMid.Titles.Add(title4);
|
||||
title12.Name = "Title3";
|
||||
chartMid.Titles.Add(title12);
|
||||
chartMid.Visible = false;
|
||||
//
|
||||
// panelTitleFans
|
||||
@@ -491,7 +505,7 @@ namespace GHelper
|
||||
panelAdvanced.Controls.Add(panelTemperature);
|
||||
panelAdvanced.Controls.Add(panelTitleTemp);
|
||||
panelAdvanced.Dock = DockStyle.Top;
|
||||
panelAdvanced.Location = new Point(10, 1272);
|
||||
panelAdvanced.Location = new Point(10, 1520);
|
||||
panelAdvanced.Name = "panelAdvanced";
|
||||
panelAdvanced.Size = new Size(520, 888);
|
||||
panelAdvanced.TabIndex = 14;
|
||||
@@ -786,11 +800,13 @@ namespace GHelper
|
||||
panelPower.Controls.Add(panelTitleCPU);
|
||||
panelPower.Controls.Add(panelBoost);
|
||||
panelPower.Controls.Add(panelBoostTitle);
|
||||
panelPower.Controls.Add(panelPowerMode);
|
||||
panelPower.Controls.Add(panelPowerModeTItle);
|
||||
panelPower.Dock = DockStyle.Top;
|
||||
panelPower.Location = new Point(10, 640);
|
||||
panelPower.Location = new Point(10, 764);
|
||||
panelPower.Margin = new Padding(4);
|
||||
panelPower.Name = "panelPower";
|
||||
panelPower.Size = new Size(520, 632);
|
||||
panelPower.Size = new Size(520, 756);
|
||||
panelPower.TabIndex = 43;
|
||||
//
|
||||
// panelApplyPower
|
||||
@@ -798,7 +814,7 @@ namespace GHelper
|
||||
panelApplyPower.AutoSize = true;
|
||||
panelApplyPower.Controls.Add(checkApplyPower);
|
||||
panelApplyPower.Dock = DockStyle.Top;
|
||||
panelApplyPower.Location = new Point(0, 556);
|
||||
panelApplyPower.Location = new Point(0, 680);
|
||||
panelApplyPower.Name = "panelApplyPower";
|
||||
panelApplyPower.Padding = new Padding(15);
|
||||
panelApplyPower.Size = new Size(520, 76);
|
||||
@@ -825,7 +841,7 @@ namespace GHelper
|
||||
panelB0.Controls.Add(labelLeftB0);
|
||||
panelB0.Controls.Add(trackB0);
|
||||
panelB0.Dock = DockStyle.Top;
|
||||
panelB0.Location = new Point(0, 432);
|
||||
panelB0.Location = new Point(0, 556);
|
||||
panelB0.Margin = new Padding(4);
|
||||
panelB0.MaximumSize = new Size(0, 124);
|
||||
panelB0.Name = "panelB0";
|
||||
@@ -874,7 +890,7 @@ namespace GHelper
|
||||
panelC1.Controls.Add(labelLeftC1);
|
||||
panelC1.Controls.Add(trackC1);
|
||||
panelC1.Dock = DockStyle.Top;
|
||||
panelC1.Location = new Point(0, 308);
|
||||
panelC1.Location = new Point(0, 432);
|
||||
panelC1.Margin = new Padding(4);
|
||||
panelC1.MaximumSize = new Size(0, 124);
|
||||
panelC1.Name = "panelC1";
|
||||
@@ -923,7 +939,7 @@ namespace GHelper
|
||||
panelA0.Controls.Add(labelLeftA0);
|
||||
panelA0.Controls.Add(trackA0);
|
||||
panelA0.Dock = DockStyle.Top;
|
||||
panelA0.Location = new Point(0, 184);
|
||||
panelA0.Location = new Point(0, 308);
|
||||
panelA0.Margin = new Padding(4);
|
||||
panelA0.MaximumSize = new Size(0, 124);
|
||||
panelA0.Name = "panelA0";
|
||||
@@ -971,7 +987,7 @@ namespace GHelper
|
||||
panelTitleCPU.Controls.Add(pictureBoxCPU);
|
||||
panelTitleCPU.Controls.Add(labelPowerLimits);
|
||||
panelTitleCPU.Dock = DockStyle.Top;
|
||||
panelTitleCPU.Location = new Point(0, 124);
|
||||
panelTitleCPU.Location = new Point(0, 248);
|
||||
panelTitleCPU.Margin = new Padding(4);
|
||||
panelTitleCPU.Name = "panelTitleCPU";
|
||||
panelTitleCPU.Size = new Size(520, 60);
|
||||
@@ -1004,7 +1020,7 @@ namespace GHelper
|
||||
//
|
||||
panelBoost.Controls.Add(comboBoost);
|
||||
panelBoost.Dock = DockStyle.Top;
|
||||
panelBoost.Location = new Point(0, 60);
|
||||
panelBoost.Location = new Point(0, 184);
|
||||
panelBoost.Margin = new Padding(4);
|
||||
panelBoost.Name = "panelBoost";
|
||||
panelBoost.Size = new Size(520, 64);
|
||||
@@ -1017,7 +1033,7 @@ namespace GHelper
|
||||
panelBoostTitle.Controls.Add(pictureBoost);
|
||||
panelBoostTitle.Controls.Add(labelBoost);
|
||||
panelBoostTitle.Dock = DockStyle.Top;
|
||||
panelBoostTitle.Location = new Point(0, 0);
|
||||
panelBoostTitle.Location = new Point(0, 124);
|
||||
panelBoostTitle.Margin = new Padding(4);
|
||||
panelBoostTitle.Name = "panelBoostTitle";
|
||||
panelBoostTitle.Size = new Size(520, 60);
|
||||
@@ -1046,6 +1062,66 @@ namespace GHelper
|
||||
labelBoost.TabIndex = 39;
|
||||
labelBoost.Text = "CPU Boost";
|
||||
//
|
||||
// panelPowerMode
|
||||
//
|
||||
panelPowerMode.Controls.Add(comboPowerMode);
|
||||
panelPowerMode.Dock = DockStyle.Top;
|
||||
panelPowerMode.Location = new Point(0, 60);
|
||||
panelPowerMode.Margin = new Padding(4);
|
||||
panelPowerMode.Name = "panelPowerMode";
|
||||
panelPowerMode.Size = new Size(520, 64);
|
||||
panelPowerMode.TabIndex = 49;
|
||||
//
|
||||
// comboPowerMode
|
||||
//
|
||||
comboPowerMode.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
comboPowerMode.BorderColor = Color.White;
|
||||
comboPowerMode.ButtonColor = Color.FromArgb(255, 255, 255);
|
||||
comboPowerMode.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||
comboPowerMode.FormattingEnabled = true;
|
||||
comboPowerMode.Items.AddRange(new object[] { "Disabled", "Enabled", "Aggressive", "Efficient Enabled", "Efficient Aggressive", "Aggressive at Guaranteed", "Efficient at Guaranteed" });
|
||||
comboPowerMode.Location = new Point(13, 12);
|
||||
comboPowerMode.Margin = new Padding(4);
|
||||
comboPowerMode.Name = "comboPowerMode";
|
||||
comboPowerMode.Size = new Size(329, 40);
|
||||
comboPowerMode.TabIndex = 42;
|
||||
//
|
||||
// panelPowerModeTItle
|
||||
//
|
||||
panelPowerModeTItle.AutoSize = true;
|
||||
panelPowerModeTItle.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelPowerModeTItle.Controls.Add(picturePowerMode);
|
||||
panelPowerModeTItle.Controls.Add(labelPowerModeTitle);
|
||||
panelPowerModeTItle.Dock = DockStyle.Top;
|
||||
panelPowerModeTItle.Location = new Point(0, 0);
|
||||
panelPowerModeTItle.Margin = new Padding(4);
|
||||
panelPowerModeTItle.Name = "panelPowerModeTItle";
|
||||
panelPowerModeTItle.Size = new Size(520, 60);
|
||||
panelPowerModeTItle.TabIndex = 50;
|
||||
//
|
||||
// picturePowerMode
|
||||
//
|
||||
picturePowerMode.BackgroundImage = Properties.Resources.icons8_gauge_32;
|
||||
picturePowerMode.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
picturePowerMode.InitialImage = null;
|
||||
picturePowerMode.Location = new Point(10, 18);
|
||||
picturePowerMode.Margin = new Padding(4, 2, 4, 10);
|
||||
picturePowerMode.Name = "picturePowerMode";
|
||||
picturePowerMode.Size = new Size(32, 32);
|
||||
picturePowerMode.TabIndex = 40;
|
||||
picturePowerMode.TabStop = false;
|
||||
//
|
||||
// labelPowerModeTitle
|
||||
//
|
||||
labelPowerModeTitle.AutoSize = true;
|
||||
labelPowerModeTitle.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelPowerModeTitle.Location = new Point(46, 18);
|
||||
labelPowerModeTitle.Margin = new Padding(4, 0, 4, 0);
|
||||
labelPowerModeTitle.Name = "labelPowerModeTitle";
|
||||
labelPowerModeTitle.Size = new Size(271, 32);
|
||||
labelPowerModeTitle.TabIndex = 39;
|
||||
labelPowerModeTitle.Text = "Windows Power Mode";
|
||||
//
|
||||
// panelGPU
|
||||
//
|
||||
panelGPU.AutoSize = true;
|
||||
@@ -1053,13 +1129,14 @@ namespace GHelper
|
||||
panelGPU.Controls.Add(panelGPUBoost);
|
||||
panelGPU.Controls.Add(panelGPUMemory);
|
||||
panelGPU.Controls.Add(panelGPUCore);
|
||||
panelGPU.Controls.Add(panelGPUClockLimit);
|
||||
panelGPU.Controls.Add(panelTitleGPU);
|
||||
panelGPU.Dock = DockStyle.Top;
|
||||
panelGPU.Location = new Point(10, 66);
|
||||
panelGPU.Margin = new Padding(4);
|
||||
panelGPU.Name = "panelGPU";
|
||||
panelGPU.Padding = new Padding(0, 0, 0, 18);
|
||||
panelGPU.Size = new Size(520, 574);
|
||||
panelGPU.Size = new Size(520, 698);
|
||||
panelGPU.TabIndex = 44;
|
||||
panelGPU.Visible = false;
|
||||
//
|
||||
@@ -1071,7 +1148,7 @@ namespace GHelper
|
||||
panelGPUTemp.Controls.Add(labelGPUTempTitle);
|
||||
panelGPUTemp.Controls.Add(trackGPUTemp);
|
||||
panelGPUTemp.Dock = DockStyle.Top;
|
||||
panelGPUTemp.Location = new Point(0, 432);
|
||||
panelGPUTemp.Location = new Point(0, 556);
|
||||
panelGPUTemp.Margin = new Padding(4);
|
||||
panelGPUTemp.MaximumSize = new Size(0, 124);
|
||||
panelGPUTemp.Name = "panelGPUTemp";
|
||||
@@ -1120,7 +1197,7 @@ namespace GHelper
|
||||
panelGPUBoost.Controls.Add(labelGPUBoostTitle);
|
||||
panelGPUBoost.Controls.Add(trackGPUBoost);
|
||||
panelGPUBoost.Dock = DockStyle.Top;
|
||||
panelGPUBoost.Location = new Point(0, 308);
|
||||
panelGPUBoost.Location = new Point(0, 432);
|
||||
panelGPUBoost.Margin = new Padding(4);
|
||||
panelGPUBoost.MaximumSize = new Size(0, 124);
|
||||
panelGPUBoost.Name = "panelGPUBoost";
|
||||
@@ -1169,7 +1246,7 @@ namespace GHelper
|
||||
panelGPUMemory.Controls.Add(labelGPUMemoryTitle);
|
||||
panelGPUMemory.Controls.Add(trackGPUMemory);
|
||||
panelGPUMemory.Dock = DockStyle.Top;
|
||||
panelGPUMemory.Location = new Point(0, 184);
|
||||
panelGPUMemory.Location = new Point(0, 308);
|
||||
panelGPUMemory.Margin = new Padding(4);
|
||||
panelGPUMemory.MaximumSize = new Size(0, 124);
|
||||
panelGPUMemory.Name = "panelGPUMemory";
|
||||
@@ -1218,7 +1295,7 @@ namespace GHelper
|
||||
panelGPUCore.Controls.Add(trackGPUCore);
|
||||
panelGPUCore.Controls.Add(labelGPUCoreTitle);
|
||||
panelGPUCore.Dock = DockStyle.Top;
|
||||
panelGPUCore.Location = new Point(0, 60);
|
||||
panelGPUCore.Location = new Point(0, 184);
|
||||
panelGPUCore.Margin = new Padding(4);
|
||||
panelGPUCore.MaximumSize = new Size(0, 124);
|
||||
panelGPUCore.Name = "panelGPUCore";
|
||||
@@ -1382,6 +1459,56 @@ namespace GHelper
|
||||
buttonCPU.TextImageRelation = TextImageRelation.ImageBeforeText;
|
||||
buttonCPU.UseVisualStyleBackColor = false;
|
||||
//
|
||||
// panelGPUClockLimit
|
||||
//
|
||||
panelGPUClockLimit.AutoSize = true;
|
||||
panelGPUClockLimit.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelGPUClockLimit.Controls.Add(labelGPUClockLimit);
|
||||
panelGPUClockLimit.Controls.Add(trackGPUClockLimit);
|
||||
panelGPUClockLimit.Controls.Add(labelGPUClockLimitTitle);
|
||||
panelGPUClockLimit.Dock = DockStyle.Top;
|
||||
panelGPUClockLimit.Location = new Point(0, 60);
|
||||
panelGPUClockLimit.Margin = new Padding(4);
|
||||
panelGPUClockLimit.MaximumSize = new Size(0, 124);
|
||||
panelGPUClockLimit.Name = "panelGPUClockLimit";
|
||||
panelGPUClockLimit.Size = new Size(520, 124);
|
||||
panelGPUClockLimit.TabIndex = 48;
|
||||
//
|
||||
// labelGPUClockLimit
|
||||
//
|
||||
labelGPUClockLimit.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelGPUClockLimit.Location = new Point(326, 16);
|
||||
labelGPUClockLimit.Margin = new Padding(4, 0, 4, 0);
|
||||
labelGPUClockLimit.Name = "labelGPUClockLimit";
|
||||
labelGPUClockLimit.Size = new Size(176, 32);
|
||||
labelGPUClockLimit.TabIndex = 29;
|
||||
labelGPUClockLimit.Text = "1500 MHz";
|
||||
labelGPUClockLimit.TextAlign = ContentAlignment.TopRight;
|
||||
//
|
||||
// trackGPUClockLimit
|
||||
//
|
||||
trackGPUClockLimit.LargeChange = 100;
|
||||
trackGPUClockLimit.Location = new Point(6, 48);
|
||||
trackGPUClockLimit.Margin = new Padding(4, 2, 4, 2);
|
||||
trackGPUClockLimit.Maximum = 3000;
|
||||
trackGPUClockLimit.Name = "trackGPUClockLimit";
|
||||
trackGPUClockLimit.RightToLeft = RightToLeft.No;
|
||||
trackGPUClockLimit.Size = new Size(496, 90);
|
||||
trackGPUClockLimit.SmallChange = 10;
|
||||
trackGPUClockLimit.TabIndex = 18;
|
||||
trackGPUClockLimit.TickFrequency = 50;
|
||||
trackGPUClockLimit.TickStyle = TickStyle.TopLeft;
|
||||
//
|
||||
// labelGPUClockLimitTitle
|
||||
//
|
||||
labelGPUClockLimitTitle.AutoSize = true;
|
||||
labelGPUClockLimitTitle.Location = new Point(10, 16);
|
||||
labelGPUClockLimitTitle.Margin = new Padding(4, 0, 4, 0);
|
||||
labelGPUClockLimitTitle.Name = "labelGPUClockLimitTitle";
|
||||
labelGPUClockLimitTitle.Size = new Size(188, 32);
|
||||
labelGPUClockLimitTitle.TabIndex = 17;
|
||||
labelGPUClockLimitTitle.Text = "Core Clock Limit";
|
||||
//
|
||||
// Fans
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(192F, 192F);
|
||||
@@ -1452,6 +1579,10 @@ namespace GHelper
|
||||
panelBoostTitle.ResumeLayout(false);
|
||||
panelBoostTitle.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoost).EndInit();
|
||||
panelPowerMode.ResumeLayout(false);
|
||||
panelPowerModeTItle.ResumeLayout(false);
|
||||
panelPowerModeTItle.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)picturePowerMode).EndInit();
|
||||
panelGPU.ResumeLayout(false);
|
||||
panelGPU.PerformLayout();
|
||||
panelGPUTemp.ResumeLayout(false);
|
||||
@@ -1471,6 +1602,9 @@ namespace GHelper
|
||||
((System.ComponentModel.ISupportInitialize)pictureGPU).EndInit();
|
||||
panelNav.ResumeLayout(false);
|
||||
tableNav.ResumeLayout(false);
|
||||
panelGPUClockLimit.ResumeLayout(false);
|
||||
panelGPUClockLimit.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)trackGPUClockLimit).EndInit();
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
||||
}
|
||||
@@ -1568,5 +1702,14 @@ namespace GHelper
|
||||
private TrackBar trackTemp;
|
||||
private Panel panelAdvancedAlways;
|
||||
private RCheckBox checkApplyUV;
|
||||
private Panel panelPowerMode;
|
||||
private RComboBox comboPowerMode;
|
||||
private Panel panelPowerModeTItle;
|
||||
private PictureBox picturePowerMode;
|
||||
private Label labelPowerModeTitle;
|
||||
private Panel panelGPUClockLimit;
|
||||
private Label labelGPUClockLimit;
|
||||
private TrackBar trackGPUClockLimit;
|
||||
private Label labelGPUClockLimitTitle;
|
||||
}
|
||||
}
|
||||
140
app/Fans.cs
140
app/Fans.cs
@@ -21,6 +21,7 @@ namespace GHelper
|
||||
static int MinRPM, MaxRPM;
|
||||
|
||||
static bool gpuVisible = true;
|
||||
static bool fanRpm = true;
|
||||
|
||||
const int fansMax = 100;
|
||||
|
||||
@@ -59,7 +60,7 @@ namespace GHelper
|
||||
InitTheme(true);
|
||||
|
||||
MinRPM = 18;
|
||||
MaxRPM = HardwareControl.GetFanMax();
|
||||
MaxRPM = HardwareControl.fanMax;
|
||||
labelTip.Visible = false;
|
||||
labelTip.BackColor = Color.Transparent;
|
||||
|
||||
@@ -77,15 +78,24 @@ namespace GHelper
|
||||
|
||||
chartCPU.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.CPU);
|
||||
chartCPU.MouseUp += ChartCPU_MouseUp;
|
||||
chartCPU.MouseLeave += ChartCPU_MouseLeave;
|
||||
|
||||
chartGPU.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.GPU);
|
||||
chartGPU.MouseUp += ChartCPU_MouseUp;
|
||||
chartGPU.MouseLeave += ChartCPU_MouseLeave;
|
||||
|
||||
chartMid.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.Mid);
|
||||
chartMid.MouseUp += ChartCPU_MouseUp;
|
||||
chartMid.MouseLeave += ChartCPU_MouseLeave;
|
||||
|
||||
chartXGM.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.XGM);
|
||||
chartXGM.MouseUp += ChartCPU_MouseUp;
|
||||
chartXGM.MouseLeave += ChartCPU_MouseLeave;
|
||||
|
||||
chartCPU.MouseClick += ChartCPU_MouseClick;
|
||||
chartGPU.MouseClick += ChartCPU_MouseClick;
|
||||
chartMid.MouseClick += ChartCPU_MouseClick;
|
||||
chartXGM.MouseClick += ChartCPU_MouseClick;
|
||||
|
||||
buttonReset.Click += ButtonReset_Click;
|
||||
|
||||
@@ -109,6 +119,9 @@ namespace GHelper
|
||||
checkApplyFans.Click += CheckApplyFans_Click;
|
||||
checkApplyPower.Click += CheckApplyPower_Click;
|
||||
|
||||
trackGPUClockLimit.Minimum = NvidiaGpuControl.MinClockLimit;
|
||||
trackGPUClockLimit.Maximum = NvidiaGpuControl.MaxClockLimit;
|
||||
|
||||
trackGPUCore.Minimum = NvidiaGpuControl.MinCoreOffset;
|
||||
trackGPUCore.Maximum = NvidiaGpuControl.MaxCoreOffset;
|
||||
|
||||
@@ -121,6 +134,7 @@ namespace GHelper
|
||||
trackGPUTemp.Minimum = AsusACPI.MinGPUTemp;
|
||||
trackGPUTemp.Maximum = AsusACPI.MaxGPUTemp;
|
||||
|
||||
trackGPUClockLimit.Scroll += trackGPUClockLimit_Scroll;
|
||||
trackGPUCore.Scroll += trackGPU_Scroll;
|
||||
trackGPUMemory.Scroll += trackGPU_Scroll;
|
||||
|
||||
@@ -132,6 +146,8 @@ namespace GHelper
|
||||
trackGPUBoost.MouseUp += TrackGPU_MouseUp;
|
||||
trackGPUTemp.MouseUp += TrackGPU_MouseUp;
|
||||
|
||||
trackGPUClockLimit.MouseUp += TrackGPU_MouseUp;
|
||||
|
||||
//labelInfo.MaximumSize = new Size(280, 0);
|
||||
labelFansResult.Visible = false;
|
||||
|
||||
@@ -145,11 +161,17 @@ namespace GHelper
|
||||
trackTemp.Minimum = RyzenControl.MinTemp;
|
||||
trackTemp.Maximum = RyzenControl.MaxTemp;
|
||||
|
||||
comboPowerMode.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||
comboPowerMode.DataSource = new BindingSource(PowerNative.powerModes, null);
|
||||
comboPowerMode.DisplayMember = "Value";
|
||||
comboPowerMode.ValueMember = "Key";
|
||||
|
||||
FillModes();
|
||||
InitAll();
|
||||
|
||||
comboBoost.SelectedValueChanged += ComboBoost_Changed;
|
||||
comboPowerMode.SelectedValueChanged += ComboPowerMode_Changed;
|
||||
|
||||
|
||||
comboModes.SelectionChangeCommitted += ComboModes_SelectedValueChanged;
|
||||
comboModes.TextChanged += ComboModes_TextChanged;
|
||||
@@ -184,6 +206,25 @@ namespace GHelper
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void ChartCPU_MouseClick(object? sender, MouseEventArgs e)
|
||||
{
|
||||
if (sender is null) return;
|
||||
Chart chart = (Chart)sender;
|
||||
|
||||
HitTestResult result = chart.HitTest(e.X, e.Y);
|
||||
|
||||
if ((result.ChartElementType == ChartElementType.AxisLabels || result.ChartElementType == ChartElementType.Axis) && result.Axis == chart.ChartAreas[0].AxisY)
|
||||
{
|
||||
fanRpm = !fanRpm;
|
||||
SetAxis(chartCPU, AsusFan.CPU);
|
||||
SetAxis(chartGPU, AsusFan.GPU);
|
||||
if (chartMid.Visible) SetAxis(chartMid, AsusFan.Mid);
|
||||
if (chartXGM.Visible) SetAxis(chartXGM, AsusFan.XGM);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void Fans_FormClosed(object? sender, FormClosedEventArgs e)
|
||||
{
|
||||
//Because windows charts seem to eat a lot of memory :(
|
||||
@@ -201,7 +242,7 @@ namespace GHelper
|
||||
InitMode();
|
||||
InitFans();
|
||||
InitPower();
|
||||
InitBoost();
|
||||
InitPowerPlan();
|
||||
InitUV();
|
||||
InitGPU();
|
||||
}
|
||||
@@ -293,7 +334,7 @@ namespace GHelper
|
||||
panelUViGPU.Visible = false;
|
||||
}
|
||||
|
||||
if (!RyzenControl.IsSupportedUV())
|
||||
if (!RyzenControl.IsSupportedUViGPU())
|
||||
{
|
||||
panelUViGPU.Visible = false;
|
||||
}
|
||||
@@ -429,24 +470,29 @@ namespace GHelper
|
||||
|
||||
int gpu_boost = AppConfig.GetMode("gpu_boost");
|
||||
int gpu_temp = AppConfig.GetMode("gpu_temp");
|
||||
|
||||
int core = AppConfig.GetMode("gpu_core");
|
||||
int memory = AppConfig.GetMode("gpu_memory");
|
||||
int clock_limit = AppConfig.GetMode("gpu_clock_limit");
|
||||
|
||||
if (gpu_boost < 0) gpu_boost = AsusACPI.MaxGPUBoost;
|
||||
if (gpu_temp < 0) gpu_temp = AsusACPI.MaxGPUTemp;
|
||||
|
||||
if (core == -1) core = 0;
|
||||
if (memory == -1) memory = 0;
|
||||
if (clock_limit == -1) clock_limit = NvidiaGpuControl.MaxClockLimit;
|
||||
|
||||
//if (readClocks)
|
||||
//{
|
||||
int status = nvControl.GetClocks(out int current_core, out int current_memory);
|
||||
if (status != -1)
|
||||
if (nvControl.GetClocks(out int current_core, out int current_memory))
|
||||
{
|
||||
core = current_core;
|
||||
memory = current_memory;
|
||||
}
|
||||
|
||||
int _clockLimit = nvControl.GetMaxGPUCLock();
|
||||
|
||||
if (_clockLimit == 0) clock_limit = NvidiaGpuControl.MaxClockLimit;
|
||||
else if (_clockLimit > 0) clock_limit = _clockLimit;
|
||||
|
||||
try
|
||||
{
|
||||
labelGPU.Text = nvControl.FullName;
|
||||
@@ -457,6 +503,7 @@ namespace GHelper
|
||||
}
|
||||
|
||||
//}
|
||||
trackGPUClockLimit.Value = Math.Max(Math.Min(clock_limit, NvidiaGpuControl.MaxClockLimit), NvidiaGpuControl.MinClockLimit);
|
||||
|
||||
trackGPUCore.Value = Math.Max(Math.Min(core, NvidiaGpuControl.MaxCoreOffset), NvidiaGpuControl.MinCoreOffset);
|
||||
trackGPUMemory.Value = Math.Max(Math.Min(memory, NvidiaGpuControl.MaxMemoryOffset), NvidiaGpuControl.MinMemoryOffset);
|
||||
@@ -482,8 +529,24 @@ namespace GHelper
|
||||
{
|
||||
labelGPUCore.Text = $"{trackGPUCore.Value} MHz";
|
||||
labelGPUMemory.Text = $"{trackGPUMemory.Value} MHz";
|
||||
|
||||
labelGPUBoost.Text = $"{trackGPUBoost.Value}W";
|
||||
labelGPUTemp.Text = $"{trackGPUTemp.Value}°C";
|
||||
|
||||
if (trackGPUClockLimit.Value >= NvidiaGpuControl.MaxClockLimit)
|
||||
labelGPUClockLimit.Text = "Default";
|
||||
else
|
||||
labelGPUClockLimit.Text = $"{trackGPUClockLimit.Value} MHz";
|
||||
}
|
||||
|
||||
private void trackGPUClockLimit_Scroll(object? sender, EventArgs e)
|
||||
{
|
||||
|
||||
int maxClock = (int)Math.Round((float)trackGPUClockLimit.Value / 50) * 50;
|
||||
|
||||
trackGPUClockLimit.Value = maxClock;
|
||||
AppConfig.SetMode("gpu_clock_limit", maxClock);
|
||||
VisualiseGPUSettings();
|
||||
}
|
||||
|
||||
private void trackGPU_Scroll(object? sender, EventArgs e)
|
||||
@@ -495,6 +558,7 @@ namespace GHelper
|
||||
AppConfig.SetMode("gpu_core", trackGPUCore.Value);
|
||||
AppConfig.SetMode("gpu_memory", trackGPUMemory.Value);
|
||||
|
||||
|
||||
VisualiseGPUSettings();
|
||||
|
||||
}
|
||||
@@ -512,9 +576,26 @@ namespace GHelper
|
||||
if (percentage == 0) return "OFF";
|
||||
|
||||
int Max = MaxRPM;
|
||||
if (device == AsusFan.XGM ) Max = 72;
|
||||
if (device == AsusFan.XGM) Max = 72;
|
||||
|
||||
return (200 * Math.Round((float)(MinRPM * 100 + (Max - MinRPM) * percentage) / 200)).ToString() + unit;
|
||||
if (fanRpm)
|
||||
return (200 * Math.Round((float)(MinRPM * 100 + (Max - MinRPM) * percentage) / 200)).ToString() + unit;
|
||||
else
|
||||
return percentage + "%";
|
||||
}
|
||||
|
||||
void SetAxis(Chart chart, AsusFan device)
|
||||
{
|
||||
|
||||
chart.ChartAreas[0].AxisY.CustomLabels.Clear();
|
||||
|
||||
for (int i = 0; i <= fansMax - 10; i += 10)
|
||||
{
|
||||
chart.ChartAreas[0].AxisY.CustomLabels.Add(i - 2, i + 2, ChartPercToRPM(i, device));
|
||||
}
|
||||
|
||||
chart.ChartAreas[0].AxisY.CustomLabels.Add(fansMax - 2, fansMax + 2, Properties.Strings.RPM);
|
||||
chart.ChartAreas[0].AxisY.Interval = 10;
|
||||
}
|
||||
|
||||
void SetChart(Chart chart, AsusFan device)
|
||||
@@ -554,12 +635,7 @@ namespace GHelper
|
||||
chart.ChartAreas[0].AxisX.LineColor = chartGrid;
|
||||
chart.ChartAreas[0].AxisY.LineColor = chartGrid;
|
||||
|
||||
for (int i = 0; i <= fansMax - 10; i += 10)
|
||||
chart.ChartAreas[0].AxisY.CustomLabels.Add(i - 2, i + 2, ChartPercToRPM(i, device));
|
||||
|
||||
chart.ChartAreas[0].AxisY.CustomLabels.Add(fansMax - 2, fansMax + 2, Properties.Strings.RPM);
|
||||
|
||||
chart.ChartAreas[0].AxisY.Interval = 10;
|
||||
SetAxis(chart, device);
|
||||
|
||||
if (chart.Legends.Count > 0)
|
||||
chart.Legends[0].Enabled = false;
|
||||
@@ -594,11 +670,26 @@ namespace GHelper
|
||||
}
|
||||
|
||||
|
||||
public void InitBoost()
|
||||
public void InitPowerPlan()
|
||||
{
|
||||
int boost = PowerNative.GetCPUBoost();
|
||||
if (boost >= 0)
|
||||
comboBoost.SelectedIndex = Math.Min(boost, comboBoost.Items.Count - 1);
|
||||
|
||||
string powerMode = PowerNative.GetPowerMode();
|
||||
comboPowerMode.SelectedValue = powerMode;
|
||||
|
||||
}
|
||||
|
||||
private void ComboPowerMode_Changed(object? sender, EventArgs e)
|
||||
{
|
||||
string powerMode = (string)comboPowerMode.SelectedValue;
|
||||
PowerNative.SetPowerMode(powerMode);
|
||||
|
||||
if (PowerNative.GetDefaultPowerMode(Modes.GetCurrentBase()) != powerMode)
|
||||
AppConfig.SetMode("powermode", powerMode);
|
||||
else
|
||||
AppConfig.RemoveMode("powermode");
|
||||
}
|
||||
|
||||
private void ComboBoost_Changed(object? sender, EventArgs e)
|
||||
@@ -871,18 +962,24 @@ namespace GHelper
|
||||
|
||||
modeControl.ResetPerformanceMode();
|
||||
|
||||
InitPowerPlan();
|
||||
|
||||
if (Program.acpi.IsXGConnected()) AsusUSB.ResetXGM();
|
||||
|
||||
|
||||
if (gpuVisible)
|
||||
{
|
||||
trackGPUClockLimit.Value = NvidiaGpuControl.MaxClockLimit;
|
||||
trackGPUCore.Value = 0;
|
||||
trackGPUMemory.Value = 0;
|
||||
trackGPUBoost.Value = AsusACPI.MaxGPUBoost;
|
||||
trackGPUTemp.Value = AsusACPI.MaxGPUTemp;
|
||||
|
||||
AppConfig.SetMode("gpu_clock_limit", trackGPUClockLimit.Value);
|
||||
|
||||
AppConfig.SetMode("gpu_boost", trackGPUBoost.Value);
|
||||
AppConfig.SetMode("gpu_temp", trackGPUTemp.Value);
|
||||
|
||||
AppConfig.SetMode("gpu_core", trackGPUCore.Value);
|
||||
AppConfig.SetMode("gpu_memory", trackGPUMemory.Value);
|
||||
|
||||
@@ -893,7 +990,7 @@ namespace GHelper
|
||||
|
||||
}
|
||||
|
||||
private void ChartCPU_MouseUp(object? sender, MouseEventArgs e)
|
||||
private void Chart_Save()
|
||||
{
|
||||
curPoint = null;
|
||||
curIndex = -1;
|
||||
@@ -910,8 +1007,17 @@ namespace GHelper
|
||||
SaveProfile(seriesXGM, AsusFan.XGM);
|
||||
|
||||
modeControl.AutoFans();
|
||||
}
|
||||
|
||||
private void ChartCPU_MouseUp(object? sender, MouseEventArgs e)
|
||||
{
|
||||
Chart_Save();
|
||||
}
|
||||
|
||||
|
||||
private void ChartCPU_MouseLeave(object? sender, EventArgs e)
|
||||
{
|
||||
Chart_Save();
|
||||
}
|
||||
|
||||
private void ChartCPU_MouseMove(object? sender, MouseEventArgs e, AsusFan device)
|
||||
|
||||
@@ -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.102</AssemblyVersion>
|
||||
<AssemblyVersion>0.119</AssemblyVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
||||
@@ -10,6 +10,10 @@ namespace GHelper.Gpu
|
||||
SettingsForm settings;
|
||||
ScreenControl screenControl = new ScreenControl();
|
||||
|
||||
public static int gpuMode;
|
||||
public static bool? gpuExists = null;
|
||||
|
||||
|
||||
public GPUModeControl(SettingsForm settingsForm)
|
||||
{
|
||||
settings = settingsForm;
|
||||
@@ -23,37 +27,44 @@ namespace GHelper.Gpu
|
||||
Logger.WriteLine("Eco flag : " + eco);
|
||||
Logger.WriteLine("Mux flag : " + mux);
|
||||
|
||||
int GpuMode;
|
||||
|
||||
if (mux == 0)
|
||||
{
|
||||
GpuMode = AsusACPI.GPUModeUltimate;
|
||||
gpuMode = AsusACPI.GPUModeUltimate;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (eco == 1)
|
||||
GpuMode = AsusACPI.GPUModeEco;
|
||||
gpuMode = AsusACPI.GPUModeEco;
|
||||
else
|
||||
GpuMode = AsusACPI.GPUModeStandard;
|
||||
gpuMode = AsusACPI.GPUModeStandard;
|
||||
|
||||
// Ultimate mode not supported
|
||||
if (mux != 1) settings.HideUltimateMode();
|
||||
|
||||
// GPU mode not supported
|
||||
if (eco < 0 && mux < 0) settings.HideGPUModes();
|
||||
if (eco < 0 && mux < 0)
|
||||
{
|
||||
if (gpuExists is null)
|
||||
gpuExists = HardwareControl.FormatFan(Program.acpi.DeviceGet(AsusACPI.GPU_Fan)) is not null;
|
||||
|
||||
settings.HideGPUModes((bool)gpuExists);
|
||||
}
|
||||
}
|
||||
|
||||
AppConfig.Set("gpu_mode", GpuMode);
|
||||
AppConfig.Set("gpu_mode", gpuMode);
|
||||
settings.VisualiseGPUMode(gpuMode);
|
||||
|
||||
AsusUSB.ApplyGPUColor();
|
||||
|
||||
InitXGM();
|
||||
settings.VisualiseGPUMode(GpuMode);
|
||||
}
|
||||
|
||||
|
||||
public void SetGPUMode(int GPUMode)
|
||||
|
||||
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 +90,11 @@ namespace GHelper.Gpu
|
||||
DialogResult dialogResult = MessageBox.Show(Properties.Strings.AlertUltimateOn, Properties.Strings.AlertUltimateTitle, MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
if (AppConfig.NoAutoUltimate())
|
||||
{
|
||||
Program.acpi.SetGPUEco(0);
|
||||
Thread.Sleep(100);
|
||||
}
|
||||
Program.acpi.DeviceSet(AsusACPI.GPUMux, 0, "GPUMux");
|
||||
restart = true;
|
||||
changed = true;
|
||||
@@ -125,6 +141,7 @@ namespace GHelper.Gpu
|
||||
|
||||
if (eco == 1)
|
||||
{
|
||||
/*
|
||||
if (NvidiaSmi.GetDisplayActiveStatus())
|
||||
{
|
||||
DialogResult dialogResult = MessageBox.Show(Properties.Strings.EnableOptimusText, Properties.Strings.EnableOptimusTitle, MessageBoxButtons.YesNo);
|
||||
@@ -134,6 +151,7 @@ namespace GHelper.Gpu
|
||||
return;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
HardwareControl.KillGPUApps();
|
||||
}
|
||||
@@ -166,10 +184,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;
|
||||
|
||||
}
|
||||
|
||||
@@ -177,7 +199,7 @@ namespace GHelper.Gpu
|
||||
{
|
||||
|
||||
bool GpuAuto = AppConfig.Is("gpu_auto");
|
||||
bool ForceGPU = AppConfig.ContainsModel("503") || AppConfig.Is("gpu_fix");
|
||||
bool ForceGPU = AppConfig.IsForceSetGPUMode();
|
||||
|
||||
int GpuMode = AppConfig.Get("gpu_mode");
|
||||
|
||||
@@ -188,14 +210,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,26 +276,14 @@ 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();
|
||||
int activated = Program.acpi.DeviceGet(AsusACPI.GPUXG);
|
||||
settings.VisualizeXGM(connected, activated == 1);
|
||||
if (Program.acpi.IsXGConnected())
|
||||
{
|
||||
//Program.acpi.DeviceSet(AsusACPI.GPUXGInit, 1, "XG Init");
|
||||
AsusUSB.InitXGM();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void ToggleXGM()
|
||||
@@ -287,7 +295,9 @@ namespace GHelper.Gpu
|
||||
|
||||
if (Program.acpi.DeviceGet(AsusACPI.GPUXG) == 1)
|
||||
{
|
||||
AsusUSB.ResetXGM();
|
||||
HardwareControl.KillGPUApps();
|
||||
|
||||
DialogResult dialogResult = MessageBox.Show("Did you close all applications running on XG Mobile?", "Disabling XG Mobile", MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
@@ -298,12 +308,18 @@ namespace GHelper.Gpu
|
||||
else
|
||||
{
|
||||
Program.acpi.DeviceSet(AsusACPI.GPUXG, 1, "GPU XGM");
|
||||
|
||||
InitXGM();
|
||||
|
||||
AsusUSB.ApplyXGMLight(AppConfig.Is("xmg_light"));
|
||||
|
||||
await Task.Delay(TimeSpan.FromSeconds(15));
|
||||
|
||||
if (AppConfig.IsMode("auto_apply"))
|
||||
AsusUSB.SetXGMFan(AppConfig.GetFanConfig(AsusFan.XGM));
|
||||
|
||||
HardwareControl.RecreateGpuControl();
|
||||
|
||||
}
|
||||
|
||||
settings.Invoke(delegate
|
||||
@@ -325,7 +341,7 @@ namespace GHelper.Gpu
|
||||
// https://github.com/seerge/g-helper/pull/855
|
||||
public void StandardModeFix()
|
||||
{
|
||||
if (!AppConfig.Is("gpu_fix")) return; // No config entry
|
||||
if (!AppConfig.IsGPUFix()) return; // No config entry
|
||||
if (Program.acpi.DeviceGet(AsusACPI.GPUMux) == 0) return; // Ultimate mode
|
||||
|
||||
Logger.WriteLine("Forcing Standard Mode on shutdown / hibernation");
|
||||
|
||||
@@ -18,6 +18,9 @@ public class NvidiaGpuControl : IGpuControl
|
||||
public const int MinCoreOffset = -250;
|
||||
public const int MinMemoryOffset = -250;
|
||||
|
||||
public const int MinClockLimit = 1000;
|
||||
public const int MaxClockLimit = 3000;
|
||||
|
||||
private static PhysicalGPU? _internalGpu;
|
||||
|
||||
public NvidiaGpuControl()
|
||||
@@ -72,11 +75,11 @@ public class NvidiaGpuControl : IGpuControl
|
||||
Logger.WriteLine(ex.Message);
|
||||
}
|
||||
|
||||
//NVIDIA.RestartDisplayDriver();
|
||||
//GeneralApi.RestartDisplayDriver();
|
||||
}
|
||||
|
||||
|
||||
public int GetClocks(out int core, out int memory)
|
||||
public bool GetClocks(out int core, out int memory)
|
||||
{
|
||||
PhysicalGPU internalGpu = _internalGpu!;
|
||||
|
||||
@@ -95,27 +98,24 @@ public class NvidiaGpuControl : IGpuControl
|
||||
Logger.WriteLine("GPU VOLT:" + delta.IsEditable + " - " + delta.ValueDeltaInMicroVolt.DeltaValue);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return true;
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine("GET GPU CLOCKS:" + ex.Message);
|
||||
core = memory = 0;
|
||||
return -1;
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public bool RestartGPU()
|
||||
private bool RunPowershellCommand(string script)
|
||||
{
|
||||
try
|
||||
{
|
||||
string script = @"$device = Get-PnpDevice | Where-Object { $_.FriendlyName -imatch 'NVIDIA' -and $_.Class -eq 'Display' }; Disable-PnpDevice $device.InstanceId -Confirm:$false; Start-Sleep -Seconds 3; Enable-PnpDevice $device.InstanceId -Confirm:$false";
|
||||
Logger.WriteLine(script);
|
||||
ProcessHelper.RunCMD("powershell", script);
|
||||
//Thread.Sleep(2000);
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -123,27 +123,71 @@ public class NvidiaGpuControl : IGpuControl
|
||||
Logger.WriteLine(ex.ToString());
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int SetClocksFromConfig()
|
||||
public int GetMaxGPUCLock()
|
||||
{
|
||||
int core = AppConfig.Get("gpu_core", 0);
|
||||
int memory = AppConfig.Get("gpu_memory", 0);
|
||||
int status = SetClocks(core, memory);
|
||||
return status;
|
||||
PhysicalGPU internalGpu = _internalGpu!;
|
||||
try
|
||||
{
|
||||
PrivateClockBoostLockV2 data = GPUApi.GetClockBoostLock(internalGpu.Handle);
|
||||
int limit = (int)data.ClockBoostLocks[0].VoltageInMicroV / 1000;
|
||||
Logger.WriteLine("GET CLOCK LIMIT: " + limit);
|
||||
return limit;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine("GET CLOCK LIMIT: " + ex.Message);
|
||||
return -1;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public int SetClocks(int core, int memory, int voltage = 0)
|
||||
|
||||
public int SetMaxGPUClock(int clock)
|
||||
{
|
||||
|
||||
if (clock < MinClockLimit || clock >= MaxClockLimit) clock = 0;
|
||||
|
||||
int _clockLimit = GetMaxGPUCLock();
|
||||
|
||||
if (_clockLimit != clock)
|
||||
{
|
||||
if (clock > 0) RunPowershellCommand($"nvidia-smi -lgc 0,{clock}");
|
||||
else RunPowershellCommand($"nvidia-smi -rgc");
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public bool RestartGPU()
|
||||
{
|
||||
return RunPowershellCommand(@"$device = Get-PnpDevice | Where-Object { $_.FriendlyName -imatch 'NVIDIA' -and $_.Class -eq 'Display' }; Disable-PnpDevice $device.InstanceId -Confirm:$false; Start-Sleep -Seconds 5; Enable-PnpDevice $device.InstanceId -Confirm:$false");
|
||||
}
|
||||
|
||||
|
||||
public int SetClocks(int core, int memory)
|
||||
{
|
||||
|
||||
if (core < MinCoreOffset || core > MaxCoreOffset) return 0;
|
||||
if (memory < MinMemoryOffset || memory > MaxMemoryOffset) return 0;
|
||||
|
||||
if (GetClocks(out int currentCore, out int currentMemory))
|
||||
{
|
||||
if (Math.Abs(core - currentCore) < 5 && Math.Abs(memory - currentMemory) < 5) return 0;
|
||||
}
|
||||
|
||||
PhysicalGPU internalGpu = _internalGpu!;
|
||||
|
||||
var coreClock = new PerformanceStates20ClockEntryV1(PublicClockDomain.Graphics, new PerformanceStates20ParameterDelta(core * 1000));
|
||||
var memoryClock = new PerformanceStates20ClockEntryV1(PublicClockDomain.Memory, new PerformanceStates20ParameterDelta(memory * 1000));
|
||||
var voltageEntry = new PerformanceStates20BaseVoltageEntryV1(PerformanceVoltageDomain.Core, new PerformanceStates20ParameterDelta(voltage));
|
||||
//var voltageEntry = new PerformanceStates20BaseVoltageEntryV1(PerformanceVoltageDomain.Core, new PerformanceStates20ParameterDelta(voltage));
|
||||
|
||||
PerformanceStates20ClockEntryV1[] clocks = { coreClock, memoryClock };
|
||||
PerformanceStates20BaseVoltageEntryV1[] voltages = { };
|
||||
@@ -163,8 +207,6 @@ public class NvidiaGpuControl : IGpuControl
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -9,13 +9,22 @@ using System.Management;
|
||||
|
||||
public static class HardwareControl
|
||||
{
|
||||
|
||||
const int DEFAULT_FAN_MAX = 58;
|
||||
const int INADEQUATE_MAX = 80;
|
||||
|
||||
public static IGpuControl? GpuControl;
|
||||
|
||||
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;
|
||||
@@ -26,21 +35,48 @@ public static class HardwareControl
|
||||
|
||||
static long lastUpdate;
|
||||
|
||||
public static int GetFanMax()
|
||||
{
|
||||
int max = 58;
|
||||
int configMax = AppConfig.Get("fan_max");
|
||||
if (configMax > 80) configMax = 0; // skipping inadvequate settings
|
||||
static int _fanMax = DEFAULT_FAN_MAX;
|
||||
static bool _fanRpm = false;
|
||||
|
||||
if (AppConfig.ContainsModel("401")) max = 72;
|
||||
else if (AppConfig.ContainsModel("503")) max = 68;
|
||||
return Math.Max(max, configMax);
|
||||
public static int fanMax
|
||||
{
|
||||
get
|
||||
{
|
||||
return _fanMax;
|
||||
}
|
||||
set
|
||||
{
|
||||
AppConfig.Set("fan_max", value);
|
||||
_fanMax = value;
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetFanMax(int fan)
|
||||
public static bool fanRpm
|
||||
{
|
||||
AppConfig.Set("fan_max", fan);
|
||||
get
|
||||
{
|
||||
return _fanRpm;
|
||||
}
|
||||
set
|
||||
{
|
||||
AppConfig.Set("fan_rpm", value ? 1 : 0);
|
||||
_fanRpm = value;
|
||||
}
|
||||
}
|
||||
|
||||
static HardwareControl()
|
||||
{
|
||||
_fanMax = AppConfig.Get("fan_max");
|
||||
if (_fanMax > INADEQUATE_MAX) _fanMax = -1; // skipping inadvequate settings
|
||||
|
||||
if (_fanMax < 0 && AppConfig.ContainsModel("401")) _fanMax = 72;
|
||||
if (_fanMax < 0 && AppConfig.ContainsModel("503")) _fanMax = 68;
|
||||
if (_fanMax < 0) _fanMax = DEFAULT_FAN_MAX;
|
||||
|
||||
_fanRpm = AppConfig.IsNotFalse("fan_rpm");
|
||||
|
||||
}
|
||||
|
||||
public static string FormatFan(int fan)
|
||||
{
|
||||
// fix for old models
|
||||
@@ -50,10 +86,9 @@ public static class HardwareControl
|
||||
if (fan <= 0 || fan > 100) return null; //nothing reasonable
|
||||
}
|
||||
|
||||
int fanMax = GetFanMax();
|
||||
if (fan > fanMax && fan < 80) SetFanMax(fan);
|
||||
if (fan > fanMax && fan <= INADEQUATE_MAX) fanMax = fan;
|
||||
|
||||
if (AppConfig.Is("fan_rpm"))
|
||||
if (fanRpm)
|
||||
return GHelper.Properties.Strings.FanSpeed + ": " + (fan * 100).ToString() + "RPM";
|
||||
else
|
||||
return GHelper.Properties.Strings.FanSpeed + ": " + Math.Min(Math.Round((float)fan / fanMax * 100), 100).ToString() + "%"; // relatively to 6000 rpm
|
||||
@@ -76,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");
|
||||
@@ -87,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
|
||||
{
|
||||
@@ -129,6 +170,8 @@ public static class HardwareControl
|
||||
|
||||
public static void ReadDesignCapacity()
|
||||
{
|
||||
if (designCapacity > 0) return;
|
||||
|
||||
try
|
||||
{
|
||||
ManagementScope scope = new ManagementScope("root\\WMI");
|
||||
@@ -174,8 +217,9 @@ public static class HardwareControl
|
||||
|
||||
public static float? GetCPUTemp() {
|
||||
|
||||
if (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastUpdate) < 1000) return cpuTemp;
|
||||
lastUpdate = DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
||||
var last = DateTimeOffset.Now.ToUnixTimeSeconds();
|
||||
if (Math.Abs(last - lastUpdate) < 2) return cpuTemp;
|
||||
lastUpdate = last;
|
||||
|
||||
cpuTemp = Program.acpi.DeviceGet(AsusACPI.Temp_CPU);
|
||||
|
||||
@@ -191,6 +235,7 @@ public static class HardwareControl
|
||||
Debug.WriteLine("Failed reading CPU temp :" + ex.Message);
|
||||
}
|
||||
|
||||
|
||||
return cpuTemp;
|
||||
}
|
||||
|
||||
@@ -221,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)
|
||||
|
||||
@@ -6,6 +6,13 @@ namespace GHelper.Helpers
|
||||
{
|
||||
internal class ClamshellModeControl
|
||||
{
|
||||
|
||||
public ClamshellModeControl()
|
||||
{
|
||||
//Save current setting if hibernate or shutdown to prevent reverting the user set option.
|
||||
CheckAndSaveLidAction();
|
||||
}
|
||||
|
||||
public bool IsExternalDisplayConnected()
|
||||
{
|
||||
var devices = ScreenInterrogatory.GetAllDevices().ToArray();
|
||||
@@ -31,7 +38,7 @@ namespace GHelper.Helpers
|
||||
|
||||
public bool IsClamshellEnabled()
|
||||
{
|
||||
return AppConfig.Get("toggle_clamshell_mode") != 0;
|
||||
return AppConfig.Is("toggle_clamshell_mode");
|
||||
}
|
||||
|
||||
public bool IsChargerConnected()
|
||||
@@ -62,7 +69,7 @@ namespace GHelper.Helpers
|
||||
}
|
||||
public static void DisableClamshellMode()
|
||||
{
|
||||
PowerNative.SetLidAction(1, true);
|
||||
PowerNative.SetLidAction(GetDefaultLidAction(), true);
|
||||
Logger.WriteLine("Disengaging Clamshell Mode");
|
||||
}
|
||||
|
||||
@@ -89,5 +96,43 @@ namespace GHelper.Helpers
|
||||
if (IsClamshellEnabled())
|
||||
ToggleLidAction();
|
||||
}
|
||||
|
||||
private static int CheckAndSaveLidAction()
|
||||
{
|
||||
if (AppConfig.Get("clamshell_default_lid_action", -1) != -1)
|
||||
{
|
||||
//Seting was alredy set. Do not touch it
|
||||
return AppConfig.Get("clamshell_default_lid_action", -1);
|
||||
}
|
||||
|
||||
int val = PowerNative.GetLidAction(true);
|
||||
//If it is 0 then it is likely already set by clamshell mdoe
|
||||
//If 0 was set by the user, then why do they even use clamshell mode?
|
||||
//We only care about hibernate or shutdown setting here
|
||||
if (val == 2 || val == 3)
|
||||
{
|
||||
AppConfig.Set("clamshell_default_lid_action", val);
|
||||
return val;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Power users can change that setting.
|
||||
//0 = Do nothing
|
||||
//1 = Sleep (default)
|
||||
//2 = Hibernate
|
||||
//3 = Shutdown
|
||||
private static int GetDefaultLidAction()
|
||||
{
|
||||
int val = AppConfig.Get("clamshell_default_lid_action", 1);
|
||||
|
||||
if (val < 0 || val > 3)
|
||||
{
|
||||
val = 1;
|
||||
}
|
||||
|
||||
return val;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,6 +55,12 @@ namespace GHelper.Helpers
|
||||
return Process.GetProcessesByName("AsusOptimization").Count() > 0;
|
||||
}
|
||||
|
||||
public static bool IsOSDRunning()
|
||||
{
|
||||
return Process.GetProcessesByName("AsusOSD").Count() > 0;
|
||||
}
|
||||
|
||||
|
||||
public static int GetRunningCount()
|
||||
{
|
||||
int count = 0;
|
||||
|
||||
@@ -132,7 +132,12 @@ namespace GHelper.Helpers
|
||||
cmd.StartInfo.FileName = name;
|
||||
cmd.StartInfo.Arguments = args;
|
||||
cmd.Start();
|
||||
Logger.WriteLine(cmd.StandardOutput.ReadToEnd());
|
||||
|
||||
string result = cmd.StandardOutput.ReadToEnd().Replace(Environment.NewLine, " ").Trim(' ');
|
||||
|
||||
Logger.WriteLine(args);
|
||||
Logger.WriteLine(result);
|
||||
|
||||
cmd.WaitForExit();
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
using GHelper.Helpers;
|
||||
using GHelper.Mode;
|
||||
using Microsoft.Win32;
|
||||
using NAudio.CoreAudioApi;
|
||||
using System.Diagnostics;
|
||||
using System.Management;
|
||||
|
||||
@@ -20,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();
|
||||
|
||||
@@ -102,23 +103,43 @@ namespace GHelper.Input
|
||||
string actionM1 = AppConfig.GetString("m1");
|
||||
string actionM2 = AppConfig.GetString("m2");
|
||||
|
||||
if (keyProfile != Keys.None) hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control, keyProfile);
|
||||
if (keyProfile != Keys.None)
|
||||
{
|
||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control, keyProfile);
|
||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, 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);
|
||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control, Keys.F20);
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
if (AppConfig.Is("fn_lock") && !AppConfig.ContainsModel("VivoBook"))
|
||||
for (Keys i = Keys.F1; i <= Keys.F11; i++) hook.RegisterHotKey(ModifierKeys.None, i);
|
||||
|
||||
// Arrow-lock group
|
||||
if (AppConfig.Is("arrow_lock") && AppConfig.IsDUO())
|
||||
{
|
||||
hook.RegisterHotKey(ModifierKeys.None, Keys.Left);
|
||||
hook.RegisterHotKey(ModifierKeys.None, Keys.Right);
|
||||
hook.RegisterHotKey(ModifierKeys.None, Keys.Up);
|
||||
hook.RegisterHotKey(ModifierKeys.None, Keys.Down);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static void CustomKey(string configKey = "m3")
|
||||
@@ -143,17 +164,27 @@ 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("FX505");
|
||||
int brightness = -1;
|
||||
|
||||
if (isTUF) brightness = ScreenBrightness.Get();
|
||||
if (AppConfig.SwappedBrightness()) delta = -delta;
|
||||
|
||||
Program.acpi.DeviceSet(AsusACPI.UniversalControl, delta > 0 ? AsusACPI.Brightness_Up : AsusACPI.Brightness_Down, "Brightness");
|
||||
|
||||
if (isTUF)
|
||||
{
|
||||
if (AppConfig.SwappedBrightness()) return;
|
||||
if (delta < 0 && brightness <= 0) return;
|
||||
if (delta > 0 && brightness >= 100) return;
|
||||
|
||||
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 +194,7 @@ namespace GHelper.Input
|
||||
{
|
||||
Logger.WriteLine(e.Key.ToString());
|
||||
|
||||
if (NoMKeys())
|
||||
if (AppConfig.NoMKeys())
|
||||
{
|
||||
switch (e.Key)
|
||||
{
|
||||
@@ -179,7 +210,7 @@ namespace GHelper.Input
|
||||
}
|
||||
}
|
||||
|
||||
if (AppConfig.ContainsModel("Z13"))
|
||||
if (AppConfig.IsZ13() || AppConfig.IsDUO())
|
||||
{
|
||||
switch (e.Key)
|
||||
{
|
||||
@@ -189,7 +220,7 @@ namespace GHelper.Input
|
||||
}
|
||||
}
|
||||
|
||||
if (AppConfig.ContainsModel("GA401I") && !AppConfig.ContainsModel("GA401IHR"))
|
||||
if (AppConfig.NoAura())
|
||||
{
|
||||
switch (e.Key)
|
||||
{
|
||||
@@ -227,12 +258,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);
|
||||
@@ -252,15 +281,34 @@ namespace GHelper.Input
|
||||
case Keys.VolumeUp:
|
||||
KeyProcess("m2");
|
||||
break;
|
||||
case Keys.Left:
|
||||
KeyboardHook.KeyPress(Keys.Home);
|
||||
break;
|
||||
case Keys.Right:
|
||||
KeyboardHook.KeyPress(Keys.End);
|
||||
break;
|
||||
case Keys.Up:
|
||||
KeyboardHook.KeyPress(Keys.PageUp);
|
||||
break;
|
||||
case Keys.Down:
|
||||
KeyboardHook.KeyPress(Keys.PageDown);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (e.Modifier == (ModifierKeys.Control | ModifierKeys.Shift))
|
||||
{
|
||||
if (e.Key == keyProfile) modeControl.CyclePerformanceMode();
|
||||
if (e.Key == keyApp) Program.SettingsToggle();
|
||||
if (e.Key == Keys.F20) KeyProcess("m3");
|
||||
}
|
||||
|
||||
if (e.Modifier == (ModifierKeys.Control | ModifierKeys.Shift | ModifierKeys.Alt))
|
||||
{
|
||||
if (e.Key == keyProfile) modeControl.CyclePerformanceMode(true);
|
||||
}
|
||||
|
||||
if (e.Modifier == (ModifierKeys.Control))
|
||||
@@ -269,11 +317,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 +359,8 @@ namespace GHelper.Input
|
||||
action = "micmute";
|
||||
if (name == "fnc")
|
||||
action = "fnlock";
|
||||
if (name == "fne")
|
||||
action = "calculator";
|
||||
}
|
||||
|
||||
switch (action)
|
||||
@@ -326,7 +376,7 @@ namespace GHelper.Input
|
||||
break;
|
||||
case "screen":
|
||||
Logger.WriteLine("Screen off toggle");
|
||||
NativeMethods.TurnOffScreen(Program.settingsForm.Handle);
|
||||
NativeMethods.TurnOffScreen();
|
||||
break;
|
||||
case "miniled":
|
||||
screenControl.ToogleMiniled();
|
||||
@@ -335,7 +385,7 @@ namespace GHelper.Input
|
||||
Program.settingsForm.BeginInvoke(Program.settingsForm.CycleAuraMode);
|
||||
break;
|
||||
case "performance":
|
||||
modeControl.CyclePerformanceMode();
|
||||
modeControl.CyclePerformanceMode(Control.ModifierKeys == Keys.Shift);
|
||||
break;
|
||||
case "ghelper":
|
||||
Program.settingsForm.BeginInvoke(delegate
|
||||
@@ -349,12 +399,13 @@ namespace GHelper.Input
|
||||
case "micmute":
|
||||
bool muteStatus = Audio.ToggleMute();
|
||||
Program.toast.RunToast(muteStatus ? "Muted" : "Unmuted", muteStatus ? ToastIcon.MicrophoneMute : ToastIcon.Microphone);
|
||||
if (AppConfig.IsVivobook()) Program.acpi.DeviceSet(AsusACPI.MICMUTE_LED, muteStatus ? 1 : 0, "MicmuteLed");
|
||||
break;
|
||||
case "brightness_up":
|
||||
HandleOptimizationEvent(32);
|
||||
SetBrightness(+10);
|
||||
break;
|
||||
case "brightness_down":
|
||||
HandleOptimizationEvent(16);
|
||||
SetBrightness(-10);
|
||||
break;
|
||||
case "screenpad_up":
|
||||
SetScreenpad(10);
|
||||
@@ -365,7 +416,9 @@ namespace GHelper.Input
|
||||
case "custom":
|
||||
CustomKey(name);
|
||||
break;
|
||||
|
||||
case "calculator":
|
||||
LaunchProcess("calc");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -380,7 +433,16 @@ namespace GHelper.Input
|
||||
}
|
||||
}
|
||||
|
||||
static void ToggleFnLock()
|
||||
public static void ToggleArrowLock()
|
||||
{
|
||||
int arLock = AppConfig.Is("arrow_lock") ? 0 : 1;
|
||||
AppConfig.Set("arrow_lock", arLock);
|
||||
|
||||
Program.settingsForm.BeginInvoke(Program.inputDispatcher.RegisterKeys);
|
||||
Program.toast.RunToast("Arrow-Lock " + (arLock == 1 ? "On" : "Off"), ToastIcon.FnLock);
|
||||
}
|
||||
|
||||
public static void ToggleFnLock()
|
||||
{
|
||||
int fnLock = AppConfig.Is("fn_lock") ? 0 : 1;
|
||||
AppConfig.Set("fn_lock", fnLock);
|
||||
@@ -390,6 +452,8 @@ namespace GHelper.Input
|
||||
else
|
||||
Program.settingsForm.BeginInvoke(Program.inputDispatcher.RegisterKeys);
|
||||
|
||||
Program.settingsForm.BeginInvoke(Program.settingsForm.VisualiseFnLock);
|
||||
|
||||
Program.toast.RunToast("Fn-Lock " + (fnLock == 1 ? "On" : "Off"), ToastIcon.FnLock);
|
||||
}
|
||||
|
||||
@@ -408,43 +472,79 @@ 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 55: // Arconym
|
||||
KeyProcess("m6");
|
||||
return;
|
||||
case 181: // FN + Numpad Enter
|
||||
KeyProcess("fne");
|
||||
return;
|
||||
case 174: // FN+F5
|
||||
modeControl.CyclePerformanceMode(Control.ModifierKeys == Keys.Shift);
|
||||
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 75: // Fn + ESC
|
||||
ToggleArrowLock();
|
||||
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();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!OptimizationService.IsRunning())
|
||||
@@ -467,12 +567,17 @@ 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
|
||||
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.KB_Sleep, "Sleep");
|
||||
break;
|
||||
case 106: // Screenpad button on DUO
|
||||
SetScreenpad(100);
|
||||
break;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -522,22 +627,44 @@ namespace GHelper.Input
|
||||
AsusUSB.ApplyBrightness(backlight, "HotKey");
|
||||
}
|
||||
|
||||
string[] backlightNames = new string[] { "Off", "Low", "Mid", "Max" };
|
||||
Program.toast.RunToast(backlightNames[backlight], delta > 0 ? ToastIcon.BacklightUp : ToastIcon.BacklightDown);
|
||||
if (!OptimizationService.IsOSDRunning())
|
||||
{
|
||||
string[] backlightNames = new string[] { "Off", "Low", "Mid", "Max" };
|
||||
Program.toast.RunToast(backlightNames[backlight], delta > 0 ? ToastIcon.BacklightUp : ToastIcon.BacklightDown);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void SetScreenpad(int delta)
|
||||
{
|
||||
int brightness = AppConfig.Get("screenpad", 100);
|
||||
brightness = Math.Max(Math.Min(100, brightness + delta), 0);
|
||||
|
||||
if (delta == 100)
|
||||
{
|
||||
if (brightness < 0) brightness = 100;
|
||||
else if (brightness >= 100) brightness = 0;
|
||||
else brightness = -10;
|
||||
|
||||
} else
|
||||
{
|
||||
brightness = Math.Max(Math.Min(100, brightness + delta), -10);
|
||||
}
|
||||
|
||||
AppConfig.Set("screenpad", brightness);
|
||||
|
||||
Program.acpi.DeviceSet(AsusACPI.ScreenPadBrightness, (brightness*255/100), "Screenpad");
|
||||
if (brightness == 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, brightness, "ScreenpadToggle");
|
||||
if (brightness >= 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, 1, "ScreenpadOn");
|
||||
|
||||
Program.toast.RunToast($"Screen Pad {brightness}", delta > 0 ? ToastIcon.BrightnessUp : ToastIcon.BrightnessDown);
|
||||
Program.acpi.DeviceSet(AsusACPI.ScreenPadBrightness, Math.Max(brightness * 255 / 100, 0 ), "Screenpad");
|
||||
|
||||
if (brightness < 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, 0, "ScreenpadOff");
|
||||
|
||||
string toast;
|
||||
|
||||
if (brightness < 0) toast = "Off";
|
||||
else if (brightness == 0) toast = "Hidden";
|
||||
else toast = brightness.ToString() + "%";
|
||||
|
||||
Program.toast.RunToast($"Screen Pad {toast}", delta > 0 ? ToastIcon.BrightnessUp : ToastIcon.BrightnessDown);
|
||||
|
||||
}
|
||||
|
||||
|
||||
258
app/Matrix.Designer.cs
generated
Normal file
258
app/Matrix.Designer.cs
generated
Normal file
@@ -0,0 +1,258 @@
|
||||
namespace GHelper
|
||||
{
|
||||
partial class Matrix
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
pictureMatrix = new PictureBox();
|
||||
trackZoom = new TrackBar();
|
||||
buttonPicture = new UI.RButton();
|
||||
panelPicture = new Panel();
|
||||
panelMain = new Panel();
|
||||
panelButtons = new Panel();
|
||||
buttonReset = new UI.RButton();
|
||||
panelScaling = new Panel();
|
||||
comboScaling = new UI.RComboBox();
|
||||
labelScaling = new Label();
|
||||
panelZoom = new Panel();
|
||||
labelZoom = new Label();
|
||||
labelZoomTitle = new Label();
|
||||
((System.ComponentModel.ISupportInitialize)pictureMatrix).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)trackZoom).BeginInit();
|
||||
panelPicture.SuspendLayout();
|
||||
panelMain.SuspendLayout();
|
||||
panelButtons.SuspendLayout();
|
||||
panelScaling.SuspendLayout();
|
||||
panelZoom.SuspendLayout();
|
||||
SuspendLayout();
|
||||
//
|
||||
// pictureMatrix
|
||||
//
|
||||
pictureMatrix.BackColor = Color.Black;
|
||||
pictureMatrix.Cursor = Cursors.SizeAll;
|
||||
pictureMatrix.Location = new Point(731, 27);
|
||||
pictureMatrix.Name = "pictureMatrix";
|
||||
pictureMatrix.Size = new Size(81, 73);
|
||||
pictureMatrix.TabIndex = 0;
|
||||
pictureMatrix.TabStop = false;
|
||||
//
|
||||
// trackZoom
|
||||
//
|
||||
trackZoom.LargeChange = 50;
|
||||
trackZoom.Location = new Point(16, 52);
|
||||
trackZoom.Maximum = 200;
|
||||
trackZoom.Minimum = 10;
|
||||
trackZoom.Name = "trackZoom";
|
||||
trackZoom.Size = new Size(782, 90);
|
||||
trackZoom.SmallChange = 10;
|
||||
trackZoom.TabIndex = 2;
|
||||
trackZoom.TickFrequency = 20;
|
||||
trackZoom.TickStyle = TickStyle.TopLeft;
|
||||
trackZoom.Value = 100;
|
||||
//
|
||||
// buttonPicture
|
||||
//
|
||||
buttonPicture.Activated = false;
|
||||
buttonPicture.BackColor = SystemColors.ControlLight;
|
||||
buttonPicture.BorderColor = Color.Transparent;
|
||||
buttonPicture.BorderRadius = 5;
|
||||
buttonPicture.FlatAppearance.BorderSize = 0;
|
||||
buttonPicture.FlatStyle = FlatStyle.Flat;
|
||||
buttonPicture.Image = Properties.Resources.icons8_matrix_32;
|
||||
buttonPicture.Location = new Point(16, 19);
|
||||
buttonPicture.Name = "buttonPicture";
|
||||
buttonPicture.Secondary = true;
|
||||
buttonPicture.Size = new Size(258, 56);
|
||||
buttonPicture.TabIndex = 3;
|
||||
buttonPicture.Text = "Picture / Gif";
|
||||
buttonPicture.TextAlign = ContentAlignment.MiddleRight;
|
||||
buttonPicture.TextImageRelation = TextImageRelation.ImageBeforeText;
|
||||
buttonPicture.UseVisualStyleBackColor = false;
|
||||
//
|
||||
// panelPicture
|
||||
//
|
||||
panelPicture.BackColor = Color.Black;
|
||||
panelPicture.Controls.Add(pictureMatrix);
|
||||
panelPicture.Dock = DockStyle.Top;
|
||||
panelPicture.Location = new Point(0, 0);
|
||||
panelPicture.Name = "panelPicture";
|
||||
panelPicture.Size = new Size(834, 419);
|
||||
panelPicture.TabIndex = 4;
|
||||
//
|
||||
// panelMain
|
||||
//
|
||||
panelMain.Controls.Add(panelButtons);
|
||||
panelMain.Controls.Add(panelScaling);
|
||||
panelMain.Controls.Add(panelZoom);
|
||||
panelMain.Controls.Add(panelPicture);
|
||||
panelMain.Dock = DockStyle.Top;
|
||||
panelMain.Location = new Point(20, 20);
|
||||
panelMain.Name = "panelMain";
|
||||
panelMain.Size = new Size(834, 924);
|
||||
panelMain.TabIndex = 5;
|
||||
//
|
||||
// panelButtons
|
||||
//
|
||||
panelButtons.Controls.Add(buttonReset);
|
||||
panelButtons.Controls.Add(buttonPicture);
|
||||
panelButtons.Dock = DockStyle.Top;
|
||||
panelButtons.Location = new Point(0, 642);
|
||||
panelButtons.Name = "panelButtons";
|
||||
panelButtons.Size = new Size(834, 94);
|
||||
panelButtons.TabIndex = 6;
|
||||
//
|
||||
// buttonReset
|
||||
//
|
||||
buttonReset.Activated = false;
|
||||
buttonReset.BackColor = SystemColors.ControlLight;
|
||||
buttonReset.BorderColor = Color.Transparent;
|
||||
buttonReset.BorderRadius = 5;
|
||||
buttonReset.FlatAppearance.BorderSize = 0;
|
||||
buttonReset.FlatStyle = FlatStyle.Flat;
|
||||
buttonReset.Image = Properties.Resources.icons8_refresh_32;
|
||||
buttonReset.Location = new Point(290, 19);
|
||||
buttonReset.Name = "buttonReset";
|
||||
buttonReset.Secondary = true;
|
||||
buttonReset.Size = new Size(258, 56);
|
||||
buttonReset.TabIndex = 4;
|
||||
buttonReset.Text = "Reset";
|
||||
buttonReset.TextAlign = ContentAlignment.MiddleRight;
|
||||
buttonReset.TextImageRelation = TextImageRelation.ImageBeforeText;
|
||||
buttonReset.UseVisualStyleBackColor = false;
|
||||
//
|
||||
// panelScaling
|
||||
//
|
||||
panelScaling.Controls.Add(comboScaling);
|
||||
panelScaling.Controls.Add(labelScaling);
|
||||
panelScaling.Dock = DockStyle.Top;
|
||||
panelScaling.Location = new Point(0, 564);
|
||||
panelScaling.Name = "panelScaling";
|
||||
panelScaling.Size = new Size(834, 78);
|
||||
panelScaling.TabIndex = 7;
|
||||
//
|
||||
// comboScaling
|
||||
//
|
||||
comboScaling.BorderColor = Color.White;
|
||||
comboScaling.ButtonColor = Color.FromArgb(255, 255, 255);
|
||||
comboScaling.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
comboScaling.FormattingEnabled = true;
|
||||
comboScaling.ItemHeight = 32;
|
||||
comboScaling.Items.AddRange(new object[] { "Default", "Low", "High", "Bilinear", "Bicubic", "NearestNeighbor", "HighQualityBilinear", "HighQualityBicubic" });
|
||||
comboScaling.Location = new Point(229, 17);
|
||||
comboScaling.Margin = new Padding(4, 11, 4, 8);
|
||||
comboScaling.Name = "comboScaling";
|
||||
comboScaling.Size = new Size(322, 40);
|
||||
comboScaling.TabIndex = 17;
|
||||
//
|
||||
// labelScaling
|
||||
//
|
||||
labelScaling.AutoSize = true;
|
||||
labelScaling.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelScaling.Location = new Point(16, 20);
|
||||
labelScaling.Name = "labelScaling";
|
||||
labelScaling.Size = new Size(185, 32);
|
||||
labelScaling.TabIndex = 4;
|
||||
labelScaling.Text = "Scaling Quality";
|
||||
//
|
||||
// panelZoom
|
||||
//
|
||||
panelZoom.AutoSize = true;
|
||||
panelZoom.Controls.Add(labelZoom);
|
||||
panelZoom.Controls.Add(labelZoomTitle);
|
||||
panelZoom.Controls.Add(trackZoom);
|
||||
panelZoom.Dock = DockStyle.Top;
|
||||
panelZoom.Location = new Point(0, 419);
|
||||
panelZoom.Name = "panelZoom";
|
||||
panelZoom.Size = new Size(834, 145);
|
||||
panelZoom.TabIndex = 5;
|
||||
//
|
||||
// labelZoom
|
||||
//
|
||||
labelZoom.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||
labelZoom.AutoSize = true;
|
||||
labelZoom.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
labelZoom.Location = new Point(731, 17);
|
||||
labelZoom.Name = "labelZoom";
|
||||
labelZoom.Size = new Size(77, 32);
|
||||
labelZoom.TabIndex = 4;
|
||||
labelZoom.Text = "Zoom";
|
||||
//
|
||||
// labelZoomTitle
|
||||
//
|
||||
labelZoomTitle.AutoSize = true;
|
||||
labelZoomTitle.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelZoomTitle.Location = new Point(16, 17);
|
||||
labelZoomTitle.Name = "labelZoomTitle";
|
||||
labelZoomTitle.Size = new Size(81, 32);
|
||||
labelZoomTitle.TabIndex = 3;
|
||||
labelZoomTitle.Text = "Zoom";
|
||||
//
|
||||
// Matrix
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(192F, 192F);
|
||||
AutoScaleMode = AutoScaleMode.Dpi;
|
||||
AutoSize = true;
|
||||
ClientSize = new Size(874, 978);
|
||||
Controls.Add(panelMain);
|
||||
MaximizeBox = false;
|
||||
MinimizeBox = false;
|
||||
MinimumSize = new Size(900, 0);
|
||||
Name = "Matrix";
|
||||
Padding = new Padding(20);
|
||||
ShowIcon = false;
|
||||
ShowInTaskbar = false;
|
||||
Text = "Matrix";
|
||||
((System.ComponentModel.ISupportInitialize)pictureMatrix).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)trackZoom).EndInit();
|
||||
panelPicture.ResumeLayout(false);
|
||||
panelMain.ResumeLayout(false);
|
||||
panelMain.PerformLayout();
|
||||
panelButtons.ResumeLayout(false);
|
||||
panelScaling.ResumeLayout(false);
|
||||
panelScaling.PerformLayout();
|
||||
panelZoom.ResumeLayout(false);
|
||||
panelZoom.PerformLayout();
|
||||
ResumeLayout(false);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private PictureBox pictureMatrix;
|
||||
private TrackBar trackZoom;
|
||||
private UI.RButton buttonPicture;
|
||||
private Panel panelPicture;
|
||||
private Panel panelMain;
|
||||
private Panel panelZoom;
|
||||
private Label labelZoom;
|
||||
private Label labelZoomTitle;
|
||||
private Panel panelButtons;
|
||||
private UI.RButton buttonReset;
|
||||
private Panel panelScaling;
|
||||
private Label labelScaling;
|
||||
private UI.RComboBox comboScaling;
|
||||
}
|
||||
}
|
||||
211
app/Matrix.cs
Normal file
211
app/Matrix.cs
Normal file
@@ -0,0 +1,211 @@
|
||||
using GHelper.AnimeMatrix;
|
||||
using GHelper.UI;
|
||||
|
||||
namespace GHelper
|
||||
{
|
||||
public partial class Matrix : RForm
|
||||
{
|
||||
|
||||
public AniMatrixControl matrixControl = Program.settingsForm.matrixControl;
|
||||
|
||||
private bool Dragging;
|
||||
private int xPos;
|
||||
private int yPos;
|
||||
|
||||
private int baseX;
|
||||
private int baseY;
|
||||
|
||||
private float uiScale;
|
||||
|
||||
Image picture;
|
||||
MemoryStream ms = new MemoryStream();
|
||||
|
||||
public Matrix()
|
||||
{
|
||||
InitializeComponent();
|
||||
InitTheme(true);
|
||||
|
||||
Shown += Matrix_Shown;
|
||||
FormClosing += Matrix_FormClosed;
|
||||
|
||||
buttonPicture.Click += ButtonPicture_Click;
|
||||
buttonReset.Click += ButtonReset_Click;
|
||||
|
||||
pictureMatrix.MouseUp += PictureMatrix_MouseUp;
|
||||
pictureMatrix.MouseMove += PictureMatrix_MouseMove;
|
||||
pictureMatrix.MouseDown += PictureMatrix_MouseDown;
|
||||
|
||||
trackZoom.MouseUp += TrackZoom_MouseUp;
|
||||
trackZoom.ValueChanged += TrackZoom_Changed;
|
||||
|
||||
trackZoom.Value = Math.Min(trackZoom.Maximum, AppConfig.Get("matrix_zoom", 100));
|
||||
VisualiseZoom();
|
||||
|
||||
comboScaling.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||
comboScaling.SelectedIndex = AppConfig.Get("matrix_quality", 0);
|
||||
comboScaling.SelectedValueChanged += ComboScaling_SelectedValueChanged;
|
||||
|
||||
uiScale = panelPicture.Width / matrixControl.device.MaxColumns / 3;
|
||||
panelPicture.Height = (int)(matrixControl.device.MaxRows * uiScale);
|
||||
|
||||
}
|
||||
|
||||
private void ComboScaling_SelectedValueChanged(object? sender, EventArgs e)
|
||||
{
|
||||
AppConfig.Set("matrix_quality", comboScaling.SelectedIndex);
|
||||
SetMatrixPicture(false);
|
||||
}
|
||||
|
||||
private void Matrix_FormClosed(object? sender, FormClosingEventArgs e)
|
||||
{
|
||||
if (picture is not null) picture.Dispose();
|
||||
if (ms is not null) ms.Dispose();
|
||||
|
||||
pictureMatrix.Dispose();
|
||||
|
||||
GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);
|
||||
}
|
||||
|
||||
private void VisualiseZoom()
|
||||
{
|
||||
labelZoom.Text = trackZoom.Value + "%";
|
||||
}
|
||||
|
||||
private void ButtonReset_Click(object? sender, EventArgs e)
|
||||
{
|
||||
AppConfig.Set("matrix_zoom", 100);
|
||||
AppConfig.Set("matrix_x", 0);
|
||||
AppConfig.Set("matrix_y", 0);
|
||||
|
||||
trackZoom.Value = 100;
|
||||
|
||||
SetMatrixPicture();
|
||||
|
||||
}
|
||||
|
||||
private void TrackZoom_MouseUp(object? sender, EventArgs e)
|
||||
{
|
||||
AppConfig.Set("matrix_zoom", trackZoom.Value);
|
||||
SetMatrixPicture();
|
||||
}
|
||||
|
||||
private void TrackZoom_Changed(object? sender, EventArgs e)
|
||||
{
|
||||
VisualiseZoom();
|
||||
}
|
||||
|
||||
|
||||
private void PictureMatrix_MouseDown(object? sender, MouseEventArgs e)
|
||||
{
|
||||
if (e.Button == MouseButtons.Left)
|
||||
{
|
||||
Dragging = true;
|
||||
xPos = e.X;
|
||||
yPos = e.Y;
|
||||
}
|
||||
}
|
||||
|
||||
private void PictureMatrix_MouseMove(object? sender, MouseEventArgs e)
|
||||
{
|
||||
Control c = sender as Control;
|
||||
if (Dragging && c != null)
|
||||
{
|
||||
c.Top = e.Y + c.Top - yPos;
|
||||
c.Left = e.X + c.Left - xPos;
|
||||
}
|
||||
}
|
||||
|
||||
private void PictureMatrix_MouseUp(object? sender, MouseEventArgs e)
|
||||
{
|
||||
|
||||
Dragging = false;
|
||||
|
||||
Control c = sender as Control;
|
||||
|
||||
int matrixX = (int)((baseX - c.Left) / uiScale);
|
||||
int matrixY = (int)((baseY - c.Top) / uiScale);
|
||||
|
||||
AppConfig.Set("matrix_x", matrixX);
|
||||
AppConfig.Set("matrix_y", matrixY);
|
||||
|
||||
SetMatrixPicture(false);
|
||||
}
|
||||
|
||||
private void Matrix_Shown(object? sender, EventArgs e)
|
||||
{
|
||||
FormPosition();
|
||||
SetMatrixPicture();
|
||||
}
|
||||
|
||||
private void SetMatrixPicture(bool visualise = true)
|
||||
{
|
||||
matrixControl.SetMatrixPicture(AppConfig.GetString("matrix_picture"), visualise);
|
||||
}
|
||||
|
||||
private void ButtonPicture_Click(object? sender, EventArgs e)
|
||||
{
|
||||
matrixControl.OpenMatrixPicture();
|
||||
|
||||
}
|
||||
public void FormPosition()
|
||||
{
|
||||
if (Height > Program.settingsForm.Height)
|
||||
{
|
||||
Top = Program.settingsForm.Top + Program.settingsForm.Height - Height;
|
||||
}
|
||||
else
|
||||
{
|
||||
Height = Program.settingsForm.Height;
|
||||
Top = Program.settingsForm.Top;
|
||||
}
|
||||
|
||||
Left = Program.settingsForm.Left - Width - 5;
|
||||
}
|
||||
|
||||
public void VisualiseMatrix(string fileName)
|
||||
{
|
||||
|
||||
if (picture is not null) picture.Dispose();
|
||||
|
||||
using (var fs = new FileStream(fileName, FileMode.Open))
|
||||
{
|
||||
|
||||
ms.SetLength(0);
|
||||
fs.CopyTo(ms);
|
||||
ms.Position = 0;
|
||||
fs.Close();
|
||||
|
||||
picture = Image.FromStream(ms);
|
||||
|
||||
int width = picture.Width;
|
||||
int height = picture.Height;
|
||||
|
||||
int matrixX = AppConfig.Get("matrix_x", 0);
|
||||
int matrixY = AppConfig.Get("matrix_y", 0);
|
||||
int matrixZoom = AppConfig.Get("matrix_zoom", 100);
|
||||
|
||||
|
||||
float scale = Math.Min((float)panelPicture.Width / (float)width, (float)panelPicture.Height / (float)height) * matrixZoom / 100;
|
||||
|
||||
pictureMatrix.Width = (int)(width * scale);
|
||||
pictureMatrix.Height = (int)(height * scale);
|
||||
|
||||
baseX = panelPicture.Width - pictureMatrix.Width;
|
||||
baseY = 0;
|
||||
|
||||
pictureMatrix.Left = baseX - (int)(matrixX * uiScale);
|
||||
pictureMatrix.Top = baseY - (int)(matrixY * uiScale);
|
||||
|
||||
pictureMatrix.SizeMode = PictureBoxSizeMode.Zoom;
|
||||
pictureMatrix.Image = picture;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
120
app/Matrix.resx
Normal file
120
app/Matrix.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<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="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -46,7 +46,12 @@ namespace GHelper.Mode
|
||||
public void ResetPerformanceMode()
|
||||
{
|
||||
ResetRyzen();
|
||||
|
||||
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, Modes.GetCurrentBase(), "Mode");
|
||||
|
||||
// Default power mode
|
||||
AppConfig.RemoveMode("powermode");
|
||||
PowerNative.SetPowerMode(Modes.GetCurrentBase());
|
||||
}
|
||||
|
||||
public void SetPerformanceMode(int mode = -1, bool notify = false)
|
||||
@@ -65,7 +70,16 @@ namespace GHelper.Mode
|
||||
|
||||
Modes.SetCurrent(mode);
|
||||
|
||||
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, IsManualModeRequired() ? AsusACPI.PerformanceManual : Modes.GetBase(mode), "Mode");
|
||||
int status = Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AppConfig.IsManualModeRequired() ? AsusACPI.PerformanceManual : Modes.GetBase(mode), "Mode");
|
||||
|
||||
// Vivobook fallback
|
||||
if (status != 1)
|
||||
{
|
||||
int vivoMode = Modes.GetBase(mode);
|
||||
if (vivoMode == 1) vivoMode = 2;
|
||||
else if (vivoMode == 2) vivoMode = 1;
|
||||
Program.acpi.DeviceSet(AsusACPI.VivoBookMode, vivoMode, "VivoMode");
|
||||
}
|
||||
|
||||
if (AppConfig.Is("xgm_fan") && Program.acpi.IsXGConnected()) AsusUSB.ResetXGM();
|
||||
|
||||
@@ -76,18 +90,21 @@ namespace GHelper.Mode
|
||||
AutoFans();
|
||||
AutoPower(1000);
|
||||
|
||||
if (AppConfig.Get("auto_apply_power_plan") != 0)
|
||||
{
|
||||
if (AppConfig.GetModeString("scheme") is not null)
|
||||
PowerNative.SetPowerScheme(AppConfig.GetModeString("scheme"));
|
||||
else
|
||||
PowerNative.SetPowerScheme(Modes.GetBase(mode));
|
||||
}
|
||||
// Power plan from config or defaulting to balanced
|
||||
if (AppConfig.GetModeString("scheme") is not null)
|
||||
PowerNative.SetPowerPlan(AppConfig.GetModeString("scheme"));
|
||||
else
|
||||
PowerNative.SetBalancedPowerPlan();
|
||||
|
||||
// Windows power mode
|
||||
if (AppConfig.GetModeString("powermode") is not null)
|
||||
PowerNative.SetPowerMode(AppConfig.GetModeString("powermode"));
|
||||
else
|
||||
PowerNative.SetPowerMode(Modes.GetBase(mode));
|
||||
|
||||
// CPU Boost setting override
|
||||
if (AppConfig.GetMode("auto_boost") != -1)
|
||||
{
|
||||
PowerNative.SetCPUBoost(AppConfig.GetMode("auto_boost"));
|
||||
}
|
||||
|
||||
//BatteryControl.SetBatteryChargeLimit();
|
||||
|
||||
@@ -102,9 +119,9 @@ namespace GHelper.Mode
|
||||
}
|
||||
|
||||
|
||||
public void CyclePerformanceMode()
|
||||
public void CyclePerformanceMode(bool back = false)
|
||||
{
|
||||
SetPerformanceMode(Modes.GetNext(Control.ModifierKeys == Keys.Shift), true);
|
||||
SetPerformanceMode(Modes.GetNext(back), true);
|
||||
}
|
||||
|
||||
public void AutoFans(bool force = false)
|
||||
@@ -117,6 +134,7 @@ namespace GHelper.Mode
|
||||
bool xgmFan = false;
|
||||
if (AppConfig.Is("xgm_fan") && Program.acpi.IsXGConnected())
|
||||
{
|
||||
//AsusUSB.InitXGM();
|
||||
AsusUSB.SetXGMFan(AppConfig.GetFanConfig(AsusFan.XGM));
|
||||
xgmFan = true;
|
||||
}
|
||||
@@ -131,10 +149,16 @@ namespace GHelper.Mode
|
||||
// something went wrong, resetting to default profile
|
||||
if (cpuResult != 1 || gpuResult != 1)
|
||||
{
|
||||
int mode = Modes.GetCurrentBase();
|
||||
Logger.WriteLine("ASUS BIOS rejected fan curve, resetting mode to " + mode);
|
||||
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, mode, "Reset Mode");
|
||||
settings.LabelFansResult("ASUS BIOS rejected fan curve");
|
||||
cpuResult = Program.acpi.SetFanRange(AsusFan.CPU, AppConfig.GetFanConfig(AsusFan.CPU));
|
||||
gpuResult = Program.acpi.SetFanRange(AsusFan.GPU, AppConfig.GetFanConfig(AsusFan.GPU));
|
||||
|
||||
if (cpuResult != 1 || gpuResult != 1)
|
||||
{
|
||||
int mode = Modes.GetCurrentBase();
|
||||
Logger.WriteLine("ASUS BIOS rejected fan curve, resetting mode to " + mode);
|
||||
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, mode, "Reset Mode");
|
||||
settings.LabelFansResult("ASUS BIOS rejected fan curve");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -143,7 +167,7 @@ namespace GHelper.Mode
|
||||
}
|
||||
|
||||
// force set PPTs for missbehaving bios on FX507/517 series
|
||||
if ((AppConfig.ContainsModel("FX507") || AppConfig.ContainsModel("FX517") || xgmFan) && !AppConfig.IsMode("auto_apply_power"))
|
||||
if ((AppConfig.IsPowerRequired() || xgmFan) && !AppConfig.IsMode("auto_apply_power"))
|
||||
{
|
||||
Task.Run(async () =>
|
||||
{
|
||||
@@ -159,22 +183,6 @@ namespace GHelper.Mode
|
||||
|
||||
}
|
||||
|
||||
private static bool IsManualModeRequired()
|
||||
{
|
||||
if (!AppConfig.IsMode("auto_apply_power"))
|
||||
return false;
|
||||
|
||||
return
|
||||
AppConfig.Is("manual_mode") ||
|
||||
AppConfig.ContainsModel("GU604") ||
|
||||
AppConfig.ContainsModel("G733");
|
||||
}
|
||||
|
||||
private static bool IsFanRequired()
|
||||
{
|
||||
return AppConfig.ContainsModel("GA402X") || AppConfig.ContainsModel("G513");
|
||||
}
|
||||
|
||||
public void AutoPower(int delay = 0)
|
||||
{
|
||||
|
||||
@@ -184,17 +192,17 @@ namespace GHelper.Mode
|
||||
bool applyFans = AppConfig.IsMode("auto_apply");
|
||||
//bool applyGPU = true;
|
||||
|
||||
if (applyPower)
|
||||
if (applyPower && !applyFans)
|
||||
{
|
||||
// force fan curve for misbehaving bios PPTs on some models
|
||||
if (!applyFans && IsFanRequired())
|
||||
if (AppConfig.IsFanRequired())
|
||||
{
|
||||
delay = 500;
|
||||
AutoFans(true);
|
||||
}
|
||||
|
||||
// Fix for models that don't support PPT settings in all modes, setting a "manual" mode for them
|
||||
if (IsManualModeRequired() && !applyFans)
|
||||
if (AppConfig.IsManualModeRequired())
|
||||
{
|
||||
AutoFans(true);
|
||||
}
|
||||
@@ -296,35 +304,35 @@ namespace GHelper.Mode
|
||||
|
||||
public void SetGPUClocks(bool launchAsAdmin = true)
|
||||
{
|
||||
|
||||
int gpu_core = AppConfig.GetMode("gpu_core");
|
||||
int gpu_memory = AppConfig.GetMode("gpu_memory");
|
||||
|
||||
if (gpu_core == -1 && gpu_memory == -1) return;
|
||||
|
||||
//if ((gpu_core > -5 && gpu_core < 5) && (gpu_memory > -5 && gpu_memory < 5)) launchAsAdmin = false;
|
||||
|
||||
if (Program.acpi.DeviceGet(AsusACPI.GPUEco) == 1) return;
|
||||
if (HardwareControl.GpuControl is null) return;
|
||||
if (!HardwareControl.GpuControl!.IsNvidia) return;
|
||||
|
||||
using NvidiaGpuControl nvControl = (NvidiaGpuControl)HardwareControl.GpuControl;
|
||||
try
|
||||
Task.Run(() =>
|
||||
{
|
||||
int getStatus = nvControl.GetClocks(out int current_core, out int current_memory);
|
||||
if (getStatus != -1)
|
||||
|
||||
int core = AppConfig.GetMode("gpu_core");
|
||||
int memory = AppConfig.GetMode("gpu_memory");
|
||||
int clock_limit = AppConfig.GetMode("gpu_clock_limit");
|
||||
|
||||
if (core == -1 && memory == -1) return;
|
||||
|
||||
//if ((gpu_core > -5 && gpu_core < 5) && (gpu_memory > -5 && gpu_memory < 5)) launchAsAdmin = false;
|
||||
|
||||
if (Program.acpi.DeviceGet(AsusACPI.GPUEco) == 1) return;
|
||||
if (HardwareControl.GpuControl is null) return;
|
||||
if (!HardwareControl.GpuControl!.IsNvidia) return;
|
||||
|
||||
using NvidiaGpuControl nvControl = (NvidiaGpuControl)HardwareControl.GpuControl;
|
||||
try
|
||||
{
|
||||
if (Math.Abs(gpu_core - current_core) < 5 && Math.Abs(gpu_memory - current_memory) < 5) return;
|
||||
int statusLimit = nvControl.SetMaxGPUClock(clock_limit);
|
||||
int statusClocks = nvControl.SetClocks(core, memory);
|
||||
if ((statusLimit != 0 || statusClocks != 0) && launchAsAdmin) ProcessHelper.RunAsAdmin("gpu");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine(ex.ToString());
|
||||
}
|
||||
|
||||
int setStatus = nvControl.SetClocks(gpu_core, gpu_memory);
|
||||
if (launchAsAdmin && setStatus == -1) ProcessHelper.RunAsAdmin("gpu");
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine(ex.ToString());
|
||||
}
|
||||
settings.GPUInit();
|
||||
});
|
||||
}
|
||||
|
||||
public void SetGPUPower()
|
||||
|
||||
@@ -51,7 +51,8 @@
|
||||
"gpu_memory",
|
||||
"auto_boost",
|
||||
"auto_apply",
|
||||
"auto_apply_power"
|
||||
"auto_apply_power",
|
||||
"powermode"
|
||||
};
|
||||
|
||||
foreach (string clean in cleanup)
|
||||
|
||||
@@ -72,7 +72,24 @@ namespace GHelper.Mode
|
||||
[DllImportAttribute("powrprof.dll", EntryPoint = "PowerSetActiveOverlayScheme")]
|
||||
public static extern uint PowerSetActiveOverlayScheme(Guid OverlaySchemeGuid);
|
||||
|
||||
const string POWER_SILENT = "961cc777-2547-4f9d-8174-7d86181b8a7a";
|
||||
const string POWER_BALANCED = "00000000-0000-0000-0000-000000000000";
|
||||
const string POWER_TURBO = "ded574b5-45a0-4f42-8737-46345c09c238";
|
||||
const string POWER_BETTERPERFORMANCE = "ded574b5-45a0-4f42-8737-46345c09c238";
|
||||
|
||||
static List<string> overlays = new() {
|
||||
POWER_BALANCED,
|
||||
POWER_TURBO,
|
||||
POWER_SILENT,
|
||||
POWER_BETTERPERFORMANCE
|
||||
};
|
||||
|
||||
public static Dictionary<string, string> powerModes = new Dictionary<string, string>
|
||||
{
|
||||
{ POWER_SILENT, "Best Power Efficiency" },
|
||||
{ POWER_BALANCED, "Balanced" },
|
||||
{ POWER_TURBO, "Best Performance" },
|
||||
};
|
||||
static Guid GetActiveScheme()
|
||||
{
|
||||
IntPtr pActiveSchemeGuid;
|
||||
@@ -122,51 +139,89 @@ namespace GHelper.Mode
|
||||
Logger.WriteLine("Boost " + boost);
|
||||
}
|
||||
|
||||
public static void SetPowerScheme(string scheme)
|
||||
public static string GetPowerMode()
|
||||
{
|
||||
List<string> overlays = new() {
|
||||
"00000000-0000-0000-0000-000000000000",
|
||||
"ded574b5-45a0-4f42-8737-46345c09c238",
|
||||
"961cc777-2547-4f9d-8174-7d86181b8a7a",
|
||||
"3af9B8d9-7c97-431d-ad78-34a8bfea439f"
|
||||
};
|
||||
PowerGetEffectiveOverlayScheme(out Guid activeScheme);
|
||||
return activeScheme.ToString();
|
||||
}
|
||||
|
||||
public static void SetPowerMode(string scheme)
|
||||
{
|
||||
|
||||
if (!overlays.Contains(scheme)) return;
|
||||
|
||||
Guid guidScheme = new Guid(scheme);
|
||||
|
||||
if (overlays.Contains(scheme))
|
||||
uint status = PowerGetEffectiveOverlayScheme(out Guid activeScheme);
|
||||
if (status != 0 || activeScheme != guidScheme)
|
||||
{
|
||||
uint status = PowerGetEffectiveOverlayScheme(out Guid activeScheme);
|
||||
if (status != 0 || activeScheme != guidScheme)
|
||||
{
|
||||
PowerSetActiveOverlayScheme(guidScheme);
|
||||
Logger.WriteLine("Power mode: " + scheme);
|
||||
}
|
||||
status = PowerSetActiveOverlayScheme(guidScheme);
|
||||
Logger.WriteLine("Power Mode " + scheme + ":" + (status == 0 ? "OK" : status));
|
||||
}
|
||||
else
|
||||
{
|
||||
PowerSetActiveScheme(IntPtr.Zero, guidScheme);
|
||||
Logger.WriteLine("Power plan: " + scheme);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static void SetPowerScheme(int mode)
|
||||
public static void SetBalancedPowerPlan()
|
||||
{
|
||||
Guid activeSchemeGuid = GetActiveScheme();
|
||||
string balanced = "381b4222-f694-41f0-9685-ff5bb260df2e";
|
||||
|
||||
if (activeSchemeGuid.ToString() != balanced && !AppConfig.Is("skip_power_plan"))
|
||||
{
|
||||
SetPowerPlan(balanced);
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetPowerPlan(string scheme)
|
||||
{
|
||||
// Skipping power modes
|
||||
if (overlays.Contains(scheme)) return;
|
||||
|
||||
Guid guidScheme = new Guid(scheme);
|
||||
uint status = PowerSetActiveScheme(IntPtr.Zero, guidScheme);
|
||||
Logger.WriteLine("Power Plan " + scheme + ":" + (status == 0 ? "OK" : status));
|
||||
}
|
||||
|
||||
public static string GetDefaultPowerMode(int mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case 0: // balanced
|
||||
SetPowerScheme("00000000-0000-0000-0000-000000000000");
|
||||
break;
|
||||
case 1: // turbo
|
||||
SetPowerScheme("ded574b5-45a0-4f42-8737-46345c09c238");
|
||||
break;
|
||||
return POWER_TURBO;
|
||||
case 2: //silent
|
||||
SetPowerScheme("961cc777-2547-4f9d-8174-7d86181b8a7a");
|
||||
break;
|
||||
return POWER_SILENT;
|
||||
default: // balanced
|
||||
return POWER_BALANCED;
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetPowerMode(int mode)
|
||||
{
|
||||
SetPowerMode(GetDefaultPowerMode(mode));
|
||||
}
|
||||
|
||||
public static int GetLidAction(bool ac)
|
||||
{
|
||||
Guid activeSchemeGuid = GetActiveScheme();
|
||||
|
||||
IntPtr activeIndex;
|
||||
if (ac)
|
||||
PowerReadACValueIndex(IntPtr.Zero,
|
||||
activeSchemeGuid,
|
||||
GUID_SYSTEM_BUTTON_SUBGROUP,
|
||||
GUID_LIDACTION, out activeIndex);
|
||||
|
||||
else
|
||||
PowerReadDCValueIndex(IntPtr.Zero,
|
||||
activeSchemeGuid,
|
||||
GUID_SYSTEM_BUTTON_SUBGROUP,
|
||||
GUID_LIDACTION, out activeIndex);
|
||||
|
||||
|
||||
return activeIndex.ToInt32();
|
||||
}
|
||||
|
||||
|
||||
public static void SetLidAction(int action, bool acOnly = false)
|
||||
{
|
||||
/**
|
||||
@@ -201,5 +256,38 @@ namespace GHelper.Mode
|
||||
|
||||
Logger.WriteLine("Changed Lid Action to " + action);
|
||||
}
|
||||
|
||||
public static int GetHibernateAfter()
|
||||
{
|
||||
Guid activeSchemeGuid = GetActiveScheme();
|
||||
IntPtr seconds;
|
||||
PowerReadDCValueIndex(IntPtr.Zero,
|
||||
activeSchemeGuid,
|
||||
GUID_SLEEP_SUBGROUP,
|
||||
GUID_HIBERNATEIDLE, out seconds);
|
||||
|
||||
Logger.WriteLine("Hibernate after " + seconds);
|
||||
return (seconds.ToInt32() / 60);
|
||||
}
|
||||
|
||||
|
||||
public static void SetHibernateAfter(int minutes)
|
||||
{
|
||||
int seconds = minutes * 60;
|
||||
|
||||
Guid activeSchemeGuid = GetActiveScheme();
|
||||
var hrAC = PowerWriteDCValueIndex(
|
||||
IntPtr.Zero,
|
||||
activeSchemeGuid,
|
||||
GUID_SLEEP_SUBGROUP,
|
||||
GUID_HIBERNATEIDLE,
|
||||
seconds);
|
||||
|
||||
PowerSetActiveScheme(IntPtr.Zero, activeSchemeGuid);
|
||||
|
||||
Logger.WriteLine("Setting Hibernate after " + seconds + ": " + (hrAC == 0 ? "OK" : hrAC));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,9 +32,9 @@ public class NativeMethods
|
||||
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
||||
private static extern uint FormatMessage(uint dwFlags, IntPtr lpSource, uint dwMessageId, uint dwLanguageId, out string lpBuffer, uint nSize, IntPtr Arguments);
|
||||
|
||||
public static void TurnOffScreen(IntPtr handle)
|
||||
public static void TurnOffScreen()
|
||||
{
|
||||
IntPtr result = SendMessage(handle, WM_SYSCOMMAND, (IntPtr)SC_MONITORPOWER, (IntPtr)MONITOR_OFF);
|
||||
IntPtr result = SendMessage(-1, WM_SYSCOMMAND, (IntPtr)SC_MONITORPOWER, (IntPtr)MONITOR_OFF);
|
||||
if (result == IntPtr.Zero)
|
||||
{
|
||||
int error = Marshal.GetLastWin32Error();
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -45,6 +45,16 @@ namespace GHelper.Peripherals.Mouse.Models
|
||||
return 36_000;
|
||||
}
|
||||
|
||||
public override bool HasXYDPI()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasDebounceSetting()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasLiftOffSetting()
|
||||
{
|
||||
return true;
|
||||
@@ -55,6 +65,11 @@ namespace GHelper.Peripherals.Mouse.Models
|
||||
return true;
|
||||
}
|
||||
|
||||
public override LightingZone[] SupportedLightingZones()
|
||||
{
|
||||
return new LightingZone[] { LightingZone.Logo, LightingZone.Scrollwheel, LightingZone.Underglow };
|
||||
}
|
||||
|
||||
public override bool HasAutoPowerOff()
|
||||
{
|
||||
return true;
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
namespace GHelper.Peripherals.Mouse.Models
|
||||
{
|
||||
//P706_Wireless
|
||||
public class GladiusIII : AsusMouse
|
||||
{
|
||||
public GladiusIII() : base(0x0B05, 0x1A70, "mi_00", true)
|
||||
public GladiusIII() : base(0x0B05, 0x197F, "mi_00", true)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -37,7 +38,12 @@
|
||||
}
|
||||
public override int MaxDPI()
|
||||
{
|
||||
return 36_000;
|
||||
return 26_000;
|
||||
}
|
||||
|
||||
public override bool HasDebounceSetting()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasLiftOffSetting()
|
||||
@@ -50,6 +56,11 @@
|
||||
return true;
|
||||
}
|
||||
|
||||
public override LightingZone[] SupportedLightingZones()
|
||||
{
|
||||
return new LightingZone[] { LightingZone.Logo, LightingZone.Scrollwheel, LightingZone.Underglow };
|
||||
}
|
||||
|
||||
public override bool HasAutoPowerOff()
|
||||
{
|
||||
return true;
|
||||
@@ -60,25 +71,15 @@
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasAngleTuning()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasLowBatteryWarning()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasDPIColors()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public class GladiusIIIWired : GladiusIII
|
||||
{
|
||||
public GladiusIIIWired() : base(0x1A72, false)
|
||||
public GladiusIIIWired() : base(0x197d, false)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
106
app/Peripherals/Mouse/Models/GladiusIIIAimpoint.cs
Normal file
106
app/Peripherals/Mouse/Models/GladiusIIIAimpoint.cs
Normal file
@@ -0,0 +1,106 @@
|
||||
namespace GHelper.Peripherals.Mouse.Models
|
||||
{
|
||||
//P711
|
||||
public class GladiusIIIAimpoint : AsusMouse
|
||||
{
|
||||
public GladiusIIIAimpoint() : base(0x0B05, 0x1A70, "mi_00", true)
|
||||
{
|
||||
}
|
||||
|
||||
protected GladiusIIIAimpoint(ushort vendorId, bool wireless) : base(0x0B05, vendorId, "mi_00", wireless)
|
||||
{
|
||||
}
|
||||
|
||||
public override int DPIProfileCount()
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "ROG Gladius III Aimpoint (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 36_000;
|
||||
}
|
||||
|
||||
public override bool HasXYDPI()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
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 HasAngleTuning()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasLowBatteryWarning()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasDPIColors()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public class GladiusIIIAimpointWired : GladiusIIIAimpoint
|
||||
{
|
||||
public GladiusIIIAimpointWired() : base(0x1A72, false)
|
||||
{
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "ROG Gladius III Aimpoint (Wired)";
|
||||
}
|
||||
}
|
||||
}
|
||||
174
app/Peripherals/Mouse/Models/HarpeAceAimLab.cs
Normal file
174
app/Peripherals/Mouse/Models/HarpeAceAimLab.cs
Normal file
@@ -0,0 +1,174 @@
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace GHelper.Peripherals.Mouse.Models
|
||||
{
|
||||
//P713_Wireless
|
||||
public class HarpeAceAimLabEdition : AsusMouse
|
||||
{
|
||||
public HarpeAceAimLabEdition() : base(0x0B05, 0x1A94, "mi_00", true)
|
||||
{
|
||||
}
|
||||
|
||||
protected HarpeAceAimLabEdition(ushort productId, bool wireless, string endpoint, byte reportId) : base(0x0B05, productId, endpoint, wireless, reportId)
|
||||
{
|
||||
}
|
||||
|
||||
public override int DPIProfileCount()
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "ROG Harpe Ace Aim Lab Edition (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 36_000;
|
||||
}
|
||||
|
||||
public override int MinDPI()
|
||||
{
|
||||
return 50;
|
||||
}
|
||||
|
||||
public override bool HasXYDPI()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
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.Scrollwheel };
|
||||
}
|
||||
|
||||
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 bool HasAutoPowerOff()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasAngleSnapping()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasAngleTuning()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasLowBatteryWarning()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasDPIColors()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override int AngleTuningStep()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
public override int AngleTuningMin()
|
||||
{
|
||||
return -30;
|
||||
}
|
||||
|
||||
public override int AngleTuningMax()
|
||||
{
|
||||
return 30;
|
||||
}
|
||||
|
||||
public override bool HasAcceleration()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasDeceleration()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override int MaxAcceleration()
|
||||
{
|
||||
return 9;
|
||||
}
|
||||
public override int MaxDeceleration()
|
||||
{
|
||||
return 9;
|
||||
}
|
||||
}
|
||||
|
||||
public class HarpeAceAimLabEditionWired : HarpeAceAimLabEdition
|
||||
{
|
||||
public HarpeAceAimLabEditionWired() : base(0x1A92, false, "mi_00", 0x00)
|
||||
{
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "ROG Harpe Ace Aim Lab Edition (Wired)";
|
||||
}
|
||||
}
|
||||
|
||||
public class HarpeAceAimLabEditionOmni : HarpeAceAimLabEdition
|
||||
{
|
||||
public HarpeAceAimLabEditionOmni() : base(0x1ACE, true, "mi_02&col03", 0x03)
|
||||
{
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "ROG Harpe Ace Aim Lab Edition (OMNI)";
|
||||
}
|
||||
|
||||
public override int USBPacketSize()
|
||||
{
|
||||
return 64;
|
||||
}
|
||||
}
|
||||
}
|
||||
106
app/Peripherals/Mouse/Models/KerisWirelssAimpoint.cs
Normal file
106
app/Peripherals/Mouse/Models/KerisWirelssAimpoint.cs
Normal file
@@ -0,0 +1,106 @@
|
||||
namespace GHelper.Peripherals.Mouse.Models
|
||||
{
|
||||
//P709_Wireless
|
||||
public class KerisWirelssAimpoint : AsusMouse
|
||||
{
|
||||
public KerisWirelssAimpoint() : base(0x0B05, 0x1A68, "mi_00", true)
|
||||
{
|
||||
}
|
||||
|
||||
protected KerisWirelssAimpoint(ushort vendorId, bool wireless) : base(0x0B05, vendorId, "mi_00", wireless)
|
||||
{
|
||||
}
|
||||
|
||||
public override int DPIProfileCount()
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "ROG Keris Wireless Aimpoint (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 36_000;
|
||||
}
|
||||
|
||||
public override bool HasXYDPI()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
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 };
|
||||
}
|
||||
|
||||
public override bool HasAutoPowerOff()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasAngleSnapping()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasAngleTuning()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasLowBatteryWarning()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HasDPIColors()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public class KerisWirelssAimpointWired : KerisWirelssAimpoint
|
||||
{
|
||||
public KerisWirelssAimpointWired() : base(0x1A66, false)
|
||||
{
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "ROG Keris Wireless Aimpoint (Wired)";
|
||||
}
|
||||
}
|
||||
}
|
||||
209
app/Peripherals/Mouse/Models/PugioII.cs
Normal file
209
app/Peripherals/Mouse/Models/PugioII.cs
Normal file
@@ -0,0 +1,209 @@
|
||||
|
||||
namespace GHelper.Peripherals.Mouse.Models
|
||||
{
|
||||
//P705
|
||||
public class PugioII : AsusMouse
|
||||
{
|
||||
public PugioII() : base(0x0B05, 0x1908, "mi_00", true)
|
||||
{
|
||||
}
|
||||
|
||||
protected PugioII(ushort vendorId, bool wireless) : base(0x0B05, vendorId, "mi_00", wireless)
|
||||
{
|
||||
}
|
||||
public override int DPIProfileCount()
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "ROG Pugio 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 HasDebounceSetting()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public override bool HasLiftOffSetting()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public override int DPIIncrements()
|
||||
{
|
||||
return 100;
|
||||
}
|
||||
|
||||
public override bool HasRGB()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public override int MaxBrightness()
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
public override LightingZone[] SupportedLightingZones()
|
||||
{
|
||||
return new LightingZone[] { LightingZone.Logo, LightingZone.Scrollwheel, LightingZone.Underglow };
|
||||
}
|
||||
|
||||
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 int LowBatteryWarningStep()
|
||||
{
|
||||
return 25;
|
||||
}
|
||||
|
||||
public override int LowBatteryWarningMax()
|
||||
{
|
||||
return 100;
|
||||
}
|
||||
|
||||
protected override int ParseBattery(byte[] packet)
|
||||
{
|
||||
return base.ParseBattery(packet) * 25;
|
||||
}
|
||||
protected override int ParseLowBatteryWarning(byte[] packet)
|
||||
{
|
||||
return base.ParseLowBatteryWarning(packet) * 25;
|
||||
}
|
||||
protected override byte[] GetUpdateEnergySettingsPacket(int lowBatteryWarning, PowerOffSetting powerOff)
|
||||
{
|
||||
return base.GetUpdateEnergySettingsPacket(lowBatteryWarning / 25, powerOff);
|
||||
}
|
||||
protected override byte[] GetReadLightingModePacket(LightingZone zone)
|
||||
{
|
||||
return new byte[] { 0x00, 0x12, 0x03, 0x00 };
|
||||
}
|
||||
|
||||
protected LightingSetting? ParseLightingSetting(byte[] packet, LightingZone zone)
|
||||
{
|
||||
if (packet[1] != 0x12 || packet[2] != 0x03)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
int offset = 5 + (((int)zone) * 5);
|
||||
|
||||
LightingSetting setting = new LightingSetting();
|
||||
|
||||
setting.LightingMode = LightingModeForIndex(packet[offset + 0]);
|
||||
setting.Brightness = packet[offset + 1];
|
||||
|
||||
setting.RGBColor = Color.FromArgb(packet[offset + 2], packet[offset + 3], packet[offset + 4]);
|
||||
|
||||
setting.AnimationDirection = SupportsAnimationDirection(setting.LightingMode)
|
||||
? (AnimationDirection)packet[21]
|
||||
: AnimationDirection.Clockwise;
|
||||
|
||||
if (setting.AnimationDirection != AnimationDirection.Clockwise
|
||||
&& setting.AnimationDirection != AnimationDirection.CounterClockwise)
|
||||
{
|
||||
setting.AnimationDirection = AnimationDirection.Clockwise;
|
||||
}
|
||||
|
||||
setting.RandomColor = SupportsRandomColor(setting.LightingMode) && packet[22] == 0x01;
|
||||
setting.AnimationSpeed = SupportsAnimationSpeed(setting.LightingMode)
|
||||
? (AnimationSpeed)packet[23]
|
||||
: AnimationSpeed.Medium;
|
||||
|
||||
//If the mouse reports an out of range value, which it does when the current setting has no speed option, chose medium as default
|
||||
if (setting.AnimationSpeed != AnimationSpeed.Fast
|
||||
&& setting.AnimationSpeed != AnimationSpeed.Medium
|
||||
&& setting.AnimationSpeed != AnimationSpeed.Slow)
|
||||
{
|
||||
setting.AnimationSpeed = AnimationSpeed.Medium;
|
||||
}
|
||||
return setting;
|
||||
}
|
||||
|
||||
public override void ReadLightingSetting()
|
||||
{
|
||||
if (!HasRGB())
|
||||
{
|
||||
return;
|
||||
}
|
||||
//Mouse sends all lighting zones in one response
|
||||
//21: Direction
|
||||
//22: Random
|
||||
//23: Speed
|
||||
// 20 21 22 23
|
||||
//00 12 03 00 00 [03 04 00 00 ff] [03 04 00 00 ff] [03 04 00 00 ff] 00 04 00 00
|
||||
//00 12 03 00 00 [05 02 ff 00 ff] [05 02 ff 00 ff] [05 02 ff 00 ff] 00 01 01 00
|
||||
//00 12 03 00 00 [03 01 00 00 ff] [03 01 00 00 ff] [03 01 00 00 ff] 00 01 00 01
|
||||
byte[]? response = WriteForResponse(GetReadLightingModePacket(LightingZone.All));
|
||||
if (response is null) return;
|
||||
|
||||
LightingZone[] lz = SupportedLightingZones();
|
||||
for (int i = 0; i < lz.Length; ++i)
|
||||
{
|
||||
LightingSetting? ls = ParseLightingSetting(response, lz[i]);
|
||||
if (ls is null)
|
||||
{
|
||||
Logger.WriteLine(GetDisplayName() + ": Failed to read RGB Setting for Zone " + lz[i].ToString());
|
||||
continue;
|
||||
}
|
||||
|
||||
Logger.WriteLine(GetDisplayName() + ": Read RGB Setting for Zone " + lz[i].ToString() + ": " + ls.ToString());
|
||||
LightingSetting[i] = ls;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool CanChangeDPIProfile()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class PugioIIWired : PugioII
|
||||
{
|
||||
public PugioIIWired() : base(0x1906, false)
|
||||
{
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "ROG Pugio II (Wired)";
|
||||
}
|
||||
}
|
||||
}
|
||||
197
app/Peripherals/Mouse/Models/ROGKerisWireless.cs
Normal file
197
app/Peripherals/Mouse/Models/ROGKerisWireless.cs
Normal file
@@ -0,0 +1,197 @@
|
||||
namespace GHelper.Peripherals.Mouse.Models
|
||||
{
|
||||
//P513
|
||||
public class ROGKerisWireless : AsusMouse
|
||||
{
|
||||
public ROGKerisWireless() : base(0x0B05, 0x1960, "mi_00", true)
|
||||
{
|
||||
}
|
||||
|
||||
protected ROGKerisWireless(ushort vendorId, bool wireless) : base(0x0B05, vendorId, "mi_00", wireless)
|
||||
{
|
||||
}
|
||||
|
||||
public override int DPIProfileCount()
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "ROG Keris (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;
|
||||
}
|
||||
|
||||
//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 HasDebounceSetting()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
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 LightingZone[] SupportedLightingZones()
|
||||
{
|
||||
return new LightingZone[] { LightingZone.Logo, LightingZone.Scrollwheel };
|
||||
}
|
||||
|
||||
public override int MaxBrightness()
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
protected override byte IndexForLightingMode(LightingMode lightingMode)
|
||||
{
|
||||
if (lightingMode == LightingMode.Off)
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
return ((byte)lightingMode);
|
||||
}
|
||||
}
|
||||
|
||||
public class ROGKerisWirelessWired : ROGKerisWireless
|
||||
{
|
||||
public ROGKerisWirelessWired() : base(0x195E, false)
|
||||
{
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "ROG Keris (Wired)";
|
||||
}
|
||||
}
|
||||
|
||||
public class ROGKerisWirelessEvaEdition : ROGKerisWireless
|
||||
{
|
||||
public ROGKerisWirelessEvaEdition() : base(0x1A59, true)
|
||||
{
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "ROG Keris EVA Edition";
|
||||
}
|
||||
}
|
||||
|
||||
public class ROGKerisWirelessEvaEditionWired : ROGKerisWireless
|
||||
{
|
||||
public ROGKerisWirelessEvaEditionWired() : base(0x1A57, false)
|
||||
{
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "ROG Keris EVA Edition (Wired)";
|
||||
}
|
||||
}
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
85
app/Peripherals/Mouse/Models/TUFM4Wireless.cs
Normal file
85
app/Peripherals/Mouse/Models/TUFM4Wireless.cs
Normal file
@@ -0,0 +1,85 @@
|
||||
namespace GHelper.Peripherals.Mouse.Models
|
||||
{
|
||||
//P306_Wireless
|
||||
public class TUFM4Wirelss : AsusMouse
|
||||
{
|
||||
public TUFM4Wirelss() : base(0x0B05, 0x19F4, "mi_00", true)
|
||||
{
|
||||
}
|
||||
|
||||
public override int DPIProfileCount()
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
public override string GetDisplayName()
|
||||
{
|
||||
return "TUF GAMING M4 (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 12_000;
|
||||
}
|
||||
|
||||
public override bool HasLiftOffSetting()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool HasDebounceSetting()
|
||||
{
|
||||
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 int DPIIncrements()
|
||||
{
|
||||
return 100;
|
||||
}
|
||||
|
||||
public override bool CanChangeDPIProfile()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,15 +6,33 @@ namespace GHelper.Peripherals
|
||||
{
|
||||
public class PeripheralsProvider
|
||||
{
|
||||
public static object _LOCK = new object();
|
||||
private static readonly object _LOCK = new object();
|
||||
|
||||
public static List<AsusMouse> ConnectedMice = new List<AsusMouse>();
|
||||
|
||||
public static event EventHandler? DeviceChanged;
|
||||
|
||||
private static System.Timers.Timer timer = new System.Timers.Timer(1000);
|
||||
|
||||
static PeripheralsProvider()
|
||||
{
|
||||
timer.Elapsed += DeviceTimer_Elapsed;
|
||||
}
|
||||
|
||||
|
||||
private static long lastRefresh;
|
||||
|
||||
public static bool IsMouseConnected()
|
||||
{
|
||||
return ConnectedMice.Count > 0;
|
||||
lock (_LOCK)
|
||||
{
|
||||
return ConnectedMice.Count > 0;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsDeviceConnected(IPeripheral peripheral)
|
||||
{
|
||||
return AllPeripherals().Contains(peripheral);
|
||||
}
|
||||
|
||||
//Expand if keyboards or other device get supported later.
|
||||
@@ -26,84 +44,111 @@ namespace GHelper.Peripherals
|
||||
public static List<IPeripheral> AllPeripherals()
|
||||
{
|
||||
List<IPeripheral> l = new List<IPeripheral>();
|
||||
l.AddRange(ConnectedMice);
|
||||
|
||||
lock (_LOCK)
|
||||
{
|
||||
l.AddRange(ConnectedMice);
|
||||
}
|
||||
return l;
|
||||
}
|
||||
|
||||
public static void RefreshBatteryForAllDevices()
|
||||
{
|
||||
lock (_LOCK)
|
||||
RefreshBatteryForAllDevices(false);
|
||||
}
|
||||
|
||||
public static void RefreshBatteryForAllDevices(bool force)
|
||||
{
|
||||
//Polling the battery every 20s should be enough
|
||||
if (!force && Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastRefresh) < 20_000) return;
|
||||
lastRefresh = DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
||||
|
||||
List<IPeripheral> l = AllPeripherals();
|
||||
|
||||
foreach (IPeripheral m in l)
|
||||
{
|
||||
foreach (IPeripheral m in AllPeripherals())
|
||||
if (!m.IsDeviceReady)
|
||||
{
|
||||
if (!m.IsDeviceReady)
|
||||
{
|
||||
//Try to sync the device if that hasn't been done yet
|
||||
m.SynchronizeDevice();
|
||||
}
|
||||
else
|
||||
{
|
||||
m.ReadBattery();
|
||||
}
|
||||
//Try to sync the device if that hasn't been done yet
|
||||
m.SynchronizeDevice();
|
||||
}
|
||||
else
|
||||
{
|
||||
m.ReadBattery();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void Disconnect(AsusMouse am)
|
||||
{
|
||||
lock (_LOCK)
|
||||
{
|
||||
am.Disconnect -= Mouse_Disconnect;
|
||||
am.MouseReadyChanged -= MouseReadyChanged;
|
||||
am.BatteryUpdated -= BatteryUpdated;
|
||||
ConnectedMice.Remove(am);
|
||||
if (DeviceChanged is not null)
|
||||
{
|
||||
DeviceChanged(am, EventArgs.Empty);
|
||||
}
|
||||
}
|
||||
if (DeviceChanged is not null)
|
||||
{
|
||||
DeviceChanged(am, EventArgs.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
public static void Connect(AsusMouse am)
|
||||
{
|
||||
|
||||
if (IsDeviceConnected(am))
|
||||
{
|
||||
//Mouse already connected;
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
am.Connect();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
Logger.WriteLine(am.GetDisplayName() + " failed to connect to device: " + e);
|
||||
return;
|
||||
}
|
||||
|
||||
//The Mouse might needs a few ms to register all its subdevices or the sync will fail.
|
||||
//Retry 3 times. Do not call this on main thread! It would block the UI
|
||||
|
||||
int tries = 0;
|
||||
while (!am.IsDeviceReady && tries < 3)
|
||||
{
|
||||
Thread.Sleep(250);
|
||||
Logger.WriteLine(am.GetDisplayName() + " synchronising. Try " + (tries + 1));
|
||||
am.SynchronizeDevice();
|
||||
++tries;
|
||||
}
|
||||
|
||||
lock (_LOCK)
|
||||
{
|
||||
if (ConnectedMice.Contains(am))
|
||||
{
|
||||
//Mouse already connected;
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
am.Connect();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
Logger.WriteLine(am.GetDisplayName() + " failed to connect to device: " + e);
|
||||
return;
|
||||
}
|
||||
|
||||
am.Disconnect += Mouse_Disconnect;
|
||||
|
||||
//The Mouse might needs a few ms to register all its subdevices or the sync will fail.
|
||||
//Retry 3 times. Do not call this on main thread! It would block the UI
|
||||
|
||||
int tries = 0;
|
||||
while (!am.IsDeviceReady && tries < 3)
|
||||
{
|
||||
Thread.Sleep(250);
|
||||
Logger.WriteLine(am.GetDisplayName() + " synchronising. Try " + (tries + 1));
|
||||
am.SynchronizeDevice();
|
||||
++tries;
|
||||
}
|
||||
|
||||
ConnectedMice.Add(am);
|
||||
Logger.WriteLine(am.GetDisplayName() + " added to the list: " + ConnectedMice.Count + " device are conneted.");
|
||||
if (DeviceChanged is not null)
|
||||
{
|
||||
DeviceChanged(am, EventArgs.Empty);
|
||||
}
|
||||
UpdateSettingsView();
|
||||
}
|
||||
Logger.WriteLine(am.GetDisplayName() + " added to the list: " + ConnectedMice.Count + " device are conneted.");
|
||||
|
||||
|
||||
am.Disconnect += Mouse_Disconnect;
|
||||
am.MouseReadyChanged += MouseReadyChanged;
|
||||
am.BatteryUpdated += BatteryUpdated;
|
||||
if (DeviceChanged is not null)
|
||||
{
|
||||
DeviceChanged(am, EventArgs.Empty);
|
||||
}
|
||||
UpdateSettingsView();
|
||||
}
|
||||
|
||||
private static void BatteryUpdated(object? sender, EventArgs e)
|
||||
{
|
||||
UpdateSettingsView();
|
||||
}
|
||||
|
||||
private static void MouseReadyChanged(object? sender, EventArgs e)
|
||||
{
|
||||
UpdateSettingsView();
|
||||
}
|
||||
|
||||
private static void Mouse_Disconnect(object? sender, EventArgs e)
|
||||
@@ -112,14 +157,17 @@ namespace GHelper.Peripherals
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
AsusMouse am = (AsusMouse)sender;
|
||||
lock (_LOCK)
|
||||
{
|
||||
AsusMouse am = (AsusMouse)sender;
|
||||
ConnectedMice.Remove(am);
|
||||
Logger.WriteLine(am.GetDisplayName() + " reported disconnect. " + ConnectedMice.Count + " device are conneted.");
|
||||
am.Dispose();
|
||||
UpdateSettingsView();
|
||||
}
|
||||
|
||||
Logger.WriteLine(am.GetDisplayName() + " reported disconnect. " + ConnectedMice.Count + " device are conneted.");
|
||||
am.Dispose();
|
||||
|
||||
UpdateSettingsView();
|
||||
}
|
||||
|
||||
|
||||
@@ -137,13 +185,30 @@ namespace GHelper.Peripherals
|
||||
//Add one line for every supported mouse class here to support them.
|
||||
DetectMouse(new ChakramX());
|
||||
DetectMouse(new ChakramXWired());
|
||||
DetectMouse(new GladiusIIIAimpoint());
|
||||
DetectMouse(new GladiusIIIAimpointWired());
|
||||
DetectMouse(new ROGKerisWireless());
|
||||
DetectMouse(new ROGKerisWirelessWired());
|
||||
DetectMouse(new ROGKerisWirelessEvaEdition());
|
||||
DetectMouse(new ROGKerisWirelessEvaEditionWired());
|
||||
DetectMouse(new TUFM4Wirelss());
|
||||
DetectMouse(new StrixImpactIIWireless());
|
||||
DetectMouse(new StrixImpactIIWirelessWired());
|
||||
DetectMouse(new GladiusIII());
|
||||
DetectMouse(new GladiusIIIWired());
|
||||
DetectMouse(new HarpeAceAimLabEdition());
|
||||
DetectMouse(new HarpeAceAimLabEditionWired());
|
||||
DetectMouse(new HarpeAceAimLabEditionOmni());
|
||||
DetectMouse(new TUFM3());
|
||||
DetectMouse(new KerisWirelssAimpoint());
|
||||
DetectMouse(new KerisWirelssAimpointWired());
|
||||
DetectMouse(new PugioII());
|
||||
DetectMouse(new PugioIIWired());
|
||||
}
|
||||
|
||||
public static void DetectMouse(AsusMouse am)
|
||||
{
|
||||
if (am.IsDeviceConnected() && !ConnectedMice.Contains(am))
|
||||
if (am.IsDeviceConnected() && !IsDeviceConnected(am))
|
||||
{
|
||||
Logger.WriteLine("Detected a new" + am.GetDisplayName() + " . Connecting...");
|
||||
Connect(am);
|
||||
@@ -162,8 +227,14 @@ namespace GHelper.Peripherals
|
||||
|
||||
private static void Device_Changed(object? sender, HidSharp.DeviceListChangedEventArgs e)
|
||||
{
|
||||
timer.Start();
|
||||
}
|
||||
|
||||
private static void DeviceTimer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
|
||||
{
|
||||
timer.Stop();
|
||||
Logger.WriteLine("HID Device Event: Checking for new ASUS Mice");
|
||||
Task task = Task.Run((Action)DetectAllAsusMice);
|
||||
DetectAllAsusMice();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -95,6 +95,7 @@ namespace GHelper
|
||||
settingsForm.InitAura();
|
||||
settingsForm.InitMatrix();
|
||||
|
||||
gpuControl.InitXGM();
|
||||
|
||||
SetAutoModes();
|
||||
|
||||
@@ -128,6 +129,7 @@ namespace GHelper
|
||||
private static void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
|
||||
{
|
||||
gpuControl.StandardModeFix();
|
||||
BatteryControl.SetBatteryChargeLimit();
|
||||
}
|
||||
|
||||
private static void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
|
||||
@@ -163,6 +165,8 @@ namespace GHelper
|
||||
if (settingsForm.updates is not null && settingsForm.updates.Text != "")
|
||||
settingsForm.updates.InitTheme();
|
||||
|
||||
if (settingsForm.matrix is not null && settingsForm.matrix.Text != "")
|
||||
settingsForm.matrix.InitTheme();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -193,15 +197,17 @@ namespace GHelper
|
||||
BatteryControl.SetBatteryChargeLimit();
|
||||
|
||||
settingsForm.AutoKeyboard();
|
||||
settingsForm.matrix.SetMatrix();
|
||||
settingsForm.matrixControl.SetMatrix(true);
|
||||
}
|
||||
|
||||
private static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
|
||||
{
|
||||
Logger.WriteLine("Power Mode:" + e.Mode.ToString());
|
||||
|
||||
|
||||
if (e.Mode == PowerModes.Suspend) gpuControl.StandardModeFix();
|
||||
if (e.Mode == PowerModes.Suspend)
|
||||
{
|
||||
Logger.WriteLine("Power Mode Changed:" + e.Mode.ToString());
|
||||
gpuControl.StandardModeFix();
|
||||
}
|
||||
|
||||
if (SystemInformation.PowerStatus.PowerLineStatus == isPlugged) return;
|
||||
SetAutoModes(true);
|
||||
|
||||
26
app/Properties/Resources.Designer.cs
generated
26
app/Properties/Resources.Designer.cs
generated
@@ -270,6 +270,16 @@ namespace GHelper.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap icons8_hibernate_32 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("icons8-hibernate-32", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
@@ -571,7 +581,7 @@ namespace GHelper.Properties {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap lighting_dot_24 {
|
||||
get {
|
||||
@@ -581,7 +591,7 @@ namespace GHelper.Properties {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap lighting_dot_32 {
|
||||
get {
|
||||
@@ -601,7 +611,17 @@ namespace GHelper.Properties {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Icon ähnlich wie (Symbol).
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
internal static byte[] MFont {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("MFont", resourceCulture);
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
||||
/// </summary>
|
||||
internal static System.Drawing.Icon standard {
|
||||
get {
|
||||
|
||||
@@ -130,6 +130,9 @@
|
||||
<data name="icons8_mute_unmute_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-mute-unmute-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-hibernate-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-hibernate-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-quit-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-quit-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
@@ -148,24 +151,30 @@
|
||||
<data name="icons8-charging-battery-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-charging-battery-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="lighting_dot_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\lighting_dot_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_touchpad_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-touchpad-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-automation-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-automation-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_maus_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-maus-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-help-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-help-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-software-32-white" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-software-32-white.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_add_64" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-add-64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-game-controller-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-game-controller-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_video_48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-video-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-refresh-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-refresh-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
@@ -178,12 +187,18 @@
|
||||
<data name="icons8_charged_battery_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-charged-battery-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="lighting_dot_24" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\lighting_dot_24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-bicycle-48 (1)" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-bicycle-48 (1).png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="brightness_down" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\brightness-down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_batterie_voll_geladen_48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-batterie-voll-geladen-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_charging_battery_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-charging-battery-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
@@ -193,6 +208,9 @@
|
||||
<data name="icons8-video-card-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-video-card-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="lighting_dot_48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\lighting_dot_48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-rocket-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-rocket-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
@@ -202,8 +220,8 @@
|
||||
<data name="backlight_up" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\backlight-up.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-spa-flower-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-spa-flower-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<data name="icons8_video_48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-video-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-save-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-save-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
@@ -220,9 +238,15 @@
|
||||
<data name="icons8-fan-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-fan-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_maus_48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-maus-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_remove_64" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-remove-64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_mauszeiger_50" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-mauszeiger-50.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-matrix-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-matrix-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
@@ -244,6 +268,9 @@
|
||||
<data name="ultimate" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\ultimate.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-spa-flower-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-spa-flower-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="backlight" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\backlight.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
@@ -256,34 +283,13 @@
|
||||
<data name="icons8-laptop-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-laptop-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_rocket_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-rocket-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-software-32-white" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-software-32-white.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_maus_48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-maus-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_maus_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-maus-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_mauszeiger_50" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-mauszeiger-50.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_batterie_voll_geladen_48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-batterie-voll-geladen-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_ladende_batterie_48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-ladende-batterie-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="lighting_dot_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\lighting_dot_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<data name="icons8_rocket_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-rocket-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="lighting_dot_48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\lighting_dot_48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="lighting_dot_24" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\lighting_dot_24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<data name="MFont" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Font.otf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
||||
109
app/Properties/Strings.Designer.cs
generated
109
app/Properties/Strings.Designer.cs
generated
@@ -60,6 +60,15 @@ namespace GHelper.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Acceleration.
|
||||
/// </summary>
|
||||
internal static string Acceleration {
|
||||
get {
|
||||
return ResourceManager.GetString("Acceleration", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Can't connect to ASUS ACPI. Application can't function without it. Try to install Asus System Control Interface.
|
||||
/// </summary>
|
||||
@@ -258,6 +267,15 @@ namespace GHelper.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Lighting Mode.
|
||||
/// </summary>
|
||||
internal static string AuraLightingMode {
|
||||
get {
|
||||
return ResourceManager.GetString("AuraLightingMode", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Normal.
|
||||
/// </summary>
|
||||
@@ -321,6 +339,51 @@ namespace GHelper.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to All.
|
||||
/// </summary>
|
||||
internal static string AuraZoneAll {
|
||||
get {
|
||||
return ResourceManager.GetString("AuraZoneAll", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Dock.
|
||||
/// </summary>
|
||||
internal static string AuraZoneDock {
|
||||
get {
|
||||
return ResourceManager.GetString("AuraZoneDock", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Logo.
|
||||
/// </summary>
|
||||
internal static string AuraZoneLogo {
|
||||
get {
|
||||
return ResourceManager.GetString("AuraZoneLogo", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Scrollwheel.
|
||||
/// </summary>
|
||||
internal static string AuraZoneScroll {
|
||||
get {
|
||||
return ResourceManager.GetString("AuraZoneScroll", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Underglow.
|
||||
/// </summary>
|
||||
internal static string AuraZoneUnderglow {
|
||||
get {
|
||||
return ResourceManager.GetString("AuraZoneUnderglow", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Auto Apply.
|
||||
/// </summary>
|
||||
@@ -375,6 +438,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>
|
||||
@@ -383,7 +455,7 @@ namespace GHelper.Properties {
|
||||
return ResourceManager.GetString("BatteryChargeLimit", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Battery Health.
|
||||
/// </summary>
|
||||
@@ -474,6 +546,15 @@ namespace GHelper.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Deceleration.
|
||||
/// </summary>
|
||||
internal static string Deceleration {
|
||||
get {
|
||||
return ResourceManager.GetString("Deceleration", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Default.
|
||||
/// </summary>
|
||||
@@ -502,7 +583,7 @@ namespace GHelper.Properties {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Download Update.
|
||||
/// Looks up a localized string similar to Download.
|
||||
/// </summary>
|
||||
internal static string DownloadUpdate {
|
||||
get {
|
||||
@@ -764,6 +845,15 @@ namespace GHelper.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Minutes till Hibernation in sleep on battery (0 - OFF).
|
||||
/// </summary>
|
||||
internal static string HibernateAfter {
|
||||
get {
|
||||
return ResourceManager.GetString("HibernateAfter", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to High.
|
||||
/// </summary>
|
||||
@@ -1007,6 +1097,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>
|
||||
@@ -1087,7 +1186,7 @@ namespace GHelper.Properties {
|
||||
return ResourceManager.GetString("NoNewUpdates", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Not Connected.
|
||||
/// </summary>
|
||||
@@ -1242,7 +1341,7 @@ namespace GHelper.Properties {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Something is using dGPU and preventing Eco mode. Restart dGPU in device manager? * Please proceed at your own risk..
|
||||
/// Looks up a localized string similar to Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk).
|
||||
/// </summary>
|
||||
internal static string RestartGPU {
|
||||
get {
|
||||
@@ -1393,7 +1492,7 @@ namespace GHelper.Properties {
|
||||
return ResourceManager.GetString("ToggleAura", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Auto Toggle Clamshell Mode.
|
||||
/// </summary>
|
||||
|
||||
@@ -117,6 +117,9 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Acceleration" xml:space="preserve">
|
||||
<value>Beschleunigung</value>
|
||||
</data>
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Verbindung zu ASUS ACPI fehlgeschlagen. G-Helper kann nicht ausgeführt werden. Bitte installiere ASUS System Control Interface.</value>
|
||||
</data>
|
||||
@@ -183,6 +186,9 @@
|
||||
<data name="AuraFast" xml:space="preserve">
|
||||
<value>Schnell</value>
|
||||
</data>
|
||||
<data name="AuraLightingMode" xml:space="preserve">
|
||||
<value>Beleuchtungsmodus</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>Normal</value>
|
||||
</data>
|
||||
@@ -204,6 +210,21 @@
|
||||
<data name="AuraStrobe" xml:space="preserve">
|
||||
<value>Stroboskop</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>Alle</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dock</value>
|
||||
</data>
|
||||
<data name="AuraZoneLogo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Scrollrad</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Front</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>Automatisch anwenden</value>
|
||||
</data>
|
||||
@@ -222,6 +243,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>
|
||||
@@ -255,6 +279,9 @@
|
||||
<data name="Custom" xml:space="preserve">
|
||||
<value>Benutzerdefiniert</value>
|
||||
</data>
|
||||
<data name="Deceleration" xml:space="preserve">
|
||||
<value>Verlangsamung</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>Standard</value>
|
||||
</data>
|
||||
@@ -265,7 +292,7 @@
|
||||
<value>Entlädt</value>
|
||||
</data>
|
||||
<data name="DownloadUpdate" xml:space="preserve">
|
||||
<value>Updates herunterladen</value>
|
||||
<value>Download</value>
|
||||
</data>
|
||||
<data name="DriverAndSoftware" xml:space="preserve">
|
||||
<value>Treiber und Software</value>
|
||||
@@ -353,6 +380,9 @@ Trotzdem fortfahren?</value>
|
||||
<data name="GPUTempTarget" xml:space="preserve">
|
||||
<value>Maximale GPU Temperatur</value>
|
||||
</data>
|
||||
<data name="HibernateAfter" xml:space="preserve">
|
||||
<value>Minuten bis zum Ruhezustand im Standby (0 = Aus)</value>
|
||||
</data>
|
||||
<data name="High" xml:space="preserve">
|
||||
<value>Hoch</value>
|
||||
</data>
|
||||
@@ -434,6 +464,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>
|
||||
|
||||
@@ -117,6 +117,9 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Acceleration" xml:space="preserve">
|
||||
<value>Aceleración</value>
|
||||
</data>
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>No se pudo conectar con ASUS ACPI. La aplicación no puede funcionar sin el recurso. Instale Asus System Control Interface</value>
|
||||
</data>
|
||||
@@ -163,26 +166,29 @@
|
||||
<value>Servicios de Asus en ejecución</value>
|
||||
</data>
|
||||
<data name="AuraBatteryState" xml:space="preserve">
|
||||
<value>Battery State</value>
|
||||
<value>Estado de la batería</value>
|
||||
</data>
|
||||
<data name="AuraBreathe" xml:space="preserve">
|
||||
<value>Respiración</value>
|
||||
</data>
|
||||
<data name="AuraClockwise" xml:space="preserve">
|
||||
<value>Clockwise</value>
|
||||
<value>Sentido horario</value>
|
||||
</data>
|
||||
<data name="AuraColorCycle" xml:space="preserve">
|
||||
<value>Ciclo de color</value>
|
||||
</data>
|
||||
<data name="AuraComet" xml:space="preserve">
|
||||
<value>Comet</value>
|
||||
<value>Cometa</value>
|
||||
</data>
|
||||
<data name="AuraCounterClockwise" xml:space="preserve">
|
||||
<value>Counterclockwise</value>
|
||||
<value>Sentido anti-horario</value>
|
||||
</data>
|
||||
<data name="AuraFast" xml:space="preserve">
|
||||
<value>Rápido</value>
|
||||
</data>
|
||||
<data name="AuraLightingMode" xml:space="preserve">
|
||||
<value>Modo de iluminación</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>Normal</value>
|
||||
</data>
|
||||
@@ -190,10 +196,10 @@
|
||||
<value>Arcoíris</value>
|
||||
</data>
|
||||
<data name="AuraRandomColor" xml:space="preserve">
|
||||
<value>Random</value>
|
||||
<value>Aleatorio</value>
|
||||
</data>
|
||||
<data name="AuraReact" xml:space="preserve">
|
||||
<value>React</value>
|
||||
<value>Sensible</value>
|
||||
</data>
|
||||
<data name="AuraSlow" xml:space="preserve">
|
||||
<value>Lento</value>
|
||||
@@ -204,6 +210,21 @@
|
||||
<data name="AuraStrobe" xml:space="preserve">
|
||||
<value>Estroboscópico</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>Todo</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dock</value>
|
||||
</data>
|
||||
<data name="AuraZoneLogo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Rueda de desplazamiento</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Underglow</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>Autoaplicar</value>
|
||||
</data>
|
||||
@@ -222,6 +243,9 @@
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>Equilibrado</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>Carga</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Límite de carga</value>
|
||||
</data>
|
||||
@@ -255,6 +279,9 @@
|
||||
<data name="Custom" xml:space="preserve">
|
||||
<value>Personalizado</value>
|
||||
</data>
|
||||
<data name="Deceleration" xml:space="preserve">
|
||||
<value>Desaceleración</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>Por defecto</value>
|
||||
</data>
|
||||
@@ -265,7 +292,7 @@
|
||||
<value>Descargando</value>
|
||||
</data>
|
||||
<data name="DownloadUpdate" xml:space="preserve">
|
||||
<value>Descargar actualización</value>
|
||||
<value>Descargar</value>
|
||||
</data>
|
||||
<data name="DriverAndSoftware" xml:space="preserve">
|
||||
<value>Drivers y Software</value>
|
||||
@@ -285,7 +312,7 @@
|
||||
<value>Modo de Pantalla NVIDIA no está configurado en Optimus</value>
|
||||
</data>
|
||||
<data name="EnergySettings" xml:space="preserve">
|
||||
<value>Energy Settings</value>
|
||||
<value>Ajustes de energía</value>
|
||||
</data>
|
||||
<data name="Extra" xml:space="preserve">
|
||||
<value>Adicional</value>
|
||||
@@ -353,8 +380,11 @@
|
||||
<data name="GPUTempTarget" xml:space="preserve">
|
||||
<value>Temperatura objetivo</value>
|
||||
</data>
|
||||
<data name="HibernateAfter" xml:space="preserve">
|
||||
<value>Minutos hasta hibernación en suspensión con batería (0 - OFF)</value>
|
||||
</data>
|
||||
<data name="High" xml:space="preserve">
|
||||
<value>High</value>
|
||||
<value>Alto</value>
|
||||
</data>
|
||||
<data name="KeyBindings" xml:space="preserve">
|
||||
<value>Atajos de teclado</value>
|
||||
@@ -381,13 +411,13 @@
|
||||
<value>Barra de luz</value>
|
||||
</data>
|
||||
<data name="Lighting" xml:space="preserve">
|
||||
<value>Lighting</value>
|
||||
<value>Iluminación</value>
|
||||
</data>
|
||||
<data name="Logo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="Low" xml:space="preserve">
|
||||
<value>Low</value>
|
||||
<value>Bajo</value>
|
||||
</data>
|
||||
<data name="MatrixAudio" xml:space="preserve">
|
||||
<value>Visualizador de audio</value>
|
||||
@@ -423,28 +453,31 @@
|
||||
<value>Frecuencia de actualización de 60Hz para ahorrar batería</value>
|
||||
</data>
|
||||
<data name="Minute" xml:space="preserve">
|
||||
<value>Minute</value>
|
||||
<value>Minuto</value>
|
||||
</data>
|
||||
<data name="Minutes" xml:space="preserve">
|
||||
<value>Minutes</value>
|
||||
<value>Minutos</value>
|
||||
</data>
|
||||
<data name="MouseAngleSnapping" xml:space="preserve">
|
||||
<value>Angle Snapping</value>
|
||||
<value>Ajuste de ángulo</value>
|
||||
</data>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Auto Power Off After</value>
|
||||
<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>Lift Off Distance</value>
|
||||
<value>Distancia de despegue (LOD)</value>
|
||||
</data>
|
||||
<data name="MouseLowBatteryWarning" xml:space="preserve">
|
||||
<value>Low Battery Warning at</value>
|
||||
<value>Aviso de batería baja al</value>
|
||||
</data>
|
||||
<data name="MousePerformance" xml:space="preserve">
|
||||
<value>Performance</value>
|
||||
<value>Rendimiento</value>
|
||||
</data>
|
||||
<data name="MouseSynchronize" xml:space="preserve">
|
||||
<value>Synchronize with mouse</value>
|
||||
<value>Sincronizar con el ratón</value>
|
||||
</data>
|
||||
<data name="Multizone" xml:space="preserve">
|
||||
<value>Multizona</value>
|
||||
@@ -453,7 +486,7 @@
|
||||
<value>Silenciar micrófono</value>
|
||||
</data>
|
||||
<data name="Never" xml:space="preserve">
|
||||
<value>Never</value>
|
||||
<value>Nunca</value>
|
||||
</data>
|
||||
<data name="NewUpdates" xml:space="preserve">
|
||||
<value>Nuevas actualizaciones</value>
|
||||
@@ -462,7 +495,7 @@
|
||||
<value>No hay actualizaciones</value>
|
||||
</data>
|
||||
<data name="NotConnected" xml:space="preserve">
|
||||
<value>Not Connected</value>
|
||||
<value>No conectado</value>
|
||||
</data>
|
||||
<data name="OpenGHelper" xml:space="preserve">
|
||||
<value>Abrir ventana G-Helper</value>
|
||||
@@ -486,7 +519,7 @@
|
||||
<value>Modo</value>
|
||||
</data>
|
||||
<data name="Peripherals" xml:space="preserve">
|
||||
<value>Peripherals</value>
|
||||
<value>Periféricos</value>
|
||||
</data>
|
||||
<data name="PictureGif" xml:space="preserve">
|
||||
<value>Imagen / Gif</value>
|
||||
@@ -495,7 +528,7 @@
|
||||
<value>Reproducir / Pausar</value>
|
||||
</data>
|
||||
<data name="PollingRate" xml:space="preserve">
|
||||
<value>Polling Rate</value>
|
||||
<value>Velocidad de respuesta</value>
|
||||
</data>
|
||||
<data name="PowerLimits" xml:space="preserve">
|
||||
<value>Límites de energía</value>
|
||||
@@ -507,13 +540,13 @@
|
||||
<value>Capturar pantalla</value>
|
||||
</data>
|
||||
<data name="Profile" xml:space="preserve">
|
||||
<value>Profile</value>
|
||||
<value>Perfil</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Quitar</value>
|
||||
</data>
|
||||
<data name="RestartGPU" xml:space="preserve">
|
||||
<value>Algo está usando la dGPU e impide usar Modo Eco. ¿Reiniciar dGPU en administrador de dispositivos? * Proceda bajo su propio riesgo.</value>
|
||||
<value>Algo está usando la dGPU e impide el modo Eco. ¿Reiniciar dGPU en el administrador de dispositivos? (Proceda bajo su propio riesgo)</value>
|
||||
</data>
|
||||
<data name="RPM" xml:space="preserve">
|
||||
<value>RPM</value>
|
||||
|
||||
@@ -117,6 +117,9 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Acceleration" xml:space="preserve">
|
||||
<value>Accélération</value>
|
||||
</data>
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Connexion impossible avec ASUS ACPI. L'application ne peut fonctionner sans. Veuillez installer Asus System Control Interface</value>
|
||||
</data>
|
||||
@@ -163,26 +166,29 @@
|
||||
<value>Services Asus actifs</value>
|
||||
</data>
|
||||
<data name="AuraBatteryState" xml:space="preserve">
|
||||
<value>Battery State</value>
|
||||
<value>État de la batterie</value>
|
||||
</data>
|
||||
<data name="AuraBreathe" xml:space="preserve">
|
||||
<value>Pulsation</value>
|
||||
</data>
|
||||
<data name="AuraClockwise" xml:space="preserve">
|
||||
<value>Clockwise</value>
|
||||
<value>Sens horaire</value>
|
||||
</data>
|
||||
<data name="AuraColorCycle" xml:space="preserve">
|
||||
<value>Cycle de couleur</value>
|
||||
</data>
|
||||
<data name="AuraComet" xml:space="preserve">
|
||||
<value>Comet</value>
|
||||
<value>Comète</value>
|
||||
</data>
|
||||
<data name="AuraCounterClockwise" xml:space="preserve">
|
||||
<value>Counterclockwise</value>
|
||||
<value>Sens antihoraire</value>
|
||||
</data>
|
||||
<data name="AuraFast" xml:space="preserve">
|
||||
<value>Rapide</value>
|
||||
</data>
|
||||
<data name="AuraLightingMode" xml:space="preserve">
|
||||
<value>Mode d’Éclairage</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>Normal</value>
|
||||
</data>
|
||||
@@ -190,7 +196,7 @@
|
||||
<value>Arc-en-ciel</value>
|
||||
</data>
|
||||
<data name="AuraRandomColor" xml:space="preserve">
|
||||
<value>Random</value>
|
||||
<value>Aléatoire</value>
|
||||
</data>
|
||||
<data name="AuraReact" xml:space="preserve">
|
||||
<value>React</value>
|
||||
@@ -204,8 +210,23 @@
|
||||
<data name="AuraStrobe" xml:space="preserve">
|
||||
<value>Stroboscopique</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>Tout</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dock</value>
|
||||
</data>
|
||||
<data name="AuraZoneLogo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Molette</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Underglow</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>Applicage automatique</value>
|
||||
<value>Appliquer automatiquement</value>
|
||||
</data>
|
||||
<data name="AutoMode" xml:space="preserve">
|
||||
<value>Automatique</value>
|
||||
@@ -222,11 +243,14 @@
|
||||
<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>
|
||||
<data name="BatteryHealth" xml:space="preserve">
|
||||
<value>Battery Health</value>
|
||||
<value>Santé de la batterie</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>Mise à jour BIOS et pilotes</value>
|
||||
@@ -255,6 +279,9 @@
|
||||
<data name="Custom" xml:space="preserve">
|
||||
<value>Personnalisé</value>
|
||||
</data>
|
||||
<data name="Deceleration" xml:space="preserve">
|
||||
<value>Décélération</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>Par défaut</value>
|
||||
</data>
|
||||
@@ -265,7 +292,7 @@
|
||||
<value>Taux décharge </value>
|
||||
</data>
|
||||
<data name="DownloadUpdate" xml:space="preserve">
|
||||
<value>Télécharger la mise à jour</value>
|
||||
<value>Télécharger</value>
|
||||
</data>
|
||||
<data name="DriverAndSoftware" xml:space="preserve">
|
||||
<value>Pilotes et Logiciels</value>
|
||||
@@ -285,7 +312,7 @@ Voulez-vous continuer ?</value>
|
||||
<value>Le mode d'affichage NVIDIA n'est pas réglé sur Optimus</value>
|
||||
</data>
|
||||
<data name="EnergySettings" xml:space="preserve">
|
||||
<value>Energy Settings</value>
|
||||
<value>Paramètres d'énergie</value>
|
||||
</data>
|
||||
<data name="Extra" xml:space="preserve">
|
||||
<value>+ d'options</value>
|
||||
@@ -353,8 +380,11 @@ Voulez-vous continuer ?</value>
|
||||
<data name="GPUTempTarget" xml:space="preserve">
|
||||
<value>Température cible</value>
|
||||
</data>
|
||||
<data name="HibernateAfter" xml:space="preserve">
|
||||
<value>Minutes jusqu'à la mise en veille prolongée sur la batterie (0 - OFF)</value>
|
||||
</data>
|
||||
<data name="High" xml:space="preserve">
|
||||
<value>High</value>
|
||||
<value>Élevé</value>
|
||||
</data>
|
||||
<data name="KeyBindings" xml:space="preserve">
|
||||
<value>Raccourcis clavier</value>
|
||||
@@ -381,13 +411,13 @@ Voulez-vous continuer ?</value>
|
||||
<value>Barre lumineuse</value>
|
||||
</data>
|
||||
<data name="Lighting" xml:space="preserve">
|
||||
<value>Lighting</value>
|
||||
<value>Éclairage</value>
|
||||
</data>
|
||||
<data name="Logo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="Low" xml:space="preserve">
|
||||
<value>Low</value>
|
||||
<value>Faible</value>
|
||||
</data>
|
||||
<data name="MatrixAudio" xml:space="preserve">
|
||||
<value>Visualiseur Audio</value>
|
||||
@@ -432,19 +462,22 @@ Voulez-vous continuer ?</value>
|
||||
<value>Angle Snapping</value>
|
||||
</data>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Auto Power Off After</value>
|
||||
<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>
|
||||
<data name="MouseLowBatteryWarning" xml:space="preserve">
|
||||
<value>Low Battery Warning at</value>
|
||||
<value>Avertissement de batterie faible à</value>
|
||||
</data>
|
||||
<data name="MousePerformance" xml:space="preserve">
|
||||
<value>Performance</value>
|
||||
</data>
|
||||
<data name="MouseSynchronize" xml:space="preserve">
|
||||
<value>Synchronize with mouse</value>
|
||||
<value>Synchroniser avec le pointeur</value>
|
||||
</data>
|
||||
<data name="Multizone" xml:space="preserve">
|
||||
<value>Multi-zone</value>
|
||||
@@ -453,7 +486,7 @@ Voulez-vous continuer ?</value>
|
||||
<value>Désactiver le micro</value>
|
||||
</data>
|
||||
<data name="Never" xml:space="preserve">
|
||||
<value>Never</value>
|
||||
<value>Jamais</value>
|
||||
</data>
|
||||
<data name="NewUpdates" xml:space="preserve">
|
||||
<value>Nouvelles mises à jour</value>
|
||||
@@ -462,7 +495,7 @@ Voulez-vous continuer ?</value>
|
||||
<value>Aucune mise à jour disponible</value>
|
||||
</data>
|
||||
<data name="NotConnected" xml:space="preserve">
|
||||
<value>Not Connected</value>
|
||||
<value>Non connecté</value>
|
||||
</data>
|
||||
<data name="OpenGHelper" xml:space="preserve">
|
||||
<value>Ouvrir G-Helper</value>
|
||||
@@ -486,7 +519,7 @@ Voulez-vous continuer ?</value>
|
||||
<value>Mode Performance</value>
|
||||
</data>
|
||||
<data name="Peripherals" xml:space="preserve">
|
||||
<value>Peripherals</value>
|
||||
<value>Périphériques</value>
|
||||
</data>
|
||||
<data name="PictureGif" xml:space="preserve">
|
||||
<value>Image / Gif</value>
|
||||
@@ -507,13 +540,13 @@ Voulez-vous continuer ?</value>
|
||||
<value>Capture d'écran</value>
|
||||
</data>
|
||||
<data name="Profile" xml:space="preserve">
|
||||
<value>Profile</value>
|
||||
<value>Profil</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Quitter</value>
|
||||
</data>
|
||||
<data name="RestartGPU" xml:space="preserve">
|
||||
<value>Un processus utilisant le dGPU empêche le passage en mode Éco. Redémarrer le dGPU ? * Procédez à vos risques.</value>
|
||||
<value>Un programme utilise le dGPU et empêche le passage en mode Éco. Laissez G-Helper tenter un redémarrage du dGPU dans le gestionnaire de tâches ? (Procéder à vos propres risques)</value>
|
||||
</data>
|
||||
<data name="RPM" xml:space="preserve">
|
||||
<value> RPM</value>
|
||||
|
||||
@@ -117,6 +117,9 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Acceleration" xml:space="preserve">
|
||||
<value>Acceleration</value>
|
||||
</data>
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Nem sikerült csatlakozni az ASUS ACPI-hez, az alkalmazás nem működik enélkül. Próbáld meg telepíteni az ASUS rendszervezérlő interfész-t</value>
|
||||
</data>
|
||||
@@ -183,6 +186,9 @@
|
||||
<data name="AuraFast" xml:space="preserve">
|
||||
<value>Gyors</value>
|
||||
</data>
|
||||
<data name="AuraLightingMode" xml:space="preserve">
|
||||
<value>Lighting Mode</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>Normál</value>
|
||||
</data>
|
||||
@@ -204,6 +210,21 @@
|
||||
<data name="AuraStrobe" xml:space="preserve">
|
||||
<value>Stroboszkóp</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>All</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dock</value>
|
||||
</data>
|
||||
<data name="AuraZoneLogo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Scrollwheel</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Underglow</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>Automatikus alkalmazás</value>
|
||||
</data>
|
||||
@@ -222,6 +243,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>
|
||||
@@ -255,6 +279,9 @@
|
||||
<data name="Custom" xml:space="preserve">
|
||||
<value>Egyéni</value>
|
||||
</data>
|
||||
<data name="Deceleration" xml:space="preserve">
|
||||
<value>Deceleration</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>Alapért.</value>
|
||||
</data>
|
||||
@@ -265,7 +292,7 @@
|
||||
<value>Merülés</value>
|
||||
</data>
|
||||
<data name="DownloadUpdate" xml:space="preserve">
|
||||
<value>Frissítés letöltése</value>
|
||||
<value>Download</value>
|
||||
</data>
|
||||
<data name="DriverAndSoftware" xml:space="preserve">
|
||||
<value>Illesztőprogramok és alkalmazások</value>
|
||||
@@ -353,6 +380,9 @@ Do you still want to continue?</value>
|
||||
<data name="GPUTempTarget" xml:space="preserve">
|
||||
<value>Célhőmérséklet</value>
|
||||
</data>
|
||||
<data name="HibernateAfter" xml:space="preserve">
|
||||
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
|
||||
</data>
|
||||
<data name="High" xml:space="preserve">
|
||||
<value>High</value>
|
||||
</data>
|
||||
@@ -434,6 +464,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>
|
||||
@@ -513,7 +546,7 @@ Do you still want to continue?</value>
|
||||
<value>Bezárás</value>
|
||||
</data>
|
||||
<data name="RestartGPU" xml:space="preserve">
|
||||
<value>Valami használja még a dGPU-t, ezzel megakadályozva az Eco móda lépést. Újraindítsuk a dGPU-t eszközkezelőben? * Kérjük, saját felelősségére folytassa.</value>
|
||||
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
|
||||
</data>
|
||||
<data name="RPM" xml:space="preserve">
|
||||
<value>Fordulatszám</value>
|
||||
|
||||
@@ -117,8 +117,11 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Acceleration" xml:space="preserve">
|
||||
<value>Accelerazione</value>
|
||||
</data>
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Impossibile connettersi ad ASUS ACPI. Senza di essa l'applicazione non può funzionare. Prova a installare Asus Satem Contro Interfacce</value>
|
||||
<value>Impossibile connettersi ad ASUS ACPI. Senza di essa l'applicazione non può funzionare. Prova ad installare Asus System Control Interface</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>Uso intensivo della GPU, disabilitare?</value>
|
||||
@@ -163,26 +166,29 @@
|
||||
<value>Servizi Asus in Esecuzione</value>
|
||||
</data>
|
||||
<data name="AuraBatteryState" xml:space="preserve">
|
||||
<value>Battery State</value>
|
||||
<value>Stato Batteria</value>
|
||||
</data>
|
||||
<data name="AuraBreathe" xml:space="preserve">
|
||||
<value>Respiro</value>
|
||||
</data>
|
||||
<data name="AuraClockwise" xml:space="preserve">
|
||||
<value>Clockwise</value>
|
||||
<value>Senso Orario</value>
|
||||
</data>
|
||||
<data name="AuraColorCycle" xml:space="preserve">
|
||||
<value>Ciclo Colori</value>
|
||||
</data>
|
||||
<data name="AuraComet" xml:space="preserve">
|
||||
<value>Comet</value>
|
||||
<value>Cometa</value>
|
||||
</data>
|
||||
<data name="AuraCounterClockwise" xml:space="preserve">
|
||||
<value>Counterclockwise</value>
|
||||
<value>Senso Antiorario</value>
|
||||
</data>
|
||||
<data name="AuraFast" xml:space="preserve">
|
||||
<value>Veloce</value>
|
||||
</data>
|
||||
<data name="AuraLightingMode" xml:space="preserve">
|
||||
<value>Modalità Illuminazione</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>Normale</value>
|
||||
</data>
|
||||
@@ -190,10 +196,10 @@
|
||||
<value>Arcobaleno</value>
|
||||
</data>
|
||||
<data name="AuraRandomColor" xml:space="preserve">
|
||||
<value>Random</value>
|
||||
<value>Casuale</value>
|
||||
</data>
|
||||
<data name="AuraReact" xml:space="preserve">
|
||||
<value>React</value>
|
||||
<value>Reazione</value>
|
||||
</data>
|
||||
<data name="AuraSlow" xml:space="preserve">
|
||||
<value>Lenta</value>
|
||||
@@ -204,6 +210,21 @@
|
||||
<data name="AuraStrobe" xml:space="preserve">
|
||||
<value>Strobo</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>Tutte</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dock</value>
|
||||
</data>
|
||||
<data name="AuraZoneLogo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Rotellina</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Underglow</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>Auto Applica</value>
|
||||
</data>
|
||||
@@ -222,6 +243,9 @@
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>Bilanciato</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>Carica</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Limite Ricarica Batteria</value>
|
||||
</data>
|
||||
@@ -255,6 +279,9 @@
|
||||
<data name="Custom" xml:space="preserve">
|
||||
<value>Personalizzato</value>
|
||||
</data>
|
||||
<data name="Deceleration" xml:space="preserve">
|
||||
<value>Decelerazione</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>Default</value>
|
||||
</data>
|
||||
@@ -265,7 +292,7 @@
|
||||
<value>Scaricamento</value>
|
||||
</data>
|
||||
<data name="DownloadUpdate" xml:space="preserve">
|
||||
<value>Scarica aggiornamento</value>
|
||||
<value>Scarica</value>
|
||||
</data>
|
||||
<data name="DriverAndSoftware" xml:space="preserve">
|
||||
<value>Driver e Software</value>
|
||||
@@ -285,7 +312,7 @@ Sei sicuro di voler continuare?</value>
|
||||
<value>Modalità schermo NVIDIA non impostata su Optimus</value>
|
||||
</data>
|
||||
<data name="EnergySettings" xml:space="preserve">
|
||||
<value>Energy Settings</value>
|
||||
<value>Risparmio Energia</value>
|
||||
</data>
|
||||
<data name="Extra" xml:space="preserve">
|
||||
<value>Extra</value>
|
||||
@@ -353,8 +380,11 @@ Sei sicuro di voler continuare?</value>
|
||||
<data name="GPUTempTarget" xml:space="preserve">
|
||||
<value>Temperatura Target</value>
|
||||
</data>
|
||||
<data name="HibernateAfter" xml:space="preserve">
|
||||
<value>Iberna dopo X minuti se alimentato a batteria (0 - ACCESO)</value>
|
||||
</data>
|
||||
<data name="High" xml:space="preserve">
|
||||
<value>High</value>
|
||||
<value>Elevato</value>
|
||||
</data>
|
||||
<data name="KeyBindings" xml:space="preserve">
|
||||
<value>Associazione Tasti</value>
|
||||
@@ -381,13 +411,13 @@ Sei sicuro di voler continuare?</value>
|
||||
<value>Barra Luminosa</value>
|
||||
</data>
|
||||
<data name="Lighting" xml:space="preserve">
|
||||
<value>Lighting</value>
|
||||
<value>Illuminazione</value>
|
||||
</data>
|
||||
<data name="Logo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="Low" xml:space="preserve">
|
||||
<value>Low</value>
|
||||
<value>Basso</value>
|
||||
</data>
|
||||
<data name="MatrixAudio" xml:space="preserve">
|
||||
<value>Visualizzatore Audio</value>
|
||||
@@ -423,28 +453,31 @@ Sei sicuro di voler continuare?</value>
|
||||
<value>60Hz refresh rate per risparmiare batteria</value>
|
||||
</data>
|
||||
<data name="Minute" xml:space="preserve">
|
||||
<value>Minute</value>
|
||||
<value>Minuto</value>
|
||||
</data>
|
||||
<data name="Minutes" xml:space="preserve">
|
||||
<value>Minutes</value>
|
||||
<value>Minuti</value>
|
||||
</data>
|
||||
<data name="MouseAngleSnapping" xml:space="preserve">
|
||||
<value>Angle Snapping</value>
|
||||
</data>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Auto Power Off After</value>
|
||||
<value>Auto-disattivazione dopo</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>Risposta Tasto Mouse</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Lift Off Distance</value>
|
||||
</data>
|
||||
<data name="MouseLowBatteryWarning" xml:space="preserve">
|
||||
<value>Low Battery Warning at</value>
|
||||
<value>Avviso Batteria Mouse in Esaurimento</value>
|
||||
</data>
|
||||
<data name="MousePerformance" xml:space="preserve">
|
||||
<value>Performance</value>
|
||||
<value>Prestazioni</value>
|
||||
</data>
|
||||
<data name="MouseSynchronize" xml:space="preserve">
|
||||
<value>Synchronize with mouse</value>
|
||||
<value>Sincronizza con Mouse</value>
|
||||
</data>
|
||||
<data name="Multizone" xml:space="preserve">
|
||||
<value>Multizona</value>
|
||||
@@ -453,7 +486,7 @@ Sei sicuro di voler continuare?</value>
|
||||
<value>Silenzia microfono</value>
|
||||
</data>
|
||||
<data name="Never" xml:space="preserve">
|
||||
<value>Never</value>
|
||||
<value>Mai</value>
|
||||
</data>
|
||||
<data name="NewUpdates" xml:space="preserve">
|
||||
<value>Nuovi aggiornamenti</value>
|
||||
@@ -462,7 +495,7 @@ Sei sicuro di voler continuare?</value>
|
||||
<value>Sistema aggiornato</value>
|
||||
</data>
|
||||
<data name="NotConnected" xml:space="preserve">
|
||||
<value>Not Connected</value>
|
||||
<value>Non Connesso</value>
|
||||
</data>
|
||||
<data name="OpenGHelper" xml:space="preserve">
|
||||
<value>Apri G-Helper</value>
|
||||
@@ -486,7 +519,7 @@ Sei sicuro di voler continuare?</value>
|
||||
<value>Profilo</value>
|
||||
</data>
|
||||
<data name="Peripherals" xml:space="preserve">
|
||||
<value>Peripherals</value>
|
||||
<value>Periferiche</value>
|
||||
</data>
|
||||
<data name="PictureGif" xml:space="preserve">
|
||||
<value>Immagine / Gif</value>
|
||||
@@ -507,13 +540,13 @@ Sei sicuro di voler continuare?</value>
|
||||
<value>PrintScreen</value>
|
||||
</data>
|
||||
<data name="Profile" xml:space="preserve">
|
||||
<value>Profile</value>
|
||||
<value>Profilo</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Esci</value>
|
||||
</data>
|
||||
<data name="RestartGPU" xml:space="preserve">
|
||||
<value>Qualcosa sta utilizzando la dGPU e impedendo la modalità Eco. Riavviare la dGPU da Gestione dispositivi? * Procedere a proprio rischio e pericolo.</value>
|
||||
<value>Qualcosa sta utilizzando la dGPU e impedisce il passaggio alla modalità Eco. Vuoi che G-Helper provi a riavviare la dGPU in gestione dispositivi? (Procedi a tuo rischio)</value>
|
||||
</data>
|
||||
<data name="RPM" xml:space="preserve">
|
||||
<value>RPM</value>
|
||||
|
||||
@@ -117,6 +117,9 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Acceleration" xml:space="preserve">
|
||||
<value>Acceleration</value>
|
||||
</data>
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>ASUS ACPI에 연결할 수 없어 응용 프로그램이 작동하지 않습니다. Asus System Control Interface를 먼저 설치하십시오.</value>
|
||||
</data>
|
||||
@@ -163,46 +166,64 @@
|
||||
<value>실행중인 Asus 서비스</value>
|
||||
</data>
|
||||
<data name="AuraBatteryState" xml:space="preserve">
|
||||
<value>Battery State</value>
|
||||
<value>배터리 상태</value>
|
||||
</data>
|
||||
<data name="AuraBreathe" xml:space="preserve">
|
||||
<value>Breathe</value>
|
||||
<value>숨쉬기</value>
|
||||
</data>
|
||||
<data name="AuraClockwise" xml:space="preserve">
|
||||
<value>Clockwise</value>
|
||||
<value>시계 방향</value>
|
||||
</data>
|
||||
<data name="AuraColorCycle" xml:space="preserve">
|
||||
<value>Color Cycle</value>
|
||||
<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>조명 모드</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>보통</value>
|
||||
</data>
|
||||
<data name="AuraRainbow" xml:space="preserve">
|
||||
<value>Rainbow</value>
|
||||
<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>
|
||||
</data>
|
||||
<data name="AuraStatic" xml:space="preserve">
|
||||
<value>Static</value>
|
||||
<value>정적</value>
|
||||
</data>
|
||||
<data name="AuraStrobe" xml:space="preserve">
|
||||
<value>Strobe</value>
|
||||
<value>섬광</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>전체</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>독</value>
|
||||
</data>
|
||||
<data name="AuraZoneLogo" xml:space="preserve">
|
||||
<value>로고</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>스크롤 휠</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>하단 조명</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>자동 적용</value>
|
||||
@@ -214,25 +235,28 @@
|
||||
<value>배터리 사용 중에만 60Hz 설정</value>
|
||||
</data>
|
||||
<data name="Awake" xml:space="preserve">
|
||||
<value>Awake</value>
|
||||
<value>절전 모드 해제</value>
|
||||
</data>
|
||||
<data name="BacklightTimeout" xml:space="preserve">
|
||||
<value>전원 연결 / 배터리 사용 중 자동 꺼짐 시간 (0 - 항상 켜짐)</value>
|
||||
<value>전원 / 배터리 사용 중 자동 꺼짐 시간 (0 - 항상 켜짐)</value>
|
||||
</data>
|
||||
<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>
|
||||
<data name="BatteryHealth" xml:space="preserve">
|
||||
<value>Battery Health</value>
|
||||
<value>배터리 수명</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>바이오스/드라이버 업데이트</value>
|
||||
</data>
|
||||
<data name="Boot" xml:space="preserve">
|
||||
<value>Boot</value>
|
||||
<value>부팅</value>
|
||||
</data>
|
||||
<data name="Brightness" xml:space="preserve">
|
||||
<value>밝기</value>
|
||||
@@ -244,7 +268,7 @@
|
||||
<value>밝기 증가</value>
|
||||
</data>
|
||||
<data name="Charging" xml:space="preserve">
|
||||
<value>Charging</value>
|
||||
<value>충전 중</value>
|
||||
</data>
|
||||
<data name="Color" xml:space="preserve">
|
||||
<value>색상</value>
|
||||
@@ -255,6 +279,9 @@
|
||||
<data name="Custom" xml:space="preserve">
|
||||
<value>사용자 설정</value>
|
||||
</data>
|
||||
<data name="Deceleration" xml:space="preserve">
|
||||
<value>Deceleration</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>기본</value>
|
||||
</data>
|
||||
@@ -265,7 +292,7 @@
|
||||
<value>방전 중</value>
|
||||
</data>
|
||||
<data name="DownloadUpdate" xml:space="preserve">
|
||||
<value>업데이트 다운로드</value>
|
||||
<value>다운로드</value>
|
||||
</data>
|
||||
<data name="DriverAndSoftware" xml:space="preserve">
|
||||
<value>드라이버와 소프트웨어</value>
|
||||
@@ -315,7 +342,7 @@
|
||||
<value>팬 속도/전력</value>
|
||||
</data>
|
||||
<data name="FanSpeed" xml:space="preserve">
|
||||
<value>Fan</value>
|
||||
<value>팬</value>
|
||||
</data>
|
||||
<data name="FansPower" xml:space="preserve">
|
||||
<value>팬 + 전력</value>
|
||||
@@ -353,8 +380,11 @@
|
||||
<data name="GPUTempTarget" xml:space="preserve">
|
||||
<value>목표 온도</value>
|
||||
</data>
|
||||
<data name="HibernateAfter" xml:space="preserve">
|
||||
<value>최대 절전 모드 전환 시간 (0 - 꺼짐)</value>
|
||||
</data>
|
||||
<data name="High" xml:space="preserve">
|
||||
<value>High</value>
|
||||
<value>높게</value>
|
||||
</data>
|
||||
<data name="KeyBindings" xml:space="preserve">
|
||||
<value>키 설정</value>
|
||||
@@ -381,13 +411,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>
|
||||
@@ -423,28 +453,31 @@
|
||||
<value>60Hz 주사율 설정</value>
|
||||
</data>
|
||||
<data name="Minute" xml:space="preserve">
|
||||
<value>Minute</value>
|
||||
<value>분 후</value>
|
||||
</data>
|
||||
<data name="Minutes" xml:space="preserve">
|
||||
<value>Minutes</value>
|
||||
<value>분 후</value>
|
||||
</data>
|
||||
<data name="MouseAngleSnapping" xml:space="preserve">
|
||||
<value>Angle Snapping</value>
|
||||
<value>직선 보정</value>
|
||||
</data>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Auto Power Off After</value>
|
||||
<value>자동 전원 꺼짐</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>버튼 응답</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Lift Off Distance</value>
|
||||
<value>들어올림 거리</value>
|
||||
</data>
|
||||
<data name="MouseLowBatteryWarning" xml:space="preserve">
|
||||
<value>Low Battery Warning at</value>
|
||||
<value>배터리 부족 경고 알림</value>
|
||||
</data>
|
||||
<data name="MousePerformance" xml:space="preserve">
|
||||
<value>Performance</value>
|
||||
<value>성능</value>
|
||||
</data>
|
||||
<data name="MouseSynchronize" xml:space="preserve">
|
||||
<value>Synchronize with mouse</value>
|
||||
<value>마우스와 동기화</value>
|
||||
</data>
|
||||
<data name="Multizone" xml:space="preserve">
|
||||
<value>멀티존</value>
|
||||
@@ -453,7 +486,7 @@
|
||||
<value>마이크 음소거</value>
|
||||
</data>
|
||||
<data name="Never" xml:space="preserve">
|
||||
<value>Never</value>
|
||||
<value>사용 안함</value>
|
||||
</data>
|
||||
<data name="NewUpdates" xml:space="preserve">
|
||||
<value>새 업데이트</value>
|
||||
@@ -462,7 +495,7 @@
|
||||
<value>새 업데이트 없음</value>
|
||||
</data>
|
||||
<data name="NotConnected" xml:space="preserve">
|
||||
<value>Not Connected</value>
|
||||
<value>연결되지 않음</value>
|
||||
</data>
|
||||
<data name="OpenGHelper" xml:space="preserve">
|
||||
<value>G-Helper 열기</value>
|
||||
@@ -486,7 +519,7 @@
|
||||
<value>성능 모드</value>
|
||||
</data>
|
||||
<data name="Peripherals" xml:space="preserve">
|
||||
<value>Peripherals</value>
|
||||
<value>주변 장치</value>
|
||||
</data>
|
||||
<data name="PictureGif" xml:space="preserve">
|
||||
<value>사진 / Gif</value>
|
||||
@@ -495,7 +528,7 @@
|
||||
<value>재생 / 정지</value>
|
||||
</data>
|
||||
<data name="PollingRate" xml:space="preserve">
|
||||
<value>Polling Rate</value>
|
||||
<value>폴링레이트</value>
|
||||
</data>
|
||||
<data name="PowerLimits" xml:space="preserve">
|
||||
<value>전력 제한</value>
|
||||
@@ -507,7 +540,7 @@
|
||||
<value>PrintScreen</value>
|
||||
</data>
|
||||
<data name="Profile" xml:space="preserve">
|
||||
<value>Profile</value>
|
||||
<value>프로필</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>종료</value>
|
||||
@@ -528,13 +561,13 @@
|
||||
<value>Screenpad 밝기 증가</value>
|
||||
</data>
|
||||
<data name="Shutdown" xml:space="preserve">
|
||||
<value>꺼짐</value>
|
||||
<value>시스템 종료</value>
|
||||
</data>
|
||||
<data name="Silent" xml:space="preserve">
|
||||
<value>조용</value>
|
||||
</data>
|
||||
<data name="Sleep" xml:space="preserve">
|
||||
<value>Sleep</value>
|
||||
<value>절전 모드</value>
|
||||
</data>
|
||||
<data name="StandardGPUTooltip" xml:space="preserve">
|
||||
<value>Standard 모드에서 dGPU 켜기</value>
|
||||
@@ -561,19 +594,19 @@
|
||||
<value>서비스 중지 중</value>
|
||||
</data>
|
||||
<data name="ToggleAura" xml:space="preserve">
|
||||
<value>Aura 토글 키</value>
|
||||
<value>Aura 전환 키</value>
|
||||
</data>
|
||||
<data name="ToggleClamshellMode" xml:space="preserve">
|
||||
<value>Auto Toggle Clamshell Mode</value>
|
||||
<value>클램쉘 모드 자동 전환</value>
|
||||
</data>
|
||||
<data name="ToggleFnLock" xml:space="preserve">
|
||||
<value>Fn-Lock 토글 키</value>
|
||||
<value>Fn-Lock 전환 키</value>
|
||||
</data>
|
||||
<data name="ToggleMiniled" xml:space="preserve">
|
||||
<value>Miniled 토글 키 (지원하는 기기만)</value>
|
||||
<value>Miniled 전환 키 (지원하는 기기만)</value>
|
||||
</data>
|
||||
<data name="ToggleScreen" xml:space="preserve">
|
||||
<value>화면 토글 키</value>
|
||||
<value>화면 전환 키</value>
|
||||
</data>
|
||||
<data name="Turbo" xml:space="preserve">
|
||||
<value>터보</value>
|
||||
@@ -591,7 +624,7 @@
|
||||
<value>Ultimate</value>
|
||||
</data>
|
||||
<data name="UndervoltingRisky" xml:space="preserve">
|
||||
<value>언더볼팅은 실험적이며 위험한 기능입니다. 적용 값이 너무 낮은 경우 시스템이 불안정해지고, 종료되거나 데이터 손상을 유발할 수 있습니다. 작은 값부터 적용하여 잘 작동하는지 확인해 보십시오.</value>
|
||||
<value>언더볼팅은 실험적이며 위험한 기능입니다. 적용 값이 너무 낮은 경우 시스템이 불안정해지고, 강제 종료되거나 데이터 손상을 유발할 수 있습니다. 낮은 값부터 적용하여 잘 작동하는지 확인해 보십시오.</value>
|
||||
</data>
|
||||
<data name="Updates" xml:space="preserve">
|
||||
<value>업데이트</value>
|
||||
|
||||
@@ -117,6 +117,9 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Acceleration" xml:space="preserve">
|
||||
<value>Greitėjimas</value>
|
||||
</data>
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Nepavyko prisijungti prie ASUS ACPI. Programėlė be jo negali veikti. Pabandykite įdiegti Asus System Control Interface</value>
|
||||
</data>
|
||||
@@ -163,13 +166,13 @@
|
||||
<value>Veikiančios Asus tarnybos</value>
|
||||
</data>
|
||||
<data name="AuraBatteryState" xml:space="preserve">
|
||||
<value>Battery State</value>
|
||||
<value>Būsena</value>
|
||||
</data>
|
||||
<data name="AuraBreathe" xml:space="preserve">
|
||||
<value>Kvėpavimas</value>
|
||||
</data>
|
||||
<data name="AuraClockwise" xml:space="preserve">
|
||||
<value>Clockwise</value>
|
||||
<value>Pagal laikrodžio rodyklę</value>
|
||||
</data>
|
||||
<data name="AuraColorCycle" xml:space="preserve">
|
||||
<value>Spalvų ciklas</value>
|
||||
@@ -178,11 +181,14 @@
|
||||
<value>Comet</value>
|
||||
</data>
|
||||
<data name="AuraCounterClockwise" xml:space="preserve">
|
||||
<value>Counterclockwise</value>
|
||||
<value>Prieš laikrodžio rodyklę</value>
|
||||
</data>
|
||||
<data name="AuraFast" xml:space="preserve">
|
||||
<value>Greitas</value>
|
||||
</data>
|
||||
<data name="AuraLightingMode" xml:space="preserve">
|
||||
<value>Apšvietimo režimas</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>Normalus</value>
|
||||
</data>
|
||||
@@ -190,7 +196,7 @@
|
||||
<value>Vaivorykštė</value>
|
||||
</data>
|
||||
<data name="AuraRandomColor" xml:space="preserve">
|
||||
<value>Random</value>
|
||||
<value>Atsitiktinė</value>
|
||||
</data>
|
||||
<data name="AuraReact" xml:space="preserve">
|
||||
<value>React</value>
|
||||
@@ -204,6 +210,21 @@
|
||||
<data name="AuraStrobe" xml:space="preserve">
|
||||
<value>Blyksniai</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>Visi</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Jungčių stotelė</value>
|
||||
</data>
|
||||
<data name="AuraZoneLogo" xml:space="preserve">
|
||||
<value>Logotipas</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Ratukas</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Apatinis apšvietimas</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>Taikyti automatiškai</value>
|
||||
</data>
|
||||
@@ -211,7 +232,7 @@
|
||||
<value>Automatinis</value>
|
||||
</data>
|
||||
<data name="AutoRefreshTooltip" xml:space="preserve">
|
||||
<value>Nustato 60Hz, kad stokotų akumuliatorių, ir atgal, kai prijungtas prie lizdo</value>
|
||||
<value>Nustato 60Hz, kad taupytų energiją, ir atgal, kai įjungtas į lizdą</value>
|
||||
</data>
|
||||
<data name="Awake" xml:space="preserve">
|
||||
<value>Pabudęs</value>
|
||||
@@ -222,6 +243,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>
|
||||
@@ -255,6 +279,9 @@
|
||||
<data name="Custom" xml:space="preserve">
|
||||
<value>Tinkintas</value>
|
||||
</data>
|
||||
<data name="Deceleration" xml:space="preserve">
|
||||
<value>Lėtėjimas</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>Numatytas</value>
|
||||
</data>
|
||||
@@ -265,13 +292,13 @@
|
||||
<value>Iškrovimas</value>
|
||||
</data>
|
||||
<data name="DownloadUpdate" xml:space="preserve">
|
||||
<value>Atsisiųsti naujinimą</value>
|
||||
<value>Atsisiųsti</value>
|
||||
</data>
|
||||
<data name="DriverAndSoftware" xml:space="preserve">
|
||||
<value>Tvarkyklės ir programinė įranga</value>
|
||||
</data>
|
||||
<data name="EcoGPUTooltip" xml:space="preserve">
|
||||
<value>Išjungia dGPU, kad stokotų akumuliatorių</value>
|
||||
<value>Išjungia dGPU, kad taupytų energiją</value>
|
||||
</data>
|
||||
<data name="EcoMode" xml:space="preserve">
|
||||
<value>Ekonomiškas</value>
|
||||
@@ -285,7 +312,7 @@ Vis tiek norite tęsti?</value>
|
||||
<value>NVIDIA ekrano režimas nenustatytas į Optimus</value>
|
||||
</data>
|
||||
<data name="EnergySettings" xml:space="preserve">
|
||||
<value>Energy Settings</value>
|
||||
<value>Energijos nustatymai</value>
|
||||
</data>
|
||||
<data name="Extra" xml:space="preserve">
|
||||
<value>Išplėstiniai</value>
|
||||
@@ -353,8 +380,11 @@ Vis tiek norite tęsti?</value>
|
||||
<data name="GPUTempTarget" xml:space="preserve">
|
||||
<value>Temperatūros tikslas</value>
|
||||
</data>
|
||||
<data name="HibernateAfter" xml:space="preserve">
|
||||
<value>Minutės iki miego su akumuliatoriumi (0 – IŠJUNGTA)</value>
|
||||
</data>
|
||||
<data name="High" xml:space="preserve">
|
||||
<value>High</value>
|
||||
<value>Aukštas</value>
|
||||
</data>
|
||||
<data name="KeyBindings" xml:space="preserve">
|
||||
<value>Klavišų priskyrimas</value>
|
||||
@@ -375,19 +405,19 @@ 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>
|
||||
</data>
|
||||
<data name="Lighting" xml:space="preserve">
|
||||
<value>Lighting</value>
|
||||
<value>Apšvietimas</value>
|
||||
</data>
|
||||
<data name="Logo" xml:space="preserve">
|
||||
<value>Logotipas</value>
|
||||
</data>
|
||||
<data name="Low" xml:space="preserve">
|
||||
<value>Low</value>
|
||||
<value>Žemas</value>
|
||||
</data>
|
||||
<data name="MatrixAudio" xml:space="preserve">
|
||||
<value>Garso vizualizatorius</value>
|
||||
@@ -420,49 +450,52 @@ Vis tiek norite tęsti?</value>
|
||||
<value>Maksimalus kadrų dažnis už mažesnę delsą</value>
|
||||
</data>
|
||||
<data name="MinRefreshTooltip" xml:space="preserve">
|
||||
<value>60Hz kadrų dažnis, kad stokotumėte akumuliatorių</value>
|
||||
<value>60Hz kadrų dažnis, kad taupytumėte energiją</value>
|
||||
</data>
|
||||
<data name="Minute" xml:space="preserve">
|
||||
<value>Minute</value>
|
||||
<value>min.</value>
|
||||
</data>
|
||||
<data name="Minutes" xml:space="preserve">
|
||||
<value>Minutes</value>
|
||||
<value>min.</value>
|
||||
</data>
|
||||
<data name="MouseAngleSnapping" xml:space="preserve">
|
||||
<value>Angle Snapping</value>
|
||||
</data>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Auto Power Off After</value>
|
||||
<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>Lift Off Distance</value>
|
||||
<value>Pakilimo atstumas</value>
|
||||
</data>
|
||||
<data name="MouseLowBatteryWarning" xml:space="preserve">
|
||||
<value>Low Battery Warning at</value>
|
||||
<value>Senkančio akumuliatoriaus įspėjimas</value>
|
||||
</data>
|
||||
<data name="MousePerformance" xml:space="preserve">
|
||||
<value>Performance</value>
|
||||
<value>Našumas</value>
|
||||
</data>
|
||||
<data name="MouseSynchronize" xml:space="preserve">
|
||||
<value>Synchronize with mouse</value>
|
||||
<value>Sinchronizuoti su pele</value>
|
||||
</data>
|
||||
<data name="Multizone" xml:space="preserve">
|
||||
<value>Daugiazonė</value>
|
||||
<value>Daugiazonis</value>
|
||||
</data>
|
||||
<data name="MuteMic" xml:space="preserve">
|
||||
<value>Mikrofono nutildymas</value>
|
||||
</data>
|
||||
<data name="Never" xml:space="preserve">
|
||||
<value>Never</value>
|
||||
<value>Niekada</value>
|
||||
</data>
|
||||
<data name="NewUpdates" xml:space="preserve">
|
||||
<value>Prieinami naujinimai</value>
|
||||
<value>Naujinimai</value>
|
||||
</data>
|
||||
<data name="NoNewUpdates" xml:space="preserve">
|
||||
<value>Nėra prieinamų naujinimų</value>
|
||||
<value>Nėra naujinimų</value>
|
||||
</data>
|
||||
<data name="NotConnected" xml:space="preserve">
|
||||
<value>Not Connected</value>
|
||||
<value>Neprijungta</value>
|
||||
</data>
|
||||
<data name="OpenGHelper" xml:space="preserve">
|
||||
<value>Atidaryti G-Helper langą</value>
|
||||
@@ -471,7 +504,7 @@ Vis tiek norite tęsti?</value>
|
||||
<value>Optimizuotas</value>
|
||||
</data>
|
||||
<data name="OptimizedGPUTooltip" xml:space="preserve">
|
||||
<value>Perjungti į ekonomišką, kai naudojamas akumuliatorius, ir į standartinį, kai prijungtas prie lizdo</value>
|
||||
<value>Perjungti į ekonomišką, kai naudojamas akumuliatorius, ir į standartinį, kai įjungtas į lizdą</value>
|
||||
</data>
|
||||
<data name="OptimizedUSBC" xml:space="preserve">
|
||||
<value>Neįjungti GPU, kai naudojamas USB-C įkroviklis optimizuotame režime</value>
|
||||
@@ -486,7 +519,7 @@ Vis tiek norite tęsti?</value>
|
||||
<value>Režimas</value>
|
||||
</data>
|
||||
<data name="Peripherals" xml:space="preserve">
|
||||
<value>Peripherals</value>
|
||||
<value>Išoriniai įrenginiai</value>
|
||||
</data>
|
||||
<data name="PictureGif" xml:space="preserve">
|
||||
<value>Paveikslėlis / GIF</value>
|
||||
@@ -495,7 +528,7 @@ Vis tiek norite tęsti?</value>
|
||||
<value>Paleisti / Pristabdyti</value>
|
||||
</data>
|
||||
<data name="PollingRate" xml:space="preserve">
|
||||
<value>Polling Rate</value>
|
||||
<value>Iškvietų dažnis</value>
|
||||
</data>
|
||||
<data name="PowerLimits" xml:space="preserve">
|
||||
<value>Galios ribos</value>
|
||||
@@ -507,13 +540,13 @@ Vis tiek norite tęsti?</value>
|
||||
<value>Ekrano kopija</value>
|
||||
</data>
|
||||
<data name="Profile" xml:space="preserve">
|
||||
<value>Profile</value>
|
||||
<value>Profilis</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Išeiti</value>
|
||||
</data>
|
||||
<data name="RestartGPU" xml:space="preserve">
|
||||
<value>Kažkas naudoja dGPU ir neleidžia nustatyti ekonomiško režimo. Iš naujo paleisti dGPU įrenginių tvarkytuvėje? * Tęskite savo rizika.</value>
|
||||
<value>Kažkas naudoja dGPU ir neleidžia įjungti ekonomiško režimo. Norite leisti G-Helper bandyti iš naujo paleisti dGPU įrenginių tvarkytuvėje? (Tęskite savo rizika)</value>
|
||||
</data>
|
||||
<data name="RPM" xml:space="preserve">
|
||||
<value>RPM</value>
|
||||
|
||||
@@ -117,6 +117,9 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Acceleration" xml:space="preserve">
|
||||
<value>Przyśpieszenie</value>
|
||||
</data>
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Nie można odnaleźć sterownika ASUS ACPI. Aplikacja nie może bez niego funkcjonować. Spróbuj zainstalować Asus System Control Interface</value>
|
||||
</data>
|
||||
@@ -163,26 +166,29 @@
|
||||
<value>Uruchomione usługi Asus</value>
|
||||
</data>
|
||||
<data name="AuraBatteryState" xml:space="preserve">
|
||||
<value>Battery State</value>
|
||||
<value>Stan baterii</value>
|
||||
</data>
|
||||
<data name="AuraBreathe" xml:space="preserve">
|
||||
<value>Oddychanie</value>
|
||||
</data>
|
||||
<data name="AuraClockwise" xml:space="preserve">
|
||||
<value>Clockwise</value>
|
||||
<value>W prawo</value>
|
||||
</data>
|
||||
<data name="AuraColorCycle" xml:space="preserve">
|
||||
<value>Pętla kolorów</value>
|
||||
</data>
|
||||
<data name="AuraComet" xml:space="preserve">
|
||||
<value>Comet</value>
|
||||
<value>Kometa</value>
|
||||
</data>
|
||||
<data name="AuraCounterClockwise" xml:space="preserve">
|
||||
<value>Counterclockwise</value>
|
||||
<value>W lewo</value>
|
||||
</data>
|
||||
<data name="AuraFast" xml:space="preserve">
|
||||
<value>Szybka</value>
|
||||
</data>
|
||||
<data name="AuraLightingMode" xml:space="preserve">
|
||||
<value>Tryb oświetlenia</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>Normalna</value>
|
||||
</data>
|
||||
@@ -190,10 +196,10 @@
|
||||
<value>Tęcza</value>
|
||||
</data>
|
||||
<data name="AuraRandomColor" xml:space="preserve">
|
||||
<value>Random</value>
|
||||
<value>Losowo</value>
|
||||
</data>
|
||||
<data name="AuraReact" xml:space="preserve">
|
||||
<value>React</value>
|
||||
<value>Tryb reaktywny</value>
|
||||
</data>
|
||||
<data name="AuraSlow" xml:space="preserve">
|
||||
<value>Powolna</value>
|
||||
@@ -204,6 +210,21 @@
|
||||
<data name="AuraStrobe" xml:space="preserve">
|
||||
<value>Stroboskop</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>Wszystko</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dock</value>
|
||||
</data>
|
||||
<data name="AuraZoneLogo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Rolka</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Dolna poświata</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>Zastosuj automatycznie</value>
|
||||
</data>
|
||||
@@ -214,7 +235,7 @@
|
||||
<value>Automatycznie ustaw odświeżanie 60 Hz w czasie pracy na baterii</value>
|
||||
</data>
|
||||
<data name="Awake" xml:space="preserve">
|
||||
<value>Aktywność</value>
|
||||
<value>Włączone</value>
|
||||
</data>
|
||||
<data name="BacklightTimeout" xml:space="preserve">
|
||||
<value>Limit czasu podłączonego / na baterii (0 - Włączony)</value>
|
||||
@@ -222,6 +243,9 @@
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>Balans</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>Naładowanie</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Limit ładowania baterii</value>
|
||||
</data>
|
||||
@@ -232,7 +256,7 @@
|
||||
<value>Aktualizacje BIOS i sterowników</value>
|
||||
</data>
|
||||
<data name="Boot" xml:space="preserve">
|
||||
<value>Podczas uruchamiania</value>
|
||||
<value>Uruchamianie</value>
|
||||
</data>
|
||||
<data name="Brightness" xml:space="preserve">
|
||||
<value>Jasność</value>
|
||||
@@ -255,6 +279,9 @@
|
||||
<data name="Custom" xml:space="preserve">
|
||||
<value>Niestandardowy</value>
|
||||
</data>
|
||||
<data name="Deceleration" xml:space="preserve">
|
||||
<value>Spowolnienie</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>Domyślny</value>
|
||||
</data>
|
||||
@@ -265,7 +292,7 @@
|
||||
<value>Zużycie mocy</value>
|
||||
</data>
|
||||
<data name="DownloadUpdate" xml:space="preserve">
|
||||
<value>Pobierz aktualizację</value>
|
||||
<value>Pobierz</value>
|
||||
</data>
|
||||
<data name="DriverAndSoftware" xml:space="preserve">
|
||||
<value>Sterowniki i oprogramowanie</value>
|
||||
@@ -285,7 +312,7 @@ Nadal chcesz kontynuować?</value>
|
||||
<value>Tryb wyświetlania NVIDIA nie jest ustawiony na Optimus</value>
|
||||
</data>
|
||||
<data name="EnergySettings" xml:space="preserve">
|
||||
<value>Energy Settings</value>
|
||||
<value>Ustawienia zasilania</value>
|
||||
</data>
|
||||
<data name="Extra" xml:space="preserve">
|
||||
<value>Ustawienia</value>
|
||||
@@ -353,8 +380,11 @@ Nadal chcesz kontynuować?</value>
|
||||
<data name="GPUTempTarget" xml:space="preserve">
|
||||
<value>Temperatura docelowa</value>
|
||||
</data>
|
||||
<data name="HibernateAfter" xml:space="preserve">
|
||||
<value>Czas przejścia w hibernację na baterii (0 - wcale)</value>
|
||||
</data>
|
||||
<data name="High" xml:space="preserve">
|
||||
<value>High</value>
|
||||
<value>Wysoka</value>
|
||||
</data>
|
||||
<data name="KeyBindings" xml:space="preserve">
|
||||
<value>Ustawienia klawiszy skrótów</value>
|
||||
@@ -381,13 +411,13 @@ Nadal chcesz kontynuować?</value>
|
||||
<value>Lightbar</value>
|
||||
</data>
|
||||
<data name="Lighting" xml:space="preserve">
|
||||
<value>Lighting</value>
|
||||
<value>Oświetlenie</value>
|
||||
</data>
|
||||
<data name="Logo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="Low" xml:space="preserve">
|
||||
<value>Low</value>
|
||||
<value>Niska</value>
|
||||
</data>
|
||||
<data name="MatrixAudio" xml:space="preserve">
|
||||
<value>Wizualizer muzyki</value>
|
||||
@@ -423,28 +453,31 @@ Nadal chcesz kontynuować?</value>
|
||||
<value>Częstotliwość odświeżania 60 Hz dla oszczędzania baterii</value>
|
||||
</data>
|
||||
<data name="Minute" xml:space="preserve">
|
||||
<value>Minute</value>
|
||||
<value>min.</value>
|
||||
</data>
|
||||
<data name="Minutes" xml:space="preserve">
|
||||
<value>Minutes</value>
|
||||
<value>min.</value>
|
||||
</data>
|
||||
<data name="MouseAngleSnapping" xml:space="preserve">
|
||||
<value>Angle Snapping</value>
|
||||
<value>Korekcja kąta ruchu</value>
|
||||
</data>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Auto Power Off After</value>
|
||||
<value>Przejście w tryb uśpienia po</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>Reakcja przycisków</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Lift Off Distance</value>
|
||||
<value>Wysokość reakcji sensora</value>
|
||||
</data>
|
||||
<data name="MouseLowBatteryWarning" xml:space="preserve">
|
||||
<value>Low Battery Warning at</value>
|
||||
<value>Ostrzeżenie o niskim poziomie baterii</value>
|
||||
</data>
|
||||
<data name="MousePerformance" xml:space="preserve">
|
||||
<value>Performance</value>
|
||||
<value>Wydajność</value>
|
||||
</data>
|
||||
<data name="MouseSynchronize" xml:space="preserve">
|
||||
<value>Synchronize with mouse</value>
|
||||
<value>Synchronizuj z myszką</value>
|
||||
</data>
|
||||
<data name="Multizone" xml:space="preserve">
|
||||
<value>Multizone</value>
|
||||
@@ -453,7 +486,7 @@ Nadal chcesz kontynuować?</value>
|
||||
<value>Wyciszenie mikrofonu</value>
|
||||
</data>
|
||||
<data name="Never" xml:space="preserve">
|
||||
<value>Never</value>
|
||||
<value>Nigdy</value>
|
||||
</data>
|
||||
<data name="NewUpdates" xml:space="preserve">
|
||||
<value>Nowe aktualizacje</value>
|
||||
@@ -462,7 +495,7 @@ Nadal chcesz kontynuować?</value>
|
||||
<value>Brak aktualizacji</value>
|
||||
</data>
|
||||
<data name="NotConnected" xml:space="preserve">
|
||||
<value>Not Connected</value>
|
||||
<value>Nie połączono</value>
|
||||
</data>
|
||||
<data name="OpenGHelper" xml:space="preserve">
|
||||
<value>Otwórz okno G-Helper</value>
|
||||
@@ -486,7 +519,7 @@ Nadal chcesz kontynuować?</value>
|
||||
<value>Tryb zasilania</value>
|
||||
</data>
|
||||
<data name="Peripherals" xml:space="preserve">
|
||||
<value>Peripherals</value>
|
||||
<value>Urządzenia peryferyjne</value>
|
||||
</data>
|
||||
<data name="PictureGif" xml:space="preserve">
|
||||
<value>Obraz / GIF</value>
|
||||
@@ -495,7 +528,7 @@ Nadal chcesz kontynuować?</value>
|
||||
<value>Odtwórz / Pauza</value>
|
||||
</data>
|
||||
<data name="PollingRate" xml:space="preserve">
|
||||
<value>Polling Rate</value>
|
||||
<value>Częstotliwość raportowania</value>
|
||||
</data>
|
||||
<data name="PowerLimits" xml:space="preserve">
|
||||
<value>Limit mocy</value>
|
||||
@@ -507,19 +540,19 @@ Nadal chcesz kontynuować?</value>
|
||||
<value>Zrzut ekranu</value>
|
||||
</data>
|
||||
<data name="Profile" xml:space="preserve">
|
||||
<value>Profile</value>
|
||||
<value>Profil</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Zamknij</value>
|
||||
</data>
|
||||
<data name="RestartGPU" xml:space="preserve">
|
||||
<value>Coś korzysta z dedykowanego GPU i uniemożliwia włączenie trybu Eco. Zresetować dedykowany GPU w Menadżerze Urządzeń? * Używaj na własną odpowiedzialność</value>
|
||||
<value>Coś korzysta z dGPU, uniemożliwiając włączenie trybu Eco. Czy G-Helper ma zresetować dGPU w Menadżerze Urządzeń? (Korzystasz na własne ryzyko)</value>
|
||||
</data>
|
||||
<data name="RPM" xml:space="preserve">
|
||||
<value>RPM</value>
|
||||
</data>
|
||||
<data name="RunOnStartup" xml:space="preserve">
|
||||
<value>Uruchom przy starcie systemu</value>
|
||||
<value>Uruchom przy starcie</value>
|
||||
</data>
|
||||
<data name="ScreenPadDown" xml:space="preserve">
|
||||
<value>Zmniejsz jasność ScreenPad</value>
|
||||
@@ -564,7 +597,7 @@ Nadal chcesz kontynuować?</value>
|
||||
<value>Przełącz Aura</value>
|
||||
</data>
|
||||
<data name="ToggleClamshellMode" xml:space="preserve">
|
||||
<value>Automatyczne przełączanie trybu klapki</value>
|
||||
<value>Automatyczny tryb pracy z zamkniętą pokrywą</value>
|
||||
</data>
|
||||
<data name="ToggleFnLock" xml:space="preserve">
|
||||
<value>Przełącz Fn-Lock</value>
|
||||
|
||||
@@ -117,8 +117,11 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Acceleration" xml:space="preserve">
|
||||
<value>Acceleration</value>
|
||||
</data>
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Não foi possível conectar ao ASUS ACPI. O applicativo não pode funcionar sem isso. Tente instalar Asus System Controle Interface</value>
|
||||
<value>Não foi possível conectar ao ASUS ACPI. O aplicativo não pode funcionar sem isso. Tente instalar Asus System Controle Interface</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>Parece que o GPU está em uso pesado.</value>
|
||||
@@ -183,6 +186,9 @@
|
||||
<data name="AuraFast" xml:space="preserve">
|
||||
<value>Rápido</value>
|
||||
</data>
|
||||
<data name="AuraLightingMode" xml:space="preserve">
|
||||
<value>Lighting Mode</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>Normal</value>
|
||||
</data>
|
||||
@@ -204,6 +210,21 @@
|
||||
<data name="AuraStrobe" xml:space="preserve">
|
||||
<value>Estroboscópio</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>All</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dock</value>
|
||||
</data>
|
||||
<data name="AuraZoneLogo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Scrollwheel</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Underglow</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>Auto Apply</value>
|
||||
</data>
|
||||
@@ -222,6 +243,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>
|
||||
@@ -255,6 +279,9 @@
|
||||
<data name="Custom" xml:space="preserve">
|
||||
<value>Personalizado</value>
|
||||
</data>
|
||||
<data name="Deceleration" xml:space="preserve">
|
||||
<value>Deceleration</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>Padrão</value>
|
||||
</data>
|
||||
@@ -265,7 +292,7 @@
|
||||
<value>Descarregando</value>
|
||||
</data>
|
||||
<data name="DownloadUpdate" xml:space="preserve">
|
||||
<value>Baixar a atualização</value>
|
||||
<value>Download</value>
|
||||
</data>
|
||||
<data name="DriverAndSoftware" xml:space="preserve">
|
||||
<value>Drivers and Software</value>
|
||||
@@ -353,6 +380,9 @@ Do you still want to continue?</value>
|
||||
<data name="GPUTempTarget" xml:space="preserve">
|
||||
<value>Alvo de temperatura</value>
|
||||
</data>
|
||||
<data name="HibernateAfter" xml:space="preserve">
|
||||
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
|
||||
</data>
|
||||
<data name="High" xml:space="preserve">
|
||||
<value>High</value>
|
||||
</data>
|
||||
@@ -434,6 +464,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>
|
||||
@@ -513,7 +546,7 @@ Do you still want to continue?</value>
|
||||
<value>Sair</value>
|
||||
</data>
|
||||
<data name="RestartGPU" xml:space="preserve">
|
||||
<value>Algum processo está usando o dGPU e impedindo o modo Econômico. Reinicialize o dGPU no gerenciador de dispositivos. Por favor, proceda por sua conta e risco. </value>
|
||||
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
|
||||
</data>
|
||||
<data name="RPM" xml:space="preserve">
|
||||
<value>RPM</value>
|
||||
647
app/Properties/Strings.pt-PT.resx
Normal file
647
app/Properties/Strings.pt-PT.resx
Normal file
@@ -0,0 +1,647 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<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="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string"/>
|
||||
<xsd:attribute name="type" type="xsd:string"/>
|
||||
<xsd:attribute name="mimetype" type="xsd:string"/>
|
||||
<xsd:attribute ref="xml:space"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string"/>
|
||||
<xsd:attribute name="name" type="xsd:string"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
|
||||
<xsd:attribute ref="xml:space"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Acceleration" xml:space="preserve">
|
||||
<value>Aceleração</value>
|
||||
</data>
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Não foi possível conectar ao ASUS ACPI. O programa não funciona sem esse serviço. Tente instalar Asus System Control Interface</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>Parece que o GPU está em uso pesado, desativá-lo?</value>
|
||||
</data>
|
||||
<data name="AlertDGPUTitle" xml:space="preserve">
|
||||
<value>Modo económico</value>
|
||||
</data>
|
||||
<data name="AlertUltimateOff" xml:space="preserve">
|
||||
<value>Passar ao Modo Ultimate implica o reinício do sistema</value>
|
||||
</data>
|
||||
<data name="AlertUltimateOn" xml:space="preserve">
|
||||
<value>Modo Ultimate implica o reinício do sistema</value>
|
||||
</data>
|
||||
<data name="AlertUltimateTitle" xml:space="preserve">
|
||||
<value>Reiniciar agora?</value>
|
||||
</data>
|
||||
<data name="AnimationSpeed" xml:space="preserve">
|
||||
<value>Velocidade da Animação</value>
|
||||
</data>
|
||||
<data name="AnimeMatrix" xml:space="preserve">
|
||||
<value>AniMe Matrix</value>
|
||||
</data>
|
||||
<data name="AppAlreadyRunning" xml:space="preserve">
|
||||
<value>O programa já está em execução</value>
|
||||
</data>
|
||||
<data name="AppAlreadyRunningText" xml:space="preserve">
|
||||
<value>G-Helper já está em execução. Verifique o tabuleiro do sistema pelo ícone.</value>
|
||||
</data>
|
||||
<data name="Apply" xml:space="preserve">
|
||||
<value>Aplicar</value>
|
||||
</data>
|
||||
<data name="ApplyFanCurve" xml:space="preserve">
|
||||
<value>Aplicar a curva personalizada</value>
|
||||
</data>
|
||||
<data name="ApplyPowerLimits" xml:space="preserve">
|
||||
<value>Aplicar as limitações de energia</value>
|
||||
</data>
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<value>Ajuste automático dos modos de energia do Windows</value>
|
||||
</data>
|
||||
<data name="AsusServicesRunning" xml:space="preserve">
|
||||
<value>Serviços da Asus em execução</value>
|
||||
</data>
|
||||
<data name="AuraBatteryState" xml:space="preserve">
|
||||
<value>Estado da bateria</value>
|
||||
</data>
|
||||
<data name="AuraBreathe" xml:space="preserve">
|
||||
<value>Respiração</value>
|
||||
</data>
|
||||
<data name="AuraClockwise" xml:space="preserve">
|
||||
<value>No sentido horário</value>
|
||||
</data>
|
||||
<data name="AuraColorCycle" xml:space="preserve">
|
||||
<value>Ciclo de cores</value>
|
||||
</data>
|
||||
<data name="AuraComet" xml:space="preserve">
|
||||
<value>Cometa</value>
|
||||
</data>
|
||||
<data name="AuraCounterClockwise" xml:space="preserve">
|
||||
<value>No sentido anti-horário</value>
|
||||
</data>
|
||||
<data name="AuraFast" xml:space="preserve">
|
||||
<value>Rápido</value>
|
||||
</data>
|
||||
<data name="AuraLightingMode" xml:space="preserve">
|
||||
<value>Modo de iluminação</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>Normal</value>
|
||||
</data>
|
||||
<data name="AuraRainbow" xml:space="preserve">
|
||||
<value>Arco-íris</value>
|
||||
</data>
|
||||
<data name="AuraRandomColor" xml:space="preserve">
|
||||
<value>Aleatório</value>
|
||||
</data>
|
||||
<data name="AuraReact" xml:space="preserve">
|
||||
<value>Reagir</value>
|
||||
</data>
|
||||
<data name="AuraSlow" xml:space="preserve">
|
||||
<value>Lento</value>
|
||||
</data>
|
||||
<data name="AuraStatic" xml:space="preserve">
|
||||
<value>Estático</value>
|
||||
</data>
|
||||
<data name="AuraStrobe" xml:space="preserve">
|
||||
<value>Estroboscópio</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>Todos</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dock</value>
|
||||
</data>
|
||||
<data name="AuraZoneLogo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Roda de Deslocamento</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Underglow</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>Aplicar automaticamente</value>
|
||||
</data>
|
||||
<data name="AutoMode" xml:space="preserve">
|
||||
<value>Automático</value>
|
||||
</data>
|
||||
<data name="AutoRefreshTooltip" xml:space="preserve">
|
||||
<value>Define a taxa de atualização automaticamente para poupar bateria</value>
|
||||
</data>
|
||||
<data name="Awake" xml:space="preserve">
|
||||
<value>Acordado</value>
|
||||
</data>
|
||||
<data name="BacklightTimeout" xml:space="preserve">
|
||||
<value>Tempo limite ligado à corrente / na bateria (0 - ON)</value>
|
||||
</data>
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>Equilibrado</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>Carga</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Limite de carga</value>
|
||||
</data>
|
||||
<data name="BatteryHealth" xml:space="preserve">
|
||||
<value>Estado da bateria</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>Atualizações de Drivers e da BIOS</value>
|
||||
</data>
|
||||
<data name="Boot" xml:space="preserve">
|
||||
<value>Ao ligar</value>
|
||||
</data>
|
||||
<data name="Brightness" xml:space="preserve">
|
||||
<value>Nível do brilho</value>
|
||||
</data>
|
||||
<data name="BrightnessDown" xml:space="preserve">
|
||||
<value>Diminuir o brilho</value>
|
||||
</data>
|
||||
<data name="BrightnessUp" xml:space="preserve">
|
||||
<value>Aumentar o brilho</value>
|
||||
</data>
|
||||
<data name="Charging" xml:space="preserve">
|
||||
<value>Carregando</value>
|
||||
</data>
|
||||
<data name="Color" xml:space="preserve">
|
||||
<value>Cor</value>
|
||||
</data>
|
||||
<data name="CPUBoost" xml:space="preserve">
|
||||
<value>Turbo do CPU</value>
|
||||
</data>
|
||||
<data name="Custom" xml:space="preserve">
|
||||
<value>Personalizado</value>
|
||||
</data>
|
||||
<data name="Deceleration" xml:space="preserve">
|
||||
<value>Desaceleração</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>Padrão</value>
|
||||
</data>
|
||||
<data name="DisableOverdrive" xml:space="preserve">
|
||||
<value>Desativar o overdrive do ecrã</value>
|
||||
</data>
|
||||
<data name="Discharging" xml:space="preserve">
|
||||
<value>Descarregando</value>
|
||||
</data>
|
||||
<data name="DownloadUpdate" xml:space="preserve">
|
||||
<value>Transferir</value>
|
||||
</data>
|
||||
<data name="DriverAndSoftware" xml:space="preserve">
|
||||
<value>Drivers e Software</value>
|
||||
</data>
|
||||
<data name="EcoGPUTooltip" xml:space="preserve">
|
||||
<value>Desativar o dGPU para poupar energia</value>
|
||||
</data>
|
||||
<data name="EcoMode" xml:space="preserve">
|
||||
<value>Económico</value>
|
||||
</data>
|
||||
<data name="EnableOptimusText" xml:space="preserve">
|
||||
<value>Desativar a dGPU por ativar o modo Eco enquanto o Modo de Ecrã no Painel de Controlo da NVIDIA não está definido para Optimus pode causar problemas com os controlos do brilho do painel até ao próximo reinício.
|
||||
|
||||
Quer prosseguir?</value>
|
||||
</data>
|
||||
<data name="EnableOptimusTitle" xml:space="preserve">
|
||||
<value>O Modo de Ecrã da NVIDIA não está definido para Optimus</value>
|
||||
</data>
|
||||
<data name="EnergySettings" xml:space="preserve">
|
||||
<value>Configurações de Energia</value>
|
||||
</data>
|
||||
<data name="Extra" xml:space="preserve">
|
||||
<value>Adicional</value>
|
||||
</data>
|
||||
<data name="ExtraSettings" xml:space="preserve">
|
||||
<value>Configurações adicionais</value>
|
||||
</data>
|
||||
<data name="FactoryDefaults" xml:space="preserve">
|
||||
<value>Padrão de fábrica</value>
|
||||
</data>
|
||||
<data name="FanCurves" xml:space="preserve">
|
||||
<value>Curvas das Ventoinhas</value>
|
||||
</data>
|
||||
<data name="FanProfileCPU" xml:space="preserve">
|
||||
<value>Perfil da Ventoinha do CPU</value>
|
||||
</data>
|
||||
<data name="FanProfileGPU" xml:space="preserve">
|
||||
<value>Perfil da Ventoinha da GPU</value>
|
||||
</data>
|
||||
<data name="FanProfileMid" xml:space="preserve">
|
||||
<value>Perfil da Ventoinha Central</value>
|
||||
</data>
|
||||
<data name="FanProfiles" xml:space="preserve">
|
||||
<value>Perfis das Ventoinhas</value>
|
||||
</data>
|
||||
<data name="FansAndPower" xml:space="preserve">
|
||||
<value>Ventoinhas e Potência</value>
|
||||
</data>
|
||||
<data name="FanSpeed" xml:space="preserve">
|
||||
<value>Fan</value>
|
||||
</data>
|
||||
<data name="FansPower" xml:space="preserve">
|
||||
<value>Ventoinhas + Potência</value>
|
||||
</data>
|
||||
<data name="FnLock" xml:space="preserve">
|
||||
<value>Processar teclas de atalho Fn+F sem pressionar Fn</value>
|
||||
</data>
|
||||
<data name="GPUBoost" xml:space="preserve">
|
||||
<value>Boost dinâmico</value>
|
||||
</data>
|
||||
<data name="GPUChanging" xml:space="preserve">
|
||||
<value>Carregando</value>
|
||||
</data>
|
||||
<data name="GPUCoreClockOffset" xml:space="preserve">
|
||||
<value>Frequência da GPU</value>
|
||||
</data>
|
||||
<data name="GPUMemoryClockOffset" xml:space="preserve">
|
||||
<value>Frequência da Memória</value>
|
||||
</data>
|
||||
<data name="GPUMode" xml:space="preserve">
|
||||
<value>Modo da GPU</value>
|
||||
</data>
|
||||
<data name="GPUModeEco" xml:space="preserve">
|
||||
<value>Só iGPU</value>
|
||||
</data>
|
||||
<data name="GPUModeStandard" xml:space="preserve">
|
||||
<value>iGPU + dGPU</value>
|
||||
</data>
|
||||
<data name="GPUModeUltimate" xml:space="preserve">
|
||||
<value>Exclusivamente dGPU</value>
|
||||
</data>
|
||||
<data name="GPUSettings" xml:space="preserve">
|
||||
<value>Parâmetros de GPU</value>
|
||||
</data>
|
||||
<data name="GPUTempTarget" xml:space="preserve">
|
||||
<value>Temperatura limite</value>
|
||||
</data>
|
||||
<data name="HibernateAfter" xml:space="preserve">
|
||||
<value>Minutos para a hibernação em suspensão, na bateria (0 - OFF)</value>
|
||||
</data>
|
||||
<data name="High" xml:space="preserve">
|
||||
<value>Alto</value>
|
||||
</data>
|
||||
<data name="KeyBindings" xml:space="preserve">
|
||||
<value>Combinações de teclas</value>
|
||||
</data>
|
||||
<data name="Keyboard" xml:space="preserve">
|
||||
<value>Teclado</value>
|
||||
</data>
|
||||
<data name="KillGpuApps" xml:space="preserve">
|
||||
<value>Parar todos os programas que usam a GPU ao alternar para o modo Eco</value>
|
||||
</data>
|
||||
<data name="LaptopBacklight" xml:space="preserve">
|
||||
<value>Configurações de iluminação</value>
|
||||
</data>
|
||||
<data name="LaptopKeyboard" xml:space="preserve">
|
||||
<value>Teclado</value>
|
||||
</data>
|
||||
<data name="LaptopScreen" xml:space="preserve">
|
||||
<value>Ecrã</value>
|
||||
</data>
|
||||
<data name="Lid" xml:space="preserve">
|
||||
<value>Tampa</value>
|
||||
</data>
|
||||
<data name="Lightbar" xml:space="preserve">
|
||||
<value>Barra de Luz</value>
|
||||
</data>
|
||||
<data name="Lighting" xml:space="preserve">
|
||||
<value>Iluminação</value>
|
||||
</data>
|
||||
<data name="Logo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="Low" xml:space="preserve">
|
||||
<value>Baixo</value>
|
||||
</data>
|
||||
<data name="MatrixAudio" xml:space="preserve">
|
||||
<value>Visualizador de áudio</value>
|
||||
</data>
|
||||
<data name="MatrixBanner" xml:space="preserve">
|
||||
<value>Bandeira Binária</value>
|
||||
</data>
|
||||
<data name="MatrixBright" xml:space="preserve">
|
||||
<value>Brilho</value>
|
||||
</data>
|
||||
<data name="MatrixClock" xml:space="preserve">
|
||||
<value>Relógio</value>
|
||||
</data>
|
||||
<data name="MatrixDim" xml:space="preserve">
|
||||
<value>Escuro</value>
|
||||
</data>
|
||||
<data name="MatrixLogo" xml:space="preserve">
|
||||
<value>Logo ROG</value>
|
||||
</data>
|
||||
<data name="MatrixMedium" xml:space="preserve">
|
||||
<value>Médio</value>
|
||||
</data>
|
||||
<data name="MatrixOff" xml:space="preserve">
|
||||
<value>Desligado</value>
|
||||
</data>
|
||||
<data name="MatrixPicture" xml:space="preserve">
|
||||
<value>Imagem</value>
|
||||
</data>
|
||||
<data name="MaxRefreshTooltip" xml:space="preserve">
|
||||
<value>Taxa de atualização máxima e menor latência</value>
|
||||
</data>
|
||||
<data name="MinRefreshTooltip" xml:space="preserve">
|
||||
<value>Taxa de atualização de 60Hz para poupar bateria</value>
|
||||
</data>
|
||||
<data name="Minute" xml:space="preserve">
|
||||
<value>Minuto</value>
|
||||
</data>
|
||||
<data name="Minutes" xml:space="preserve">
|
||||
<value>Minutos</value>
|
||||
</data>
|
||||
<data name="MouseAngleSnapping" xml:space="preserve">
|
||||
<value>Angle Snapping</value>
|
||||
</data>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Desligar automaticamente após</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>Button Response</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Distância de Lift Off</value>
|
||||
</data>
|
||||
<data name="MouseLowBatteryWarning" xml:space="preserve">
|
||||
<value>Aviso de bateria fraca</value>
|
||||
</data>
|
||||
<data name="MousePerformance" xml:space="preserve">
|
||||
<value>Desempenho do rato</value>
|
||||
</data>
|
||||
<data name="MouseSynchronize" xml:space="preserve">
|
||||
<value>Sincronizar com o rato</value>
|
||||
</data>
|
||||
<data name="Multizone" xml:space="preserve">
|
||||
<value>Multizona</value>
|
||||
</data>
|
||||
<data name="MuteMic" xml:space="preserve">
|
||||
<value>Desligar microfone</value>
|
||||
</data>
|
||||
<data name="Never" xml:space="preserve">
|
||||
<value>Nunca</value>
|
||||
</data>
|
||||
<data name="NewUpdates" xml:space="preserve">
|
||||
<value>Novas atualizações</value>
|
||||
</data>
|
||||
<data name="NoNewUpdates" xml:space="preserve">
|
||||
<value>Sem novas atualizações</value>
|
||||
</data>
|
||||
<data name="NotConnected" xml:space="preserve">
|
||||
<value>Não conectado</value>
|
||||
</data>
|
||||
<data name="OpenGHelper" xml:space="preserve">
|
||||
<value>Abrir G-Helper</value>
|
||||
</data>
|
||||
<data name="Optimized" xml:space="preserve">
|
||||
<value>Otimizado</value>
|
||||
</data>
|
||||
<data name="OptimizedGPUTooltip" xml:space="preserve">
|
||||
<value>Mudar para Eco em bateria, e mudar para Standard quando ligado à corrente</value>
|
||||
</data>
|
||||
<data name="OptimizedUSBC" xml:space="preserve">
|
||||
<value>Manter a GPU desativada ao usar um carregador USB-C no modo Otimizado</value>
|
||||
</data>
|
||||
<data name="Other" xml:space="preserve">
|
||||
<value>Outro</value>
|
||||
</data>
|
||||
<data name="Overdrive" xml:space="preserve">
|
||||
<value>Overdrive</value>
|
||||
</data>
|
||||
<data name="PerformanceMode" xml:space="preserve">
|
||||
<value>Modo</value>
|
||||
</data>
|
||||
<data name="Peripherals" xml:space="preserve">
|
||||
<value>Periféricos</value>
|
||||
</data>
|
||||
<data name="PictureGif" xml:space="preserve">
|
||||
<value>Imagem / Gif</value>
|
||||
</data>
|
||||
<data name="PlayPause" xml:space="preserve">
|
||||
<value>Reproduzir / Pausar</value>
|
||||
</data>
|
||||
<data name="PollingRate" xml:space="preserve">
|
||||
<value>Polling Rate</value>
|
||||
</data>
|
||||
<data name="PowerLimits" xml:space="preserve">
|
||||
<value>Limites de Potência</value>
|
||||
</data>
|
||||
<data name="PPTExperimental" xml:space="preserve">
|
||||
<value>Os Limites de Potência são uma funcionalidade experimental. Use com cuidado!</value>
|
||||
</data>
|
||||
<data name="PrintScreen" xml:space="preserve">
|
||||
<value>Captura de ecrã</value>
|
||||
</data>
|
||||
<data name="Profile" xml:space="preserve">
|
||||
<value>Perfil</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Sair</value>
|
||||
</data>
|
||||
<data name="RestartGPU" xml:space="preserve">
|
||||
<value>Algum processo está a utilizar a dGPU, impedindo o modo Eco. Deixar o G-Helper tentar reiniciar a dGPU no gestor de dispositivos? (Proceda por sua conta e risco)</value>
|
||||
</data>
|
||||
<data name="RPM" xml:space="preserve">
|
||||
<value>RPM</value>
|
||||
</data>
|
||||
<data name="RunOnStartup" xml:space="preserve">
|
||||
<value>Executar ao iniciar</value>
|
||||
</data>
|
||||
<data name="ScreenPadDown" xml:space="preserve">
|
||||
<value>Diminuir o brilho do ScreenPad</value>
|
||||
</data>
|
||||
<data name="ScreenPadUp" xml:space="preserve">
|
||||
<value>Aumentar o brilho do ScreenPad</value>
|
||||
</data>
|
||||
<data name="Shutdown" xml:space="preserve">
|
||||
<value>Desligar</value>
|
||||
</data>
|
||||
<data name="Silent" xml:space="preserve">
|
||||
<value>Silencioso</value>
|
||||
</data>
|
||||
<data name="Sleep" xml:space="preserve">
|
||||
<value>Hibernação</value>
|
||||
</data>
|
||||
<data name="StandardGPUTooltip" xml:space="preserve">
|
||||
<value>Liga o dGPU para uso padrão</value>
|
||||
</data>
|
||||
<data name="StandardMode" xml:space="preserve">
|
||||
<value>Padrão</value>
|
||||
</data>
|
||||
<data name="Start" xml:space="preserve">
|
||||
<value>Iniciar</value>
|
||||
</data>
|
||||
<data name="StartingServices" xml:space="preserve">
|
||||
<value>Iniciando os serviços</value>
|
||||
</data>
|
||||
<data name="StartupError" xml:space="preserve">
|
||||
<value>Erro de inicialização</value>
|
||||
</data>
|
||||
<data name="Stop" xml:space="preserve">
|
||||
<value>Parar</value>
|
||||
</data>
|
||||
<data name="StopGPUApps" xml:space="preserve">
|
||||
<value>Parar programas que usem a GPU</value>
|
||||
</data>
|
||||
<data name="StoppingServices" xml:space="preserve">
|
||||
<value>Parando os serviços</value>
|
||||
</data>
|
||||
<data name="ToggleAura" xml:space="preserve">
|
||||
<value>Alternar Aura</value>
|
||||
</data>
|
||||
<data name="ToggleClamshellMode" xml:space="preserve">
|
||||
<value>Alternar automaticamente o Modo Clamshell</value>
|
||||
</data>
|
||||
<data name="ToggleFnLock" xml:space="preserve">
|
||||
<value>Alternar Fn-Lock</value>
|
||||
</data>
|
||||
<data name="ToggleMiniled" xml:space="preserve">
|
||||
<value>Alternar MiniLED (se suportado)</value>
|
||||
</data>
|
||||
<data name="ToggleScreen" xml:space="preserve">
|
||||
<value>Alternar Ecrã</value>
|
||||
</data>
|
||||
<data name="Turbo" xml:space="preserve">
|
||||
<value>Turbo</value>
|
||||
</data>
|
||||
<data name="TurnedOff" xml:space="preserve">
|
||||
<value>Desligado</value>
|
||||
</data>
|
||||
<data name="TurnOffOnBattery" xml:space="preserve">
|
||||
<value>Desligar em bateria</value>
|
||||
</data>
|
||||
<data name="UltimateGPUTooltip" xml:space="preserve">
|
||||
<value>O ecrã do portátil está ligado diretamente à dGPU, maximizando FPS</value>
|
||||
</data>
|
||||
<data name="UltimateMode" xml:space="preserve">
|
||||
<value>Ultimate</value>
|
||||
</data>
|
||||
<data name="UndervoltingRisky" xml:space="preserve">
|
||||
<value>Undervolting é uma funcionalidade experimental e arriscada. Se os valores aplicados foram baixos para o hardware, podem existir instabilidades, desligar e causar corrupção de dados. Caso queira, comece por valores pequenos no início, clique em Aplicar e teste o que funciona para o hardware.</value>
|
||||
</data>
|
||||
<data name="Updates" xml:space="preserve">
|
||||
<value>Atualizações</value>
|
||||
</data>
|
||||
<data name="VersionLabel" xml:space="preserve">
|
||||
<value>Versão</value>
|
||||
</data>
|
||||
<data name="VolumeDown" xml:space="preserve">
|
||||
<value>Diminuir o volume</value>
|
||||
</data>
|
||||
<data name="VolumeMute" xml:space="preserve">
|
||||
<value>Sem som</value>
|
||||
</data>
|
||||
<data name="VolumeUp" xml:space="preserve">
|
||||
<value>Aumentar o volume</value>
|
||||
</data>
|
||||
<data name="WindowTop" xml:space="preserve">
|
||||
<value>Manter a janela do aplicativo sempre no topo</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -117,6 +117,9 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Acceleration" xml:space="preserve">
|
||||
<value>Acceleration</value>
|
||||
</data>
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Can't connect to ASUS ACPI. Application can't function without it. Try to install Asus System Control Interface</value>
|
||||
</data>
|
||||
@@ -183,6 +186,9 @@
|
||||
<data name="AuraFast" xml:space="preserve">
|
||||
<value>Fast</value>
|
||||
</data>
|
||||
<data name="AuraLightingMode" xml:space="preserve">
|
||||
<value>Lighting Mode</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>Normal</value>
|
||||
</data>
|
||||
@@ -204,6 +210,21 @@
|
||||
<data name="AuraStrobe" xml:space="preserve">
|
||||
<value>Strobe</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>All</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dock</value>
|
||||
</data>
|
||||
<data name="AuraZoneLogo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Scrollwheel</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Underglow</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>Auto Apply</value>
|
||||
</data>
|
||||
@@ -222,6 +243,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>
|
||||
@@ -255,6 +279,9 @@
|
||||
<data name="Custom" xml:space="preserve">
|
||||
<value>Custom</value>
|
||||
</data>
|
||||
<data name="Deceleration" xml:space="preserve">
|
||||
<value>Deceleration</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>Default</value>
|
||||
</data>
|
||||
@@ -265,7 +292,7 @@
|
||||
<value>Discharging</value>
|
||||
</data>
|
||||
<data name="DownloadUpdate" xml:space="preserve">
|
||||
<value>Download Update</value>
|
||||
<value>Download</value>
|
||||
</data>
|
||||
<data name="DriverAndSoftware" xml:space="preserve">
|
||||
<value>Drivers and Software</value>
|
||||
@@ -353,6 +380,9 @@ Do you still want to continue?</value>
|
||||
<data name="GPUTempTarget" xml:space="preserve">
|
||||
<value>Temperature Target</value>
|
||||
</data>
|
||||
<data name="HibernateAfter" xml:space="preserve">
|
||||
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
|
||||
</data>
|
||||
<data name="High" xml:space="preserve">
|
||||
<value>High</value>
|
||||
</data>
|
||||
@@ -434,6 +464,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>
|
||||
@@ -513,7 +546,7 @@ Do you still want to continue?</value>
|
||||
<value>Quit</value>
|
||||
</data>
|
||||
<data name="RestartGPU" xml:space="preserve">
|
||||
<value>Something is using dGPU and preventing Eco mode. Restart dGPU in device manager? * Please proceed at your own risk.</value>
|
||||
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
|
||||
</data>
|
||||
<data name="RPM" xml:space="preserve">
|
||||
<value>RPM</value>
|
||||
|
||||
@@ -117,6 +117,9 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Acceleration" xml:space="preserve">
|
||||
<value>Acceleration</value>
|
||||
</data>
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Nu se poate conecta la ASUS ACPI. Aplicația nu poate funcționa fără aceasta. Încercați să instalați Asus System Control Interface</value>
|
||||
</data>
|
||||
@@ -183,6 +186,9 @@
|
||||
<data name="AuraFast" xml:space="preserve">
|
||||
<value>Rapid</value>
|
||||
</data>
|
||||
<data name="AuraLightingMode" xml:space="preserve">
|
||||
<value>Lighting Mode</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>Normal</value>
|
||||
</data>
|
||||
@@ -204,6 +210,21 @@
|
||||
<data name="AuraStrobe" xml:space="preserve">
|
||||
<value>Stroboscop</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>All</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dock</value>
|
||||
</data>
|
||||
<data name="AuraZoneLogo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Scrollwheel</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Underglow</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>Aplicare automată</value>
|
||||
</data>
|
||||
@@ -222,6 +243,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>
|
||||
@@ -255,6 +279,9 @@
|
||||
<data name="Custom" xml:space="preserve">
|
||||
<value>Personalizat</value>
|
||||
</data>
|
||||
<data name="Deceleration" xml:space="preserve">
|
||||
<value>Deceleration</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>Implicit</value>
|
||||
</data>
|
||||
@@ -265,7 +292,7 @@
|
||||
<value>Se descarcă</value>
|
||||
</data>
|
||||
<data name="DownloadUpdate" xml:space="preserve">
|
||||
<value>Descărcați actualizarea</value>
|
||||
<value>Download</value>
|
||||
</data>
|
||||
<data name="DriverAndSoftware" xml:space="preserve">
|
||||
<value>Drivers și Aplicații</value>
|
||||
@@ -353,6 +380,9 @@
|
||||
<data name="GPUTempTarget" xml:space="preserve">
|
||||
<value>Temperatura țintă</value>
|
||||
</data>
|
||||
<data name="HibernateAfter" xml:space="preserve">
|
||||
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
|
||||
</data>
|
||||
<data name="High" xml:space="preserve">
|
||||
<value>High</value>
|
||||
</data>
|
||||
@@ -434,6 +464,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>
|
||||
@@ -513,7 +546,7 @@
|
||||
<value>Închide</value>
|
||||
</data>
|
||||
<data name="RestartGPU" xml:space="preserve">
|
||||
<value>O aplicație folosește dGPU și previne pornirea modului Eco. Reporniți dGPU în device manager? * Continuați pe propriul risc.</value>
|
||||
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
|
||||
</data>
|
||||
<data name="RPM" xml:space="preserve">
|
||||
<value>RPM</value>
|
||||
|
||||
@@ -117,6 +117,9 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Acceleration" xml:space="preserve">
|
||||
<value>Acceleration</value>
|
||||
</data>
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>ASUS ACPI'ye bağlanılamıyor. Uygulama o olmadan çalışamaz. Asus Sistem Kontrol Arayüzü'nü yüklemeyi deneyin.</value>
|
||||
</data>
|
||||
@@ -183,6 +186,9 @@
|
||||
<data name="AuraFast" xml:space="preserve">
|
||||
<value>Hızlı</value>
|
||||
</data>
|
||||
<data name="AuraLightingMode" xml:space="preserve">
|
||||
<value>Lighting Mode</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>Normal</value>
|
||||
</data>
|
||||
@@ -204,6 +210,21 @@
|
||||
<data name="AuraStrobe" xml:space="preserve">
|
||||
<value>Flaş</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>All</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dock</value>
|
||||
</data>
|
||||
<data name="AuraZoneLogo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Scrollwheel</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Underglow</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>Auto Apply</value>
|
||||
</data>
|
||||
@@ -222,6 +243,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>
|
||||
@@ -255,6 +279,9 @@
|
||||
<data name="Custom" xml:space="preserve">
|
||||
<value>Özel</value>
|
||||
</data>
|
||||
<data name="Deceleration" xml:space="preserve">
|
||||
<value>Deceleration</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>Varsayılan</value>
|
||||
</data>
|
||||
@@ -265,7 +292,7 @@
|
||||
<value>Pil boşalıyor</value>
|
||||
</data>
|
||||
<data name="DownloadUpdate" xml:space="preserve">
|
||||
<value>Güncelleştirmeyi İndir</value>
|
||||
<value>Download</value>
|
||||
</data>
|
||||
<data name="DriverAndSoftware" xml:space="preserve">
|
||||
<value>Drivers and Software</value>
|
||||
@@ -353,6 +380,9 @@ Do you still want to continue?</value>
|
||||
<data name="GPUTempTarget" xml:space="preserve">
|
||||
<value>Temperature Target</value>
|
||||
</data>
|
||||
<data name="HibernateAfter" xml:space="preserve">
|
||||
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
|
||||
</data>
|
||||
<data name="High" xml:space="preserve">
|
||||
<value>High</value>
|
||||
</data>
|
||||
@@ -434,6 +464,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>
|
||||
@@ -513,7 +546,7 @@ Do you still want to continue?</value>
|
||||
<value>Çıkış Yap</value>
|
||||
</data>
|
||||
<data name="RestartGPU" xml:space="preserve">
|
||||
<value>Something is using dGPU and preventing Eco mode. Restart dGPU in device manager? * Please proceed at your own risk.</value>
|
||||
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
|
||||
</data>
|
||||
<data name="RPM" xml:space="preserve">
|
||||
<value>RPM</value>
|
||||
|
||||
@@ -117,6 +117,9 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Acceleration" xml:space="preserve">
|
||||
<value>Acceleration</value>
|
||||
</data>
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Не вдається під'єднатися до ASUS ACPI. Програма не може працювати без нього. Спробуйте встановити Asus System Control Interface</value>
|
||||
</data>
|
||||
@@ -133,7 +136,7 @@
|
||||
<value>Ультимативний режим потребує перезавантаження</value>
|
||||
</data>
|
||||
<data name="AlertUltimateTitle" xml:space="preserve">
|
||||
<value>Перезавантажитися зараз?</value>
|
||||
<value>Перезавантажити зараз?</value>
|
||||
</data>
|
||||
<data name="AnimationSpeed" xml:space="preserve">
|
||||
<value>Швидкість Анімації</value>
|
||||
@@ -163,26 +166,29 @@
|
||||
<value>Кількість запущених сервісів Asus</value>
|
||||
</data>
|
||||
<data name="AuraBatteryState" xml:space="preserve">
|
||||
<value>Battery State</value>
|
||||
<value>Стан батареї</value>
|
||||
</data>
|
||||
<data name="AuraBreathe" xml:space="preserve">
|
||||
<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>Підсвітка</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>Нормальна</value>
|
||||
</data>
|
||||
@@ -190,10 +196,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>
|
||||
@@ -204,6 +210,21 @@
|
||||
<data name="AuraStrobe" xml:space="preserve">
|
||||
<value>Стробоскоп</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>Все</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Док</value>
|
||||
</data>
|
||||
<data name="AuraZoneLogo" xml:space="preserve">
|
||||
<value>Лого</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Колесо</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Низ</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>Автоматично</value>
|
||||
</data>
|
||||
@@ -222,6 +243,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>
|
||||
@@ -255,6 +279,9 @@
|
||||
<data name="Custom" xml:space="preserve">
|
||||
<value>Своє</value>
|
||||
</data>
|
||||
<data name="Deceleration" xml:space="preserve">
|
||||
<value>Deceleration</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>За замовчуванням</value>
|
||||
</data>
|
||||
@@ -285,7 +312,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>
|
||||
@@ -353,8 +380,11 @@
|
||||
<data name="GPUTempTarget" xml:space="preserve">
|
||||
<value>Temperature Target</value>
|
||||
</data>
|
||||
<data name="HibernateAfter" xml:space="preserve">
|
||||
<value>Хвилин до режиму глибокого сну з акумулятором (0 - Вимкнено)</value>
|
||||
</data>
|
||||
<data name="High" xml:space="preserve">
|
||||
<value>High</value>
|
||||
<value>Висока</value>
|
||||
</data>
|
||||
<data name="KeyBindings" xml:space="preserve">
|
||||
<value>Прив'язки клавіш</value>
|
||||
@@ -381,13 +411,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>
|
||||
@@ -423,28 +453,31 @@
|
||||
<value>Частота 60Гц, щоб зберегти заряд батареї</value>
|
||||
</data>
|
||||
<data name="Minute" xml:space="preserve">
|
||||
<value>Minute</value>
|
||||
<value>Хвил.</value>
|
||||
</data>
|
||||
<data name="Minutes" xml:space="preserve">
|
||||
<value>Minutes</value>
|
||||
<value>Хвилини</value>
|
||||
</data>
|
||||
<data name="MouseAngleSnapping" xml:space="preserve">
|
||||
<value>Angle Snapping</value>
|
||||
<value>Фіксація Кута</value>
|
||||
</data>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Auto Power Off After</value>
|
||||
<value>Авто-вимикання</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>Відповідь Кнопок</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Lift Off Distance</value>
|
||||
<value>Відстань підйому</value>
|
||||
</data>
|
||||
<data name="MouseLowBatteryWarning" xml:space="preserve">
|
||||
<value>Low Battery Warning at</value>
|
||||
<value>Попередження про низький заряд</value>
|
||||
</data>
|
||||
<data name="MousePerformance" xml:space="preserve">
|
||||
<value>Performance</value>
|
||||
<value>Режим Швидкодії</value>
|
||||
</data>
|
||||
<data name="MouseSynchronize" xml:space="preserve">
|
||||
<value>Synchronize with mouse</value>
|
||||
<value>Синхронізувати з мишею</value>
|
||||
</data>
|
||||
<data name="Multizone" xml:space="preserve">
|
||||
<value>Мультизони</value>
|
||||
@@ -453,7 +486,7 @@
|
||||
<value>Вимкнути мікрофон</value>
|
||||
</data>
|
||||
<data name="Never" xml:space="preserve">
|
||||
<value>Never</value>
|
||||
<value>Ніколи</value>
|
||||
</data>
|
||||
<data name="NewUpdates" xml:space="preserve">
|
||||
<value>Є оновлення</value>
|
||||
@@ -462,7 +495,7 @@
|
||||
<value>Немає оновлень</value>
|
||||
</data>
|
||||
<data name="NotConnected" xml:space="preserve">
|
||||
<value>Not Connected</value>
|
||||
<value>Не під'єднано</value>
|
||||
</data>
|
||||
<data name="OpenGHelper" xml:space="preserve">
|
||||
<value>Відкрити вікно G-Helper</value>
|
||||
@@ -486,7 +519,7 @@
|
||||
<value>Режим</value>
|
||||
</data>
|
||||
<data name="Peripherals" xml:space="preserve">
|
||||
<value>Peripherals</value>
|
||||
<value>Периферія</value>
|
||||
</data>
|
||||
<data name="PictureGif" xml:space="preserve">
|
||||
<value>Картинка / GIF</value>
|
||||
@@ -495,7 +528,7 @@
|
||||
<value>Відтворення / Пауза</value>
|
||||
</data>
|
||||
<data name="PollingRate" xml:space="preserve">
|
||||
<value>Polling Rate</value>
|
||||
<value>Частота опитування</value>
|
||||
</data>
|
||||
<data name="PowerLimits" xml:space="preserve">
|
||||
<value>Ліміти Потужності</value>
|
||||
@@ -507,13 +540,13 @@
|
||||
<value>Print Screen</value>
|
||||
</data>
|
||||
<data name="Profile" xml:space="preserve">
|
||||
<value>Profile</value>
|
||||
<value>Профіль</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Вихід</value>
|
||||
</data>
|
||||
<data name="RestartGPU" xml:space="preserve">
|
||||
<value>Щось використовує dGPU та не дає перейти в режимі Еко. Перезапустити dGPU у менеджері пристроїв? * Будь ласка, продовжуйте на свій страх і ризик.</value>
|
||||
<value>Щось використовує dGPU та запобігає Еко-режиму. Дозвольте G-Helper спробувати перезапустити dGPU у менеджері пристрою? (Будь ласка, продовжуйте на власний ризик)</value>
|
||||
</data>
|
||||
<data name="RPM" xml:space="preserve">
|
||||
<value>Оберти</value>
|
||||
|
||||
@@ -117,6 +117,9 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Acceleration" xml:space="preserve">
|
||||
<value>Gia tốc</value>
|
||||
</data>
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>Không thể kết nối đến ASUS ACPI. Chương trình cần nó để có thể hoạt động. Hãy thử cài lại Asus System Control Interface</value>
|
||||
</data>
|
||||
@@ -163,26 +166,29 @@
|
||||
<value>Dịch vụ Asus đang chạy</value>
|
||||
</data>
|
||||
<data name="AuraBatteryState" xml:space="preserve">
|
||||
<value>Battery State</value>
|
||||
<value>Trạng thái pin</value>
|
||||
</data>
|
||||
<data name="AuraBreathe" xml:space="preserve">
|
||||
<value>Hơi thở</value>
|
||||
</data>
|
||||
<data name="AuraClockwise" xml:space="preserve">
|
||||
<value>Clockwise</value>
|
||||
<value>Chiều kim đồng hồ</value>
|
||||
</data>
|
||||
<data name="AuraColorCycle" xml:space="preserve">
|
||||
<value>Chuyển màu</value>
|
||||
</data>
|
||||
<data name="AuraComet" xml:space="preserve">
|
||||
<value>Comet</value>
|
||||
<value>Sao chổi</value>
|
||||
</data>
|
||||
<data name="AuraCounterClockwise" xml:space="preserve">
|
||||
<value>Counterclockwise</value>
|
||||
<value>Ngược chiều kim đồng hồ</value>
|
||||
</data>
|
||||
<data name="AuraFast" xml:space="preserve">
|
||||
<value>Nhanh</value>
|
||||
</data>
|
||||
<data name="AuraLightingMode" xml:space="preserve">
|
||||
<value>Chế độ sáng</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>Bình thường</value>
|
||||
</data>
|
||||
@@ -190,10 +196,10 @@
|
||||
<value>Cầu vồng</value>
|
||||
</data>
|
||||
<data name="AuraRandomColor" xml:space="preserve">
|
||||
<value>Random</value>
|
||||
<value>Ngẫu nhiên</value>
|
||||
</data>
|
||||
<data name="AuraReact" xml:space="preserve">
|
||||
<value>React</value>
|
||||
<value>Phản ứng</value>
|
||||
</data>
|
||||
<data name="AuraSlow" xml:space="preserve">
|
||||
<value>Chậm</value>
|
||||
@@ -204,6 +210,21 @@
|
||||
<data name="AuraStrobe" xml:space="preserve">
|
||||
<value>Nhấp nháy</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>Tất cả</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dock</value>
|
||||
</data>
|
||||
<data name="AuraZoneLogo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>Scrollwheel</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Underglow</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>Áp dụng tự động</value>
|
||||
</data>
|
||||
@@ -222,11 +243,14 @@
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>Cân bằng</value>
|
||||
</data>
|
||||
<data name="BatteryCharge" xml:space="preserve">
|
||||
<value>Sạc</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Giới hạn sạc</value>
|
||||
</data>
|
||||
<data name="BatteryHealth" xml:space="preserve">
|
||||
<value>Battery Health</value>
|
||||
<value>Sức khoẻ pin</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>Cập nhật BIOS và driver</value>
|
||||
@@ -244,7 +268,7 @@
|
||||
<value>Tăng độ sáng</value>
|
||||
</data>
|
||||
<data name="Charging" xml:space="preserve">
|
||||
<value>Charging</value>
|
||||
<value>Đang sạc</value>
|
||||
</data>
|
||||
<data name="Color" xml:space="preserve">
|
||||
<value>Màu</value>
|
||||
@@ -255,6 +279,9 @@
|
||||
<data name="Custom" xml:space="preserve">
|
||||
<value>Tuỳ chỉnh</value>
|
||||
</data>
|
||||
<data name="Deceleration" xml:space="preserve">
|
||||
<value>Giảm tốc</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>Mặc định</value>
|
||||
</data>
|
||||
@@ -265,7 +292,7 @@
|
||||
<value>Đang không sạc</value>
|
||||
</data>
|
||||
<data name="DownloadUpdate" xml:space="preserve">
|
||||
<value>Tải xuống bản cập nhật</value>
|
||||
<value>Tải xuống</value>
|
||||
</data>
|
||||
<data name="DriverAndSoftware" xml:space="preserve">
|
||||
<value>Driver và phần mềm</value>
|
||||
@@ -353,6 +380,9 @@ Do you still want to continue?</value>
|
||||
<data name="GPUTempTarget" xml:space="preserve">
|
||||
<value>Nhiệt độ đích</value>
|
||||
</data>
|
||||
<data name="HibernateAfter" xml:space="preserve">
|
||||
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
|
||||
</data>
|
||||
<data name="High" xml:space="preserve">
|
||||
<value>High</value>
|
||||
</data>
|
||||
@@ -434,6 +464,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>
|
||||
@@ -513,7 +546,7 @@ Do you still want to continue?</value>
|
||||
<value>Thoát</value>
|
||||
</data>
|
||||
<data name="RestartGPU" xml:space="preserve">
|
||||
<value>Không thể chuyển về Chế độ Tiết kiệm do có gì đó đang dùng GPU rời. Khởi động lại GPU rời trong Quản lý Thiết bị? * Bạn sẽ chịu mọi rủi ro.</value>
|
||||
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
|
||||
</data>
|
||||
<data name="RPM" xml:space="preserve">
|
||||
<value>VTP</value>
|
||||
|
||||
@@ -117,6 +117,9 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Acceleration" xml:space="preserve">
|
||||
<value>Acceleration</value>
|
||||
</data>
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>无法连接到ASUS ACPI。 没有它应用程序将无法运行。 请尝试安装Asus System Control Interface驱动。</value>
|
||||
</data>
|
||||
@@ -151,7 +154,7 @@
|
||||
<value>应用</value>
|
||||
</data>
|
||||
<data name="ApplyFanCurve" xml:space="preserve">
|
||||
<value>应用自定义扇形曲线</value>
|
||||
<value>应用自定义风扇曲线</value>
|
||||
</data>
|
||||
<data name="ApplyPowerLimits" xml:space="preserve">
|
||||
<value>应用功率限制</value>
|
||||
@@ -163,26 +166,29 @@
|
||||
<value>正在运行的 Asus 服务</value>
|
||||
</data>
|
||||
<data name="AuraBatteryState" xml:space="preserve">
|
||||
<value>Battery State</value>
|
||||
<value>电池状态</value>
|
||||
</data>
|
||||
<data name="AuraBreathe" xml:space="preserve">
|
||||
<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>灯效模式</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>正常</value>
|
||||
</data>
|
||||
@@ -190,10 +196,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>
|
||||
@@ -204,6 +210,21 @@
|
||||
<data name="AuraStrobe" xml:space="preserve">
|
||||
<value>闪烁</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>全部</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dock</value>
|
||||
</data>
|
||||
<data name="AuraZoneLogo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>滚轮</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Underglow</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>自动应用</value>
|
||||
</data>
|
||||
@@ -222,6 +243,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>
|
||||
@@ -255,6 +279,9 @@
|
||||
<data name="Custom" xml:space="preserve">
|
||||
<value>自定义设置</value>
|
||||
</data>
|
||||
<data name="Deceleration" xml:space="preserve">
|
||||
<value>Deceleration</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>默认</value>
|
||||
</data>
|
||||
@@ -265,7 +292,7 @@
|
||||
<value>正在放电</value>
|
||||
</data>
|
||||
<data name="DownloadUpdate" xml:space="preserve">
|
||||
<value>下载更新</value>
|
||||
<value>下载</value>
|
||||
</data>
|
||||
<data name="DriverAndSoftware" xml:space="preserve">
|
||||
<value>驱动程序和软件</value>
|
||||
@@ -282,10 +309,10 @@
|
||||
确定还要继续吗?</value>
|
||||
</data>
|
||||
<data name="EnableOptimusTitle" xml:space="preserve">
|
||||
<value>nVIDIA显示模式尚未设置至Optimus</value>
|
||||
<value>NVIDIA 显示模式未设置为自动切换</value>
|
||||
</data>
|
||||
<data name="EnergySettings" xml:space="preserve">
|
||||
<value>Energy Settings</value>
|
||||
<value>电源设置</value>
|
||||
</data>
|
||||
<data name="Extra" xml:space="preserve">
|
||||
<value>更多</value>
|
||||
@@ -318,7 +345,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>
|
||||
@@ -353,8 +380,11 @@
|
||||
<data name="GPUTempTarget" xml:space="preserve">
|
||||
<value>温度目标</value>
|
||||
</data>
|
||||
<data name="HibernateAfter" xml:space="preserve">
|
||||
<value>在使用电池时几分钟后进入休眠状态 (0 - 关闭)</value>
|
||||
</data>
|
||||
<data name="High" xml:space="preserve">
|
||||
<value>High</value>
|
||||
<value>高</value>
|
||||
</data>
|
||||
<data name="KeyBindings" xml:space="preserve">
|
||||
<value>按键绑定</value>
|
||||
@@ -381,13 +411,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>
|
||||
@@ -423,28 +453,31 @@
|
||||
<value>调整刷新率为60Hz以节省电量</value>
|
||||
</data>
|
||||
<data name="Minute" xml:space="preserve">
|
||||
<value>Minute</value>
|
||||
<value>分钟</value>
|
||||
</data>
|
||||
<data name="Minutes" xml:space="preserve">
|
||||
<value>Minutes</value>
|
||||
<value>分组</value>
|
||||
</data>
|
||||
<data name="MouseAngleSnapping" xml:space="preserve">
|
||||
<value>Angle Snapping</value>
|
||||
<value>角度校正</value>
|
||||
</data>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Auto Power Off After</value>
|
||||
<value>自动关闭时间</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>按键响应</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Lift Off Distance</value>
|
||||
<value>静默高度</value>
|
||||
</data>
|
||||
<data name="MouseLowBatteryWarning" xml:space="preserve">
|
||||
<value>Low Battery Warning at</value>
|
||||
<value>低于该电量时警告</value>
|
||||
</data>
|
||||
<data name="MousePerformance" xml:space="preserve">
|
||||
<value>Performance</value>
|
||||
<value>性能</value>
|
||||
</data>
|
||||
<data name="MouseSynchronize" xml:space="preserve">
|
||||
<value>Synchronize with mouse</value>
|
||||
<value>和鼠标同步</value>
|
||||
</data>
|
||||
<data name="Multizone" xml:space="preserve">
|
||||
<value>多区域设置</value>
|
||||
@@ -453,7 +486,7 @@
|
||||
<value>静音麦克风</value>
|
||||
</data>
|
||||
<data name="Never" xml:space="preserve">
|
||||
<value>Never</value>
|
||||
<value>从不</value>
|
||||
</data>
|
||||
<data name="NewUpdates" xml:space="preserve">
|
||||
<value>有更新</value>
|
||||
@@ -462,7 +495,7 @@
|
||||
<value>无更新</value>
|
||||
</data>
|
||||
<data name="NotConnected" xml:space="preserve">
|
||||
<value>Not Connected</value>
|
||||
<value>未连接</value>
|
||||
</data>
|
||||
<data name="OpenGHelper" xml:space="preserve">
|
||||
<value>打开G-Helper窗口</value>
|
||||
@@ -480,13 +513,13 @@
|
||||
<value>其他</value>
|
||||
</data>
|
||||
<data name="Overdrive" xml:space="preserve">
|
||||
<value>OD</value>
|
||||
<value>超频</value>
|
||||
</data>
|
||||
<data name="PerformanceMode" xml:space="preserve">
|
||||
<value>性能模式</value>
|
||||
</data>
|
||||
<data name="Peripherals" xml:space="preserve">
|
||||
<value>Peripherals</value>
|
||||
<value>外设</value>
|
||||
</data>
|
||||
<data name="PictureGif" xml:space="preserve">
|
||||
<value>图片/动图</value>
|
||||
@@ -495,7 +528,7 @@
|
||||
<value>播放/暂停</value>
|
||||
</data>
|
||||
<data name="PollingRate" xml:space="preserve">
|
||||
<value>Polling Rate</value>
|
||||
<value>回报率</value>
|
||||
</data>
|
||||
<data name="PowerLimits" xml:space="preserve">
|
||||
<value>功率限制</value>
|
||||
@@ -507,13 +540,13 @@
|
||||
<value>截图</value>
|
||||
</data>
|
||||
<data name="Profile" xml:space="preserve">
|
||||
<value>Profile</value>
|
||||
<value>配置</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>退出</value>
|
||||
</data>
|
||||
<data name="RestartGPU" xml:space="preserve">
|
||||
<value>有程序正在使用独立显卡阻止进入节能模式。要在设备管理器中重新启动dGPU 吗?* 请自行承担风险。</value>
|
||||
<value>有程序正在使用独显并阻止进入集显模式。要让 G-Helper 在设备管理器中重新启动独显吗?(请自行承担风险)</value>
|
||||
</data>
|
||||
<data name="RPM" xml:space="preserve">
|
||||
<value>转/分钟</value>
|
||||
@@ -564,7 +597,7 @@
|
||||
<value>切换 Aura 模式</value>
|
||||
</data>
|
||||
<data name="ToggleClamshellMode" xml:space="preserve">
|
||||
<value>自动启用外接显示器模式</value>
|
||||
<value>自动切换合盖模式</value>
|
||||
</data>
|
||||
<data name="ToggleFnLock" xml:space="preserve">
|
||||
<value>切换 Fn 锁定</value>
|
||||
@@ -573,7 +606,7 @@
|
||||
<value>切换 MiniLED (如果支持)</value>
|
||||
</data>
|
||||
<data name="ToggleScreen" xml:space="preserve">
|
||||
<value>切换屏幕</value>
|
||||
<value>关闭屏幕</value>
|
||||
</data>
|
||||
<data name="Turbo" xml:space="preserve">
|
||||
<value>增强模式</value>
|
||||
|
||||
@@ -117,6 +117,9 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Acceleration" xml:space="preserve">
|
||||
<value>滑鼠加速</value>
|
||||
</data>
|
||||
<data name="ACPIError" xml:space="preserve">
|
||||
<value>無法連結到華碩 ACPI。 没有它,應用程式將無法執行。 嘗試安裝Asus System Control Interface</value>
|
||||
</data>
|
||||
@@ -163,26 +166,29 @@
|
||||
<value>執行中的華碩服務</value>
|
||||
</data>
|
||||
<data name="AuraBatteryState" xml:space="preserve">
|
||||
<value>Battery State</value>
|
||||
<value>電池狀態</value>
|
||||
</data>
|
||||
<data name="AuraBreathe" xml:space="preserve">
|
||||
<value>呼吸</value>
|
||||
</data>
|
||||
<data name="AuraClockwise" xml:space="preserve">
|
||||
<value>Clockwise</value>
|
||||
<value>順時針</value>
|
||||
</data>
|
||||
<data name="AuraColorCycle" xml:space="preserve">
|
||||
<value>循環</value>
|
||||
<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>燈效模式</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>正常</value>
|
||||
</data>
|
||||
@@ -190,20 +196,35 @@
|
||||
<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>
|
||||
</data>
|
||||
<data name="AuraStatic" xml:space="preserve">
|
||||
<value>靜態</value>
|
||||
<value>靜態恆亮</value>
|
||||
</data>
|
||||
<data name="AuraStrobe" xml:space="preserve">
|
||||
<value>閃爍</value>
|
||||
</data>
|
||||
<data name="AuraZoneAll" xml:space="preserve">
|
||||
<value>全部</value>
|
||||
</data>
|
||||
<data name="AuraZoneDock" xml:space="preserve">
|
||||
<value>Dock</value>
|
||||
</data>
|
||||
<data name="AuraZoneLogo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="AuraZoneScroll" xml:space="preserve">
|
||||
<value>滾輪</value>
|
||||
</data>
|
||||
<data name="AuraZoneUnderglow" xml:space="preserve">
|
||||
<value>Underglow</value>
|
||||
</data>
|
||||
<data name="AutoApply" xml:space="preserve">
|
||||
<value>自動套用</value>
|
||||
</data>
|
||||
@@ -217,11 +238,14 @@
|
||||
<value>喚醒時</value>
|
||||
</data>
|
||||
<data name="BacklightTimeout" xml:space="preserve">
|
||||
<value>超時插入/使用電池 (0 = 不關閉)</value>
|
||||
<value>閒置幾秒後關閉燈光:插電時 / 使用電池 (0 = 不關閉)</value>
|
||||
</data>
|
||||
<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>
|
||||
@@ -255,6 +279,9 @@
|
||||
<data name="Custom" xml:space="preserve">
|
||||
<value>自定義設置</value>
|
||||
</data>
|
||||
<data name="Deceleration" xml:space="preserve">
|
||||
<value>滑鼠減速</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>預設</value>
|
||||
</data>
|
||||
@@ -265,7 +292,7 @@
|
||||
<value>正在釋放電力</value>
|
||||
</data>
|
||||
<data name="DownloadUpdate" xml:space="preserve">
|
||||
<value>下載更新</value>
|
||||
<value>下載</value>
|
||||
</data>
|
||||
<data name="DriverAndSoftware" xml:space="preserve">
|
||||
<value>驅動程式與軟體</value>
|
||||
@@ -285,7 +312,7 @@
|
||||
<value>Nvidia顯示模式未設置為自動切換</value>
|
||||
</data>
|
||||
<data name="EnergySettings" xml:space="preserve">
|
||||
<value>Energy Settings</value>
|
||||
<value>電源設定</value>
|
||||
</data>
|
||||
<data name="Extra" xml:space="preserve">
|
||||
<value>更多</value>
|
||||
@@ -353,8 +380,11 @@
|
||||
<data name="GPUTempTarget" xml:space="preserve">
|
||||
<value>GPU溫度上限</value>
|
||||
</data>
|
||||
<data name="HibernateAfter" xml:space="preserve">
|
||||
<value>使用電池下何時進入休眠(0=關閉此功能)</value>
|
||||
</data>
|
||||
<data name="High" xml:space="preserve">
|
||||
<value>High</value>
|
||||
<value>高</value>
|
||||
</data>
|
||||
<data name="KeyBindings" xml:space="preserve">
|
||||
<value>按鍵綁定</value>
|
||||
@@ -381,13 +411,13 @@
|
||||
<value>燈條</value>
|
||||
</data>
|
||||
<data name="Lighting" xml:space="preserve">
|
||||
<value>Lighting</value>
|
||||
<value>亮度</value>
|
||||
</data>
|
||||
<data name="Logo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="Low" xml:space="preserve">
|
||||
<value>Low</value>
|
||||
<value>低</value>
|
||||
</data>
|
||||
<data name="MatrixAudio" xml:space="preserve">
|
||||
<value>音效視覺化</value>
|
||||
@@ -423,28 +453,31 @@
|
||||
<value>維持60Hz以節省電量</value>
|
||||
</data>
|
||||
<data name="Minute" xml:space="preserve">
|
||||
<value>Minute</value>
|
||||
<value>分鐘</value>
|
||||
</data>
|
||||
<data name="Minutes" xml:space="preserve">
|
||||
<value>Minutes</value>
|
||||
<value>分鐘</value>
|
||||
</data>
|
||||
<data name="MouseAngleSnapping" xml:space="preserve">
|
||||
<value>Angle Snapping</value>
|
||||
<value>角度修正</value>
|
||||
</data>
|
||||
<data name="MouseAutoPowerOff" xml:space="preserve">
|
||||
<value>Auto Power Off After</value>
|
||||
<value>自動關閉電源</value>
|
||||
</data>
|
||||
<data name="MouseButtonResponse" xml:space="preserve">
|
||||
<value>按鍵回應</value>
|
||||
</data>
|
||||
<data name="MouseLiftOffDistance" xml:space="preserve">
|
||||
<value>Lift Off Distance</value>
|
||||
<value>響應高度(LOD)</value>
|
||||
</data>
|
||||
<data name="MouseLowBatteryWarning" xml:space="preserve">
|
||||
<value>Low Battery Warning at</value>
|
||||
<value>低電量警告</value>
|
||||
</data>
|
||||
<data name="MousePerformance" xml:space="preserve">
|
||||
<value>Performance</value>
|
||||
<value>性能設定</value>
|
||||
</data>
|
||||
<data name="MouseSynchronize" xml:space="preserve">
|
||||
<value>Synchronize with mouse</value>
|
||||
<value>與滑鼠同步</value>
|
||||
</data>
|
||||
<data name="Multizone" xml:space="preserve">
|
||||
<value>多區域</value>
|
||||
@@ -453,7 +486,7 @@
|
||||
<value>麥克風開關</value>
|
||||
</data>
|
||||
<data name="Never" xml:space="preserve">
|
||||
<value>Never</value>
|
||||
<value>永不</value>
|
||||
</data>
|
||||
<data name="NewUpdates" xml:space="preserve">
|
||||
<value>新的更新</value>
|
||||
@@ -462,7 +495,7 @@
|
||||
<value>沒有新的更新</value>
|
||||
</data>
|
||||
<data name="NotConnected" xml:space="preserve">
|
||||
<value>Not Connected</value>
|
||||
<value>未連線</value>
|
||||
</data>
|
||||
<data name="OpenGHelper" xml:space="preserve">
|
||||
<value>開啟G-Helper視窗</value>
|
||||
@@ -486,7 +519,7 @@
|
||||
<value>性能模式:</value>
|
||||
</data>
|
||||
<data name="Peripherals" xml:space="preserve">
|
||||
<value>Peripherals</value>
|
||||
<value>週邊設備</value>
|
||||
</data>
|
||||
<data name="PictureGif" xml:space="preserve">
|
||||
<value>圖片/動圖</value>
|
||||
@@ -495,7 +528,7 @@
|
||||
<value>播放/暫停</value>
|
||||
</data>
|
||||
<data name="PollingRate" xml:space="preserve">
|
||||
<value>Polling Rate</value>
|
||||
<value>輪循率</value>
|
||||
</data>
|
||||
<data name="PowerLimits" xml:space="preserve">
|
||||
<value>功率限制</value>
|
||||
@@ -507,13 +540,13 @@
|
||||
<value>截圖</value>
|
||||
</data>
|
||||
<data name="Profile" xml:space="preserve">
|
||||
<value>Profile</value>
|
||||
<value>設定檔</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>退出</value>
|
||||
</data>
|
||||
<data name="RestartGPU" xml:space="preserve">
|
||||
<value>有其他程式正在使用獨顯導致無法切換至節能模式. 是否在裝置管理員中重啟獨顯? * 請自行評估風險</value>
|
||||
<value>有其他程式正在使用獨顯導致無法切換至節能模式. 是否讓G-Helper重新啟動獨顯? * 請自行評估風險</value>
|
||||
</data>
|
||||
<data name="RPM" xml:space="preserve">
|
||||
<value>每分鐘轉數</value>
|
||||
|
||||
BIN
app/Resources/Font.otf
Normal file
BIN
app/Resources/Font.otf
Normal file
Binary file not shown.
BIN
app/Resources/icons8-hibernate-32.png
Normal file
BIN
app/Resources/icons8-hibernate-32.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 563 B |
@@ -11,13 +11,13 @@ namespace Ryzen
|
||||
internal class RyzenControl
|
||||
{
|
||||
|
||||
public const int MinCPUUV = -30;
|
||||
public static int MinCPUUV => AppConfig.Get("min_uv", -30);
|
||||
public const int MaxCPUUV = 0;
|
||||
|
||||
public const int MinIGPUUV = -20;
|
||||
public const int MaxIGPUUV = 0;
|
||||
|
||||
public const int MinTemp = 75;
|
||||
public static int MinTemp => AppConfig.Get("min_temp", 75);
|
||||
public const int MaxTemp = 98;
|
||||
|
||||
public static string[] FAM = { "RAVEN", "PICASSO", "DALI", "RENOIR/LUCIENNE", "MATISSE", "VANGOGH", "VERMEER", "CEZANNE/BARCELO", "REMBRANDT", "PHOENIX", "RAPHAEL/DRAGON RANGE" };
|
||||
|
||||
189
app/Settings.Designer.cs
generated
189
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();
|
||||
@@ -93,10 +94,11 @@ namespace GHelper
|
||||
buttonKeyboardColor = new RButton();
|
||||
comboKeyboard = new RComboBox();
|
||||
panelKeyboardTitle = new Panel();
|
||||
buttonFnLock = new RButton();
|
||||
pictureKeyboard = new PictureBox();
|
||||
labelKeyboard = new Label();
|
||||
labelVersion = new Label();
|
||||
panelVersion = new Panel();
|
||||
labelCharge = new Label();
|
||||
panelPeripherals = new Panel();
|
||||
tableLayoutPeripherals = new TableLayoutPanel();
|
||||
buttonPeripheral3 = new RButton();
|
||||
@@ -142,6 +144,8 @@ namespace GHelper
|
||||
//
|
||||
// panelMatrix
|
||||
//
|
||||
panelMatrix.AccessibleName = "Anime Matrix";
|
||||
panelMatrix.AccessibleRole = AccessibleRole.Grouping;
|
||||
panelMatrix.AutoSize = true;
|
||||
panelMatrix.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelMatrix.Controls.Add(tableLayoutMatrix);
|
||||
@@ -153,7 +157,8 @@ namespace GHelper
|
||||
panelMatrix.Name = "panelMatrix";
|
||||
panelMatrix.Padding = new Padding(20, 20, 20, 10);
|
||||
panelMatrix.Size = new Size(827, 176);
|
||||
panelMatrix.TabIndex = 4;
|
||||
panelMatrix.TabIndex = 3;
|
||||
panelMatrix.TabStop = true;
|
||||
//
|
||||
// tableLayoutMatrix
|
||||
//
|
||||
@@ -173,7 +178,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 +220,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 +281,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);
|
||||
@@ -295,7 +300,6 @@ namespace GHelper
|
||||
sliderBattery.Size = new Size(787, 40);
|
||||
sliderBattery.Step = 5;
|
||||
sliderBattery.TabIndex = 20;
|
||||
sliderBattery.TabStop = false;
|
||||
sliderBattery.Text = "sliderBattery";
|
||||
sliderBattery.Value = 80;
|
||||
//
|
||||
@@ -350,7 +354,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 +369,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 +381,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
|
||||
//
|
||||
@@ -412,16 +411,37 @@ namespace GHelper
|
||||
buttonQuit.Name = "buttonQuit";
|
||||
buttonQuit.Secondary = true;
|
||||
buttonQuit.Size = new Size(255, 48);
|
||||
buttonQuit.TabIndex = 23;
|
||||
buttonQuit.Text = "Quit";
|
||||
buttonQuit.TabIndex = 2;
|
||||
buttonQuit.Text = "&Quit";
|
||||
buttonQuit.TextAlign = ContentAlignment.MiddleRight;
|
||||
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 = 1;
|
||||
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);
|
||||
@@ -431,6 +451,8 @@ namespace GHelper
|
||||
//
|
||||
// panelPerformance
|
||||
//
|
||||
panelPerformance.AccessibleName = "Performance";
|
||||
panelPerformance.AccessibleRole = AccessibleRole.Grouping;
|
||||
panelPerformance.AutoSize = true;
|
||||
panelPerformance.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelPerformance.Controls.Add(tablePerf);
|
||||
@@ -442,6 +464,7 @@ namespace GHelper
|
||||
panelPerformance.Padding = new Padding(20);
|
||||
panelPerformance.Size = new Size(827, 208);
|
||||
panelPerformance.TabIndex = 0;
|
||||
panelPerformance.TabStop = true;
|
||||
//
|
||||
// tablePerf
|
||||
//
|
||||
@@ -485,7 +508,7 @@ namespace GHelper
|
||||
buttonSilent.Secondary = false;
|
||||
buttonSilent.Size = new Size(188, 120);
|
||||
buttonSilent.TabIndex = 1;
|
||||
buttonSilent.Text = Properties.Strings.Silent;
|
||||
buttonSilent.Text = "&Silent";
|
||||
buttonSilent.TextImageRelation = TextImageRelation.ImageAboveText;
|
||||
buttonSilent.UseVisualStyleBackColor = false;
|
||||
//
|
||||
@@ -508,7 +531,7 @@ namespace GHelper
|
||||
buttonBalanced.Secondary = false;
|
||||
buttonBalanced.Size = new Size(188, 120);
|
||||
buttonBalanced.TabIndex = 1;
|
||||
buttonBalanced.Text = Properties.Strings.Balanced;
|
||||
buttonBalanced.Text = "&Balanced";
|
||||
buttonBalanced.TextImageRelation = TextImageRelation.ImageAboveText;
|
||||
buttonBalanced.UseVisualStyleBackColor = false;
|
||||
//
|
||||
@@ -531,7 +554,7 @@ namespace GHelper
|
||||
buttonTurbo.Secondary = false;
|
||||
buttonTurbo.Size = new Size(188, 120);
|
||||
buttonTurbo.TabIndex = 2;
|
||||
buttonTurbo.Text = Properties.Strings.Turbo;
|
||||
buttonTurbo.Text = "&Turbo";
|
||||
buttonTurbo.TextImageRelation = TextImageRelation.ImageAboveText;
|
||||
buttonTurbo.UseVisualStyleBackColor = false;
|
||||
//
|
||||
@@ -553,7 +576,7 @@ namespace GHelper
|
||||
buttonFans.Secondary = true;
|
||||
buttonFans.Size = new Size(191, 120);
|
||||
buttonFans.TabIndex = 3;
|
||||
buttonFans.Text = Properties.Strings.FansPower;
|
||||
buttonFans.Text = "&Fans + Power";
|
||||
buttonFans.TextImageRelation = TextImageRelation.ImageAboveText;
|
||||
buttonFans.UseVisualStyleBackColor = false;
|
||||
//
|
||||
@@ -583,8 +606,10 @@ namespace GHelper
|
||||
//
|
||||
// labelPerf
|
||||
//
|
||||
labelPerf.AccessibleRole = AccessibleRole.Caret;
|
||||
labelPerf.AutoSize = true;
|
||||
labelPerf.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelPerf.LiveSetting = System.Windows.Forms.Automation.AutomationLiveSetting.Polite;
|
||||
labelPerf.Location = new Point(40, 0);
|
||||
labelPerf.Margin = new Padding(8, 0, 8, 0);
|
||||
labelPerf.Name = "labelPerf";
|
||||
@@ -594,6 +619,7 @@ namespace GHelper
|
||||
//
|
||||
// labelCPUFan
|
||||
//
|
||||
labelCPUFan.AccessibleRole = AccessibleRole.TitleBar;
|
||||
labelCPUFan.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||
labelCPUFan.Cursor = Cursors.Hand;
|
||||
labelCPUFan.Location = new Point(387, 0);
|
||||
@@ -606,6 +632,8 @@ namespace GHelper
|
||||
//
|
||||
// panelGPU
|
||||
//
|
||||
panelGPU.AccessibleName = "GPU";
|
||||
panelGPU.AccessibleRole = AccessibleRole.Grouping;
|
||||
panelGPU.AutoSize = true;
|
||||
panelGPU.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelGPU.Controls.Add(labelTipGPU);
|
||||
@@ -618,6 +646,7 @@ namespace GHelper
|
||||
panelGPU.Padding = new Padding(20, 20, 20, 0);
|
||||
panelGPU.Size = new Size(827, 352);
|
||||
panelGPU.TabIndex = 1;
|
||||
panelGPU.TabStop = true;
|
||||
//
|
||||
// labelTipGPU
|
||||
//
|
||||
@@ -750,6 +779,7 @@ namespace GHelper
|
||||
//
|
||||
// buttonOptimized
|
||||
//
|
||||
buttonOptimized.AccessibleName = "Optimized GPU Mode";
|
||||
buttonOptimized.Activated = false;
|
||||
buttonOptimized.BackColor = SystemColors.ControlLightLight;
|
||||
buttonOptimized.BorderColor = Color.Transparent;
|
||||
@@ -840,6 +870,8 @@ namespace GHelper
|
||||
//
|
||||
// panelScreen
|
||||
//
|
||||
panelScreen.AccessibleName = "Screen";
|
||||
panelScreen.AccessibleRole = AccessibleRole.Grouping;
|
||||
panelScreen.AutoSize = true;
|
||||
panelScreen.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelScreen.Controls.Add(labelTipScreen);
|
||||
@@ -852,6 +884,7 @@ namespace GHelper
|
||||
panelScreen.Padding = new Padding(20, 20, 20, 0);
|
||||
panelScreen.Size = new Size(827, 176);
|
||||
panelScreen.TabIndex = 2;
|
||||
panelScreen.TabStop = true;
|
||||
//
|
||||
// labelTipScreen
|
||||
//
|
||||
@@ -1013,6 +1046,8 @@ namespace GHelper
|
||||
//
|
||||
// panelKeyboard
|
||||
//
|
||||
panelKeyboard.AccessibleName = "Keyboard";
|
||||
panelKeyboard.AccessibleRole = AccessibleRole.Grouping;
|
||||
panelKeyboard.AutoSize = true;
|
||||
panelKeyboard.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelKeyboard.Controls.Add(tableLayoutKeyboard);
|
||||
@@ -1022,8 +1057,9 @@ namespace GHelper
|
||||
panelKeyboard.Margin = new Padding(0);
|
||||
panelKeyboard.Name = "panelKeyboard";
|
||||
panelKeyboard.Padding = new Padding(20);
|
||||
panelKeyboard.Size = new Size(827, 140);
|
||||
panelKeyboard.TabIndex = 3;
|
||||
panelKeyboard.Size = new Size(827, 144);
|
||||
panelKeyboard.TabIndex = 4;
|
||||
panelKeyboard.TabStop = true;
|
||||
//
|
||||
// tableLayoutKeyboard
|
||||
//
|
||||
@@ -1042,7 +1078,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,13 +1093,13 @@ 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);
|
||||
buttonKeyboard.TabIndex = 37;
|
||||
buttonKeyboard.Text = Properties.Strings.Extra;
|
||||
buttonKeyboard.Text = "&Extra";
|
||||
buttonKeyboard.TextImageRelation = TextImageRelation.ImageBeforeText;
|
||||
buttonKeyboard.UseVisualStyleBackColor = false;
|
||||
//
|
||||
@@ -1074,8 +1110,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 +1147,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);
|
||||
@@ -1138,15 +1174,37 @@ namespace GHelper
|
||||
//
|
||||
// panelKeyboardTitle
|
||||
//
|
||||
panelKeyboardTitle.Controls.Add(buttonFnLock);
|
||||
panelKeyboardTitle.Controls.Add(pictureKeyboard);
|
||||
panelKeyboardTitle.Controls.Add(labelKeyboard);
|
||||
panelKeyboardTitle.Dock = DockStyle.Top;
|
||||
panelKeyboardTitle.Location = new Point(20, 20);
|
||||
panelKeyboardTitle.Margin = new Padding(4);
|
||||
panelKeyboardTitle.Margin = new Padding(0);
|
||||
panelKeyboardTitle.Name = "panelKeyboardTitle";
|
||||
panelKeyboardTitle.Padding = new Padding(0, 2, 4, 2);
|
||||
panelKeyboardTitle.Size = new Size(787, 40);
|
||||
panelKeyboardTitle.TabIndex = 40;
|
||||
//
|
||||
// buttonFnLock
|
||||
//
|
||||
buttonFnLock.Activated = false;
|
||||
buttonFnLock.BackColor = SystemColors.ControlLight;
|
||||
buttonFnLock.BorderColor = Color.Transparent;
|
||||
buttonFnLock.BorderRadius = 2;
|
||||
buttonFnLock.Dock = DockStyle.Right;
|
||||
buttonFnLock.FlatAppearance.BorderSize = 0;
|
||||
buttonFnLock.FlatStyle = FlatStyle.Flat;
|
||||
buttonFnLock.Font = new Font("Segoe UI", 7.125F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
buttonFnLock.ForeColor = SystemColors.ControlDark;
|
||||
buttonFnLock.Location = new Point(676, 2);
|
||||
buttonFnLock.Margin = new Padding(0);
|
||||
buttonFnLock.Name = "buttonFnLock";
|
||||
buttonFnLock.Secondary = true;
|
||||
buttonFnLock.Size = new Size(107, 36);
|
||||
buttonFnLock.TabIndex = 4;
|
||||
buttonFnLock.Text = "FN-Lock";
|
||||
buttonFnLock.UseVisualStyleBackColor = false;
|
||||
//
|
||||
// pictureKeyboard
|
||||
//
|
||||
pictureKeyboard.BackgroundImage = Properties.Resources.icons8_keyboard_32__1_;
|
||||
@@ -1162,38 +1220,36 @@ namespace GHelper
|
||||
//
|
||||
labelKeyboard.AutoSize = true;
|
||||
labelKeyboard.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelKeyboard.Location = new Point(44, 0);
|
||||
labelKeyboard.Location = new Point(40, -2);
|
||||
labelKeyboard.Margin = new Padding(8, 0, 8, 0);
|
||||
labelKeyboard.Name = "labelKeyboard";
|
||||
labelKeyboard.Size = new Size(210, 32);
|
||||
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,12 +1257,13 @@ 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);
|
||||
panelPeripherals.Size = new Size(827, 198);
|
||||
panelPeripherals.TabIndex = 4;
|
||||
panelPeripherals.Visible = false;
|
||||
//
|
||||
// tableLayoutPeripherals
|
||||
//
|
||||
@@ -1481,7 +1538,6 @@ namespace GHelper
|
||||
private Label labelVersion;
|
||||
private RButton buttonStopGPU;
|
||||
private TableLayoutPanel tableButtons;
|
||||
private RButton buttonUpdates;
|
||||
private Panel panelPeripherals;
|
||||
private TableLayoutPanel tableLayoutPeripherals;
|
||||
private Panel panelPeripheralsTile;
|
||||
@@ -1491,5 +1547,8 @@ namespace GHelper
|
||||
private RButton buttonPeripheral3;
|
||||
private RButton buttonPeripheral1;
|
||||
private RButton buttonKeyboard;
|
||||
private RButton buttonUpdates;
|
||||
private Label labelCharge;
|
||||
private RButton buttonFnLock;
|
||||
}
|
||||
}
|
||||
241
app/Settings.cs
241
app/Settings.cs
@@ -25,10 +25,13 @@ namespace GHelper
|
||||
ScreenControl screenControl = new ScreenControl();
|
||||
AutoUpdateControl updateControl;
|
||||
|
||||
public AniMatrixControl matrix;
|
||||
AsusMouseSettings? mouseSettings;
|
||||
|
||||
public AniMatrixControl matrixControl;
|
||||
|
||||
public static System.Timers.Timer sensorTimer = default!;
|
||||
|
||||
public Matrix? matrix;
|
||||
public Fans? fans;
|
||||
public Extra? keyb;
|
||||
public Updates? updates;
|
||||
@@ -47,7 +50,7 @@ namespace GHelper
|
||||
|
||||
gpuControl = new GPUModeControl(this);
|
||||
updateControl = new AutoUpdateControl(this);
|
||||
matrix = new AniMatrixControl(this);
|
||||
matrixControl = new AniMatrixControl(this);
|
||||
|
||||
buttonSilent.Text = Properties.Strings.Silent;
|
||||
buttonBalanced.Text = Properties.Strings.Balanced;
|
||||
@@ -178,24 +181,31 @@ 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;
|
||||
buttonPeripheral3.Click += ButtonPeripheral_Click;
|
||||
|
||||
buttonPeripheral1.MouseEnter += ButtonPeripheral_MouseEnter;
|
||||
buttonPeripheral2.MouseEnter += ButtonPeripheral_MouseEnter;
|
||||
buttonPeripheral3.MouseEnter += ButtonPeripheral_MouseEnter;
|
||||
|
||||
Text = "G-Helper " + (ProcessHelper.IsUserAdministrator() ? "—" : "-") + " " + AppConfig.GetModelShort();
|
||||
TopMost = AppConfig.Is("topmost");
|
||||
|
||||
//This will auto position the window again when it resizes. Might mess with position if people drag the window somewhere else.
|
||||
this.Resize += SettingsForm_Resize;
|
||||
SetContextMenu();
|
||||
|
||||
VisualiseFnLock();
|
||||
buttonFnLock.Click += ButtonFnLock_Click;
|
||||
|
||||
panelPerformance.Focus();
|
||||
}
|
||||
|
||||
|
||||
private void SettingsForm_Resize(object? sender, EventArgs e)
|
||||
{
|
||||
Left = Screen.FromControl(this).WorkingArea.Width - 10 - Width;
|
||||
@@ -225,7 +235,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) + "%";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -235,11 +245,18 @@ namespace GHelper
|
||||
if (this.Visible)
|
||||
{
|
||||
screenControl.InitScreen();
|
||||
gpuControl.InitXGM();
|
||||
VisualizeXGM();
|
||||
|
||||
Task.Run((Action)RefreshPeripheralsBattery);
|
||||
updateControl.CheckForUpdates();
|
||||
}
|
||||
}
|
||||
|
||||
private void RefreshPeripheralsBattery()
|
||||
{
|
||||
PeripheralsProvider.RefreshBatteryForAllDevices(true);
|
||||
}
|
||||
|
||||
private void ButtonUpdates_Click(object? sender, EventArgs e)
|
||||
{
|
||||
if (updates == null || updates.Text == "")
|
||||
@@ -253,6 +270,12 @@ namespace GHelper
|
||||
}
|
||||
}
|
||||
|
||||
public void VisualiseMatrix(string image)
|
||||
{
|
||||
if (matrix == null || matrix.Text == "") return;
|
||||
matrix.VisualiseMatrix(image);
|
||||
}
|
||||
|
||||
protected override void WndProc(ref Message m)
|
||||
{
|
||||
|
||||
@@ -363,7 +386,7 @@ namespace GHelper
|
||||
//contextMenuStrip.ShowCheckMargin = true;
|
||||
contextMenuStrip.RenderMode = ToolStripRenderMode.System;
|
||||
|
||||
if (CheckSystemDarkModeStatus())
|
||||
if (darkTheme)
|
||||
{
|
||||
contextMenuStrip.BackColor = this.BackColor;
|
||||
contextMenuStrip.ForeColor = this.ForeColor;
|
||||
@@ -490,14 +513,29 @@ namespace GHelper
|
||||
private void CheckMatrix_CheckedChanged(object? sender, EventArgs e)
|
||||
{
|
||||
AppConfig.Set("matrix_auto", checkMatrix.Checked ? 1 : 0);
|
||||
matrix.SetMatrix();
|
||||
matrixControl.SetMatrix();
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void ButtonMatrix_Click(object? sender, EventArgs e)
|
||||
{
|
||||
matrix.OpenMatrixPicture();
|
||||
|
||||
if (matrix == null || matrix.Text == "")
|
||||
{
|
||||
matrix = new Matrix();
|
||||
}
|
||||
|
||||
if (matrix.Visible)
|
||||
{
|
||||
matrix.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
matrix.FormPosition();
|
||||
matrix.Show();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void SetMatrixRunning(int mode)
|
||||
@@ -511,20 +549,20 @@ namespace GHelper
|
||||
private void ComboMatrixRunning_SelectedValueChanged(object? sender, EventArgs e)
|
||||
{
|
||||
AppConfig.Set("matrix_running", comboMatrixRunning.SelectedIndex);
|
||||
matrix.SetMatrix();
|
||||
matrixControl.SetMatrix();
|
||||
}
|
||||
|
||||
|
||||
private void ComboMatrix_SelectedValueChanged(object? sender, EventArgs e)
|
||||
{
|
||||
AppConfig.Set("matrix_brightness", comboMatrix.SelectedIndex);
|
||||
matrix.SetMatrix();
|
||||
matrixControl.SetMatrix();
|
||||
}
|
||||
|
||||
|
||||
private void LabelCPUFan_Click(object? sender, EventArgs e)
|
||||
{
|
||||
AppConfig.Set("fan_rpm", (AppConfig.Get("fan_rpm") == 1) ? 0 : 1);
|
||||
HardwareControl.fanRpm = !HardwareControl.fanRpm;
|
||||
RefreshSensors(true);
|
||||
}
|
||||
|
||||
@@ -538,8 +576,7 @@ namespace GHelper
|
||||
if (colorDlg.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
AppConfig.Set("aura_color2", colorDlg.Color.ToArgb());
|
||||
AsusUSB.ApplyAura();
|
||||
VisualiseAura();
|
||||
SetAura();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -569,6 +606,14 @@ namespace GHelper
|
||||
});
|
||||
}
|
||||
|
||||
public void GPUInit()
|
||||
{
|
||||
Invoke(delegate
|
||||
{
|
||||
if (fans != null && fans.Text != "") fans.InitGPU();
|
||||
});
|
||||
}
|
||||
|
||||
public void FansToggle(int index = 0)
|
||||
{
|
||||
if (fans == null || fans.Text == "")
|
||||
@@ -604,8 +649,7 @@ namespace GHelper
|
||||
if (colorDlg.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
AppConfig.Set("aura_color", colorDlg.Color.ToArgb());
|
||||
AsusUSB.ApplyAura();
|
||||
VisualiseAura();
|
||||
SetAura();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -624,31 +668,43 @@ namespace GHelper
|
||||
comboKeyboard.SelectedValueChanged += ComboKeyboard_SelectedValueChanged;
|
||||
|
||||
|
||||
if (AsusUSB.HasColor())
|
||||
if (AppConfig.IsSingleColor())
|
||||
{
|
||||
panelColor.Visible = false;
|
||||
}
|
||||
|
||||
if (AppConfig.ContainsModel("GA401I"))
|
||||
if (AppConfig.NoAura())
|
||||
{
|
||||
panelKeyboard.Visible = false;
|
||||
comboKeyboard.Visible = false;
|
||||
}
|
||||
|
||||
VisualiseAura();
|
||||
|
||||
}
|
||||
|
||||
public void SetAura()
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
AsusUSB.ApplyAura();
|
||||
VisualiseAura();
|
||||
});
|
||||
}
|
||||
|
||||
public void VisualiseAura()
|
||||
{
|
||||
pictureColor.BackColor = AsusUSB.Color1;
|
||||
pictureColor2.BackColor = AsusUSB.Color2;
|
||||
pictureColor2.Visible = AsusUSB.HasSecondColor();
|
||||
Invoke(delegate
|
||||
{
|
||||
pictureColor.BackColor = AsusUSB.Color1;
|
||||
pictureColor2.BackColor = AsusUSB.Color2;
|
||||
pictureColor2.Visible = AsusUSB.HasSecondColor();
|
||||
});
|
||||
}
|
||||
|
||||
public void InitMatrix()
|
||||
{
|
||||
|
||||
if (!matrix.IsValid)
|
||||
if (!matrixControl.IsValid)
|
||||
{
|
||||
panelMatrix.Visible = false;
|
||||
return;
|
||||
@@ -669,13 +725,14 @@ namespace GHelper
|
||||
comboKeyboard.SelectedIndex += 1;
|
||||
else
|
||||
comboKeyboard.SelectedIndex = 0;
|
||||
|
||||
Program.toast.RunToast(comboKeyboard.GetItemText(comboKeyboard.SelectedItem), ToastIcon.BacklightUp);
|
||||
}
|
||||
|
||||
private void ComboKeyboard_SelectedValueChanged(object? sender, EventArgs e)
|
||||
{
|
||||
AppConfig.Set("aura_mode", (int)comboKeyboard.SelectedValue);
|
||||
AsusUSB.ApplyAura();
|
||||
VisualiseAura();
|
||||
SetAura();
|
||||
}
|
||||
|
||||
|
||||
@@ -751,7 +808,7 @@ namespace GHelper
|
||||
|
||||
private void ButtonQuit_Click(object? sender, EventArgs e)
|
||||
{
|
||||
matrix.Dispose();
|
||||
matrixControl.Dispose();
|
||||
Close();
|
||||
Program.trayIcon.Visible = false;
|
||||
Application.Exit();
|
||||
@@ -762,6 +819,7 @@ namespace GHelper
|
||||
this.Hide();
|
||||
if (fans != null && fans.Text != "") fans.Close();
|
||||
if (keyb != null && keyb.Text != "") keyb.Close();
|
||||
if (updates != null && updates.Text != "") updates.Close();
|
||||
}
|
||||
|
||||
|
||||
@@ -811,25 +869,31 @@ namespace GHelper
|
||||
string cpuTemp = "";
|
||||
string gpuTemp = "";
|
||||
string battery = "";
|
||||
string charge = "";
|
||||
|
||||
HardwareControl.ReadSensors();
|
||||
Task.Run((Action)PeripheralsProvider.RefreshBatteryForAllDevices);
|
||||
|
||||
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)
|
||||
battery = Properties.Strings.Charging + ": " + Math.Round((decimal)HardwareControl.batteryRate, 1).ToString() + "W";
|
||||
|
||||
|
||||
|
||||
if (HardwareControl.gpuTemp > 0)
|
||||
{
|
||||
gpuTemp = $": {HardwareControl.gpuTemp}°C";
|
||||
}
|
||||
|
||||
PeripheralsProvider.RefreshBatteryForAllDevices();
|
||||
string trayTip = "CPU" + cpuTemp + " " + HardwareControl.cpuFan;
|
||||
if (gpuTemp.Length > 0) trayTip += "\nGPU" + gpuTemp + " " + HardwareControl.gpuFan;
|
||||
if (battery.Length > 0) trayTip += "\n" + battery;
|
||||
|
||||
Program.settingsForm.BeginInvoke(delegate
|
||||
{
|
||||
@@ -838,13 +902,12 @@ namespace GHelper
|
||||
if (HardwareControl.midFan is not null)
|
||||
labelMidFan.Text = "Mid " + HardwareControl.midFan;
|
||||
|
||||
if (!batteryMouseOver) labelBattery.Text = battery;
|
||||
VisualizePeripherals();
|
||||
labelBattery.Text = battery;
|
||||
if (!batteryMouseOver) labelCharge.Text = charge;
|
||||
|
||||
//panelPerformance.AccessibleName = labelPerf.Text + " " + trayTip;
|
||||
});
|
||||
|
||||
string trayTip = "CPU" + cpuTemp + " " + HardwareControl.cpuFan;
|
||||
if (gpuTemp.Length > 0) trayTip += "\nGPU" + gpuTemp + " " + HardwareControl.gpuFan;
|
||||
if (battery.Length > 0) trayTip += "\n" + battery;
|
||||
|
||||
Program.trayIcon.Text = trayTip;
|
||||
|
||||
@@ -902,6 +965,7 @@ namespace GHelper
|
||||
Invoke(delegate
|
||||
{
|
||||
labelPerf.Text = modeText;
|
||||
panelPerformance.AccessibleName = labelPerf.Text; // + ". " + Program.trayIcon.Text;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -920,20 +984,29 @@ 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();
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void VisualizeXGM(bool connected, bool activated)
|
||||
public void VisualizeXGM(int GPUMode = -1)
|
||||
{
|
||||
|
||||
bool connected = Program.acpi.IsXGConnected();
|
||||
buttonXGM.Enabled = buttonXGM.Visible = connected;
|
||||
|
||||
if (!connected) return;
|
||||
|
||||
buttonXGM.Activated = activated;
|
||||
if (GPUMode != -1)
|
||||
ButtonEnabled(buttonXGM, AppConfig.IsNoGPUModes() || GPUMode != AsusACPI.GPUModeEco);
|
||||
|
||||
if (activated)
|
||||
|
||||
int activated = Program.acpi.DeviceGet(AsusACPI.GPUXG);
|
||||
Logger.WriteLine("XGM Activated flag: " + activated);
|
||||
|
||||
buttonXGM.Activated = activated == 1;
|
||||
|
||||
if (activated == 1)
|
||||
{
|
||||
ButtonEnabled(buttonOptimized, false);
|
||||
ButtonEnabled(buttonEco, false);
|
||||
@@ -959,7 +1032,7 @@ namespace GHelper
|
||||
menuUltimate.Visible = false;
|
||||
}
|
||||
|
||||
public void HideGPUModes()
|
||||
public void HideGPUModes(bool gpuExists)
|
||||
{
|
||||
isGpuSection = false;
|
||||
|
||||
@@ -971,7 +1044,8 @@ namespace GHelper
|
||||
buttonStopGPU.Visible = true;
|
||||
|
||||
SetContextMenu();
|
||||
if (HardwareControl.FormatFan(Program.acpi.DeviceGet(AsusACPI.GPU_Fan)) is null) panelGPU.Visible = false;
|
||||
|
||||
panelGPU.Visible = gpuExists;
|
||||
|
||||
}
|
||||
|
||||
@@ -1017,7 +1091,6 @@ namespace GHelper
|
||||
buttonOptimized.Activated = GPUAuto;
|
||||
labelGPU.Text = Properties.Strings.GPUMode + ": " + Properties.Strings.GPUModeEco;
|
||||
Program.trayIcon.Icon = Properties.Resources.eco;
|
||||
ButtonEnabled(buttonXGM, false);
|
||||
break;
|
||||
case AsusACPI.GPUModeUltimate:
|
||||
buttonUltimate.Activated = true;
|
||||
@@ -1030,10 +1103,12 @@ namespace GHelper
|
||||
buttonOptimized.Activated = GPUAuto;
|
||||
labelGPU.Text = Properties.Strings.GPUMode + ": " + Properties.Strings.GPUModeStandard;
|
||||
Program.trayIcon.Icon = Properties.Resources.standard;
|
||||
ButtonEnabled(buttonXGM, true);
|
||||
break;
|
||||
}
|
||||
|
||||
VisualizeXGM(GPUMode);
|
||||
|
||||
|
||||
if (isGpuSection)
|
||||
{
|
||||
menuEco.Checked = buttonEco.Activated;
|
||||
@@ -1096,13 +1171,11 @@ namespace GHelper
|
||||
{
|
||||
b.Text = m.GetDisplayName() + "\n" + m.Battery + "%"
|
||||
+ (m.Charging ? "(" + Properties.Strings.Charging + ")" : "");
|
||||
b.Enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
//Mouse is either not connected or in standby
|
||||
b.Text = m.GetDisplayName() + "\n(" + Properties.Strings.NotConnected + ")";
|
||||
b.Enabled = false;
|
||||
}
|
||||
|
||||
switch (m.DeviceType())
|
||||
@@ -1127,8 +1200,34 @@ namespace GHelper
|
||||
panelPeripherals.Visible = true;
|
||||
}
|
||||
|
||||
private void ButtonPeripheral_MouseEnter(object? sender, EventArgs e)
|
||||
{
|
||||
int index = 0;
|
||||
if (sender == buttonPeripheral2) index = 1;
|
||||
if (sender == buttonPeripheral3) index = 2;
|
||||
IPeripheral iph = PeripheralsProvider.AllPeripherals().ElementAt(index);
|
||||
|
||||
|
||||
if (iph is null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!iph.IsDeviceReady)
|
||||
{
|
||||
//Refresh battery on hover if the device is marked as "Not Ready"
|
||||
iph.ReadBattery();
|
||||
}
|
||||
}
|
||||
|
||||
private void ButtonPeripheral_Click(object? sender, EventArgs e)
|
||||
{
|
||||
if (mouseSettings is not null)
|
||||
{
|
||||
mouseSettings.Close();
|
||||
return;
|
||||
}
|
||||
|
||||
int index = 0;
|
||||
if (sender == buttonPeripheral2) index = 1;
|
||||
if (sender == buttonPeripheral3) index = 2;
|
||||
@@ -1144,22 +1243,58 @@ namespace GHelper
|
||||
if (iph.DeviceType() == PeripheralType.Mouse)
|
||||
{
|
||||
AsusMouse? am = iph as AsusMouse;
|
||||
if (am is null)
|
||||
if (am is null || !am.IsDeviceReady)
|
||||
{
|
||||
//Should not happen if all device classes are implemented correctly. But better safe than sorry.
|
||||
return;
|
||||
}
|
||||
AsusMouseSettings s = new AsusMouseSettings(am);
|
||||
if (!s.IsDisposed)
|
||||
mouseSettings = new AsusMouseSettings(am);
|
||||
mouseSettings.TopMost = true;
|
||||
mouseSettings.FormClosed += MouseSettings_FormClosed;
|
||||
mouseSettings.Disposed += MouseSettings_Disposed;
|
||||
if (!mouseSettings.IsDisposed)
|
||||
{
|
||||
s.Show();
|
||||
mouseSettings.Show();
|
||||
}
|
||||
else
|
||||
{
|
||||
mouseSettings = null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void MouseSettings_Disposed(object? sender, EventArgs e)
|
||||
{
|
||||
mouseSettings = null;
|
||||
}
|
||||
|
||||
private void MouseSettings_FormClosed(object? sender, FormClosedEventArgs e)
|
||||
{
|
||||
mouseSettings = null;
|
||||
}
|
||||
|
||||
public void VisualiseFnLock()
|
||||
{
|
||||
|
||||
if (AppConfig.Is("fn_lock"))
|
||||
{
|
||||
buttonFnLock.BackColor = colorStandard;
|
||||
buttonFnLock.ForeColor = SystemColors.ControlLightLight;
|
||||
}
|
||||
else
|
||||
{
|
||||
buttonFnLock.BackColor = buttonSecond;
|
||||
buttonFnLock.ForeColor = SystemColors.ControlDark;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void ButtonFnLock_Click(object? sender, EventArgs e)
|
||||
{
|
||||
InputDispatcher.ToggleFnLock();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -62,6 +62,23 @@ namespace GHelper.UI
|
||||
|
||||
private static bool IsDarkTheme()
|
||||
{
|
||||
string? uiMode = AppConfig.GetString("ui_mode");
|
||||
|
||||
if (uiMode is not null && uiMode.ToLower() == "dark")
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (uiMode is not null && uiMode.ToLower() == "light")
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (uiMode is not null && uiMode.ToLower() == "windows")
|
||||
{
|
||||
return CheckSystemDarkModeStatus();
|
||||
}
|
||||
|
||||
using var key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize");
|
||||
var registryValueObject = key?.GetValue("AppsUseLightTheme");
|
||||
|
||||
@@ -71,7 +88,7 @@ namespace GHelper.UI
|
||||
|
||||
public bool InitTheme(bool setDPI = false)
|
||||
{
|
||||
bool newDarkTheme = CheckSystemDarkModeStatus();
|
||||
bool newDarkTheme = IsDarkTheme();
|
||||
bool changed = darkTheme != newDarkTheme;
|
||||
darkTheme = newDarkTheme;
|
||||
|
||||
|
||||
122
app/Updates.cs
122
app/Updates.cs
@@ -7,15 +7,6 @@ using System.Text.Json;
|
||||
namespace GHelper
|
||||
{
|
||||
|
||||
struct DriverDownload
|
||||
{
|
||||
public string categoryName;
|
||||
public string title;
|
||||
public string version;
|
||||
public string downloadUrl;
|
||||
public JsonElement hardwares;
|
||||
}
|
||||
|
||||
public partial class Updates : RForm
|
||||
{
|
||||
//static int rowCount = 0;
|
||||
@@ -24,7 +15,14 @@ namespace GHelper
|
||||
|
||||
static int updatesCount = 0;
|
||||
private static long lastUpdate;
|
||||
|
||||
public struct DriverDownload
|
||||
{
|
||||
public string categoryName;
|
||||
public string title;
|
||||
public string version;
|
||||
public string downloadUrl;
|
||||
public JsonElement hardwares;
|
||||
}
|
||||
private void LoadUpdates(bool force = false)
|
||||
{
|
||||
|
||||
@@ -140,7 +138,63 @@ namespace GHelper
|
||||
}
|
||||
}
|
||||
|
||||
public async void DriversAsync(string url, int type, TableLayoutPanel table)
|
||||
public void VisualiseDriver(DriverDownload driver, TableLayoutPanel table)
|
||||
{
|
||||
Invoke(delegate
|
||||
{
|
||||
string versionText = driver.version.Replace("latest version at the ", "");
|
||||
Label versionLabel = new Label { Text = versionText, Anchor = AnchorStyles.Left, AutoSize = true };
|
||||
versionLabel.Cursor = Cursors.Hand;
|
||||
versionLabel.Font = new Font(versionLabel.Font, FontStyle.Underline);
|
||||
versionLabel.ForeColor = colorEco;
|
||||
versionLabel.Padding = new Padding(5, 5, 5, 5);
|
||||
versionLabel.Click += delegate
|
||||
{
|
||||
Process.Start(new ProcessStartInfo(driver.downloadUrl) { UseShellExecute = true });
|
||||
};
|
||||
|
||||
table.RowStyles.Add(new RowStyle(SizeType.AutoSize));
|
||||
table.Controls.Add(new Label { Text = driver.categoryName, Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Padding = new Padding(5, 5, 5, 5) }, 0, table.RowCount);
|
||||
table.Controls.Add(new Label { Text = driver.title, Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Padding = new Padding(5, 5, 5, 5) }, 1, table.RowCount);
|
||||
table.Controls.Add(versionLabel, 2, table.RowCount);
|
||||
table.RowCount++;
|
||||
});
|
||||
}
|
||||
|
||||
public void ShowTable(TableLayoutPanel table)
|
||||
{
|
||||
Invoke(delegate
|
||||
{
|
||||
table.Visible = true;
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
||||
});
|
||||
}
|
||||
|
||||
public void VisualiseNewDriver(int position, TableLayoutPanel table)
|
||||
{
|
||||
var label = table.GetControlFromPosition(2, position) as Label;
|
||||
if (label != null)
|
||||
{
|
||||
Invoke(delegate
|
||||
{
|
||||
label.Font = new Font(label.Font, FontStyle.Underline | FontStyle.Bold);
|
||||
label.ForeColor = colorTurbo;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public void VisualiseNewCount(int updatesCount, TableLayoutPanel table)
|
||||
{
|
||||
Invoke(delegate
|
||||
{
|
||||
labelUpdates.Text = $"{Properties.Strings.NewUpdates}: {updatesCount}";
|
||||
labelUpdates.ForeColor = colorTurbo;
|
||||
labelUpdates.Font = new Font(labelUpdates.Font, FontStyle.Bold);
|
||||
});
|
||||
}
|
||||
|
||||
public async void DriversAsync(string url, int type, TableLayoutPanel table)
|
||||
{
|
||||
|
||||
try
|
||||
@@ -185,39 +239,14 @@ namespace GHelper
|
||||
driver.hardwares = file.GetProperty("HardwareInfoList");
|
||||
drivers.Add(driver);
|
||||
|
||||
|
||||
Invoke(delegate
|
||||
{
|
||||
string versionText = driver.version.Replace("latest version at the ", "");
|
||||
Label versionLabel = new Label { Text = versionText, Anchor = AnchorStyles.Left, AutoSize = true };
|
||||
versionLabel.Cursor = Cursors.Hand;
|
||||
versionLabel.Font = new Font(versionLabel.Font, FontStyle.Underline);
|
||||
versionLabel.ForeColor = colorEco;
|
||||
versionLabel.Padding = new Padding(5, 5, 5, 5);
|
||||
versionLabel.Click += delegate
|
||||
{
|
||||
Process.Start(new ProcessStartInfo(driver.downloadUrl) { UseShellExecute = true });
|
||||
};
|
||||
|
||||
table.RowStyles.Add(new RowStyle(SizeType.AutoSize));
|
||||
table.Controls.Add(new Label { Text = driver.categoryName, Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Padding = new Padding(5, 5, 5, 5) }, 0, table.RowCount);
|
||||
table.Controls.Add(new Label { Text = driver.title, Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Padding = new Padding(5, 5, 5, 5) }, 1, table.RowCount);
|
||||
table.Controls.Add(versionLabel, 2, table.RowCount);
|
||||
table.RowCount++;
|
||||
});
|
||||
VisualiseDriver(driver, table);
|
||||
}
|
||||
|
||||
oldTitle = title;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Invoke(delegate
|
||||
{
|
||||
table.Visible = true;
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
||||
});
|
||||
ShowTable(table);
|
||||
|
||||
|
||||
Dictionary<string, string> devices = new();
|
||||
@@ -246,20 +275,9 @@ namespace GHelper
|
||||
|
||||
if (newer > 0)
|
||||
{
|
||||
var label = table.GetControlFromPosition(2, count) as Label;
|
||||
if (label != null)
|
||||
{
|
||||
Invoke(delegate
|
||||
{
|
||||
updatesCount++;
|
||||
label.Font = new Font(label.Font, FontStyle.Underline | FontStyle.Bold);
|
||||
label.ForeColor = colorTurbo;
|
||||
|
||||
labelUpdates.Text = $"{Properties.Strings.NewUpdates}: {updatesCount}";
|
||||
labelUpdates.ForeColor = colorTurbo;
|
||||
labelUpdates.Font = new Font(label.Font, FontStyle.Bold);
|
||||
});
|
||||
}
|
||||
updatesCount++;
|
||||
VisualiseNewDriver(count, table);
|
||||
VisualiseNewCount(updatesCount, table);
|
||||
}
|
||||
|
||||
count++;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"sdk": {
|
||||
"version": "7.0.306"
|
||||
"version": "7.0.400"
|
||||
}
|
||||
}
|
||||
286
docs/README.md
286
docs/README.md
@@ -1,147 +1,165 @@
|
||||
# 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/)
|
||||
[](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>
|
||||
|
||||
Language: English | [中文](https://github.com/seerge/g-helper/blob/main/docs/README.zh-CN.md)
|
||||
Small and lightweight Armoury Crate alternative for Asus laptops offering almost same functionality without extra bloat and unnecessary services. Works on all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, Flow Z13, TUF Series, Strix / Scar Series, ProArt, VivoBook and many more!
|
||||
|
||||
## Control tool for Asus laptops
|
||||
# [:floppy_disk:Download](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
|
||||
|
||||
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 :)
|
||||
- Don't forget to [**Check Requirements**](#requirements-mandatory) and [**Read FAQ**](#question-faq)
|
||||
- If you like this app, please give it a star :star: and spread the word about it!
|
||||
|
||||
## :gift: Main advantages
|
||||
|
||||
1. Seamless and automatic GPU switching (without asking you to close all apps, etc)
|
||||
2. All performance modes can be fully customized (with fan curves and PPTs)
|
||||
3. Very lightweight and consumes almost no resources, doesn't install any services. Just a single exe to run
|
||||
4. Simple and clean native UI with easy access to all settings
|
||||
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._
|
||||
#### 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
|
||||
2. All performance modes can be fully customized with power limits and fan curves
|
||||
3. Lightweight. Doesn't install anything in your system. Just a single exe to run
|
||||
4. Simple and clean native UI with easy access to all settings
|
||||
5. FN-Lock and custom hotkeys
|
||||
|
||||

|
||||
|
||||
### :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
|
||||
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)
|
||||
7. All basic and custom Keyboard hotkeys (M-keys, FN+X keys)
|
||||
8. Monitor CPU / GPU temperature, fan speeds and battery discharge rate
|
||||
1. Performance modes: Silent - Balanced - Turbo (built-in, with default fan curves)
|
||||
2. GPU modes: Eco - Standard - Ultimate - Optimized
|
||||
3. Screen refresh rate control with display overdrive (OD)
|
||||
4. Custom fan curve editor, power limits and turbo boost selection for every performance mode
|
||||
5. Anime matrix control including animated GIFs, clock and Audio visualizer
|
||||
6. Backlight animation modes and colors
|
||||
7. Custom hotkeys (M-keys, FN+X keys)
|
||||
8. Monitor CPU / GPU temperature, fan speeds and battery status
|
||||
9. Battery charge limit to preserve battery health
|
||||
10. NVidia GPU overclocking
|
||||
11. XG Mobile Control
|
||||
12. AMD CPU Undervolting
|
||||
|
||||

|
||||
13. BIOS and Driver Updates
|
||||
14. Asus Mice settings
|
||||
15. Mini-led multi-zone switch
|
||||
|
||||
### :gear: Automatic switching when on battery or plugged in
|
||||
- Performance modes (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
|
||||
- Performance Mode switching when on battery or plugged in
|
||||
- Optimized GPU mode - disables dGPU on battery and enables when plugged in
|
||||
- Auto Screen refresh rate (60Hz on battery and max Hz when plugged)
|
||||
- Keyboard backlight timeout on battery or when plugged in
|
||||
|
||||
To keep auto switching and hotkeys working the app needs to stay running in the tray. It doesn't consume any resources.
|
||||
_To keep auto switching and hotkeys working the app needs to stay running in the tray. It doesn't consume any resources._
|
||||
|
||||
### :rocket: Performance Modes
|
||||
|
||||
Modes are **same** as in Armoury Crate as they are stored in bios including default fan curves
|
||||
<img align="right" width="300" src="https://github.com/seerge/g-helper/assets/5920850/3e119674-db8d-486b-aa65-2bf9b61f9aa6">
|
||||
|
||||
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
|
||||
All Modes are **baked in BIOS** along with default fan curves and power limits and they are the **same** as in the Armoury Crate.
|
||||
|
||||
_PPTs are shown for G14 2022, for other models PPTs will be different as they are set in bios._
|
||||
Each BIOS mode is paired with matching Windows Power Mode. You can adjust this setting under ``Fans + Power``
|
||||
|
||||
1. **Silent** in BIOS + **Best power efficiency** power mode
|
||||
2. **Balanced** (Performance in AC) in BIOS + **Balanced** power mode
|
||||
3. **Turbo** in BIOS + **Best performance** power mode
|
||||
|
||||
|
||||
### :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 in (Standard)
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||
|
||||
## :question: FAQ
|
||||
|
||||
#### How do I stop the Armory Crate install popup appearing every time I press the M4 / Rog key?
|
||||
Stop ``ArmouryCrateControlInterface`` service under windows Services app or you can stop all asus services all together from ``Extra`` -> ``Stop services``
|
||||
#### How do I stop the Armoury Crate install popup appearing every time I press the M4 / Rog key?
|
||||
Stop ``ArmouryCrateControlInterface`` service under windows Services app or you can stop all asus services from ``Extra`` -> ``Stop services``
|
||||
|
||||
#### Why is Ultimate GPU mode not available on my laptop?
|
||||
Ultimate mode is supported (by hardware) only on 2022+ models
|
||||
#### 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 the Asus Services section (under Extra).
|
||||
Please note: For some devices not every charge limit % may be working. Try to set standard **80%** to be sure.
|
||||
|
||||
#### I don't see GPU modes section
|
||||
Some older models (for example G14 2020) don't support disabling GPU on hardware level, therefore GPU section makes no sense for them and will be hidden
|
||||
|
||||
#### Should I apply custom power limits (PPT) and fan profiles?
|
||||
You don't have to, it's purely optional. From my experience built in (in bios) performance modes work well. Limit your power or apply custom fan curves only if you have issues. As soon as you click Apply in the fan + power section bios will be considering the fan profile as "custom"! (no matter if you modified it or not)
|
||||
#### Why is Ultimate GPU mode not available on my laptop?
|
||||
Ultimate mode is supported (by hardware) only on 2022+ models
|
||||
|
||||
#### Should I apply custom power limits (PPT) and fan curves?
|
||||
You don't have to, it's purely optional. From my experience built in (in BIOS) performance modes work well. Limit your power or apply custom fan curves only if you have issues. As soon as you click Apply in the ``Fans + Power`` section BIOS will consider your fan curve as "custom"! (no matter if you modified it or not)
|
||||
|
||||
#### How does G-helper control my fan speeds?
|
||||
It doesn't. Your bios does (same as in case with armoury). What G-helper can do - is (optionally) set a custom fan profile to current performance mode consisting of 8 pairs of temperature + fan speed % via same endpoint armoury seem to use.
|
||||
**It doesn't.** Your BIOS does (same as in case with Armoury). What G-helper can do - is (optionally) set a custom fan profile to current performance mode consisting of 8 pairs of temperature + fan speed % via same endpoint armoury seem to use.
|
||||
|
||||
#### How do I change fan % to fan RPM?
|
||||
Click on them
|
||||
|
||||
#### When I try to apply a custom fan curve I get "BIOS rejected fan curve"
|
||||
TUF models from 2021 and older don't support custom fan curves at all. Most probably you didn't have them in Armoury as well?
|
||||
|
||||
#### I don't see a GPU temperature in G-helper
|
||||
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
|
||||
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.
|
||||
|
||||
#### 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.
|
||||
|
||||
#### 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).
|
||||
#### App crashes or doesn't work properly
|
||||
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.
|
||||
|
||||
#### 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 :)
|
||||
#### How to Undervolt GPU
|
||||
Due to the way of how Core Clock offset works for GPU. When you increase clock offset you undervolt it at the same time (see picture)
|
||||
1. Increase ``Core Clock Offset`` under ``Fans + Power -> GPU`` until your 3dmark / furmark / game runs stable. Start with +100, +150, +200 ... This should make your **scores / fps better within same power** / heat as before.
|
||||
2. Set ``Core Clock Limit`` to a certain value (it really depends on application / game that you use) **to lower your power** / heat consumption
|
||||
|
||||

|
||||
|
||||
#### Windows Defender marks app as malware / virus
|
||||
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.
|
||||
#### App refuses to run on startup or runs without any icon in tray on startup
|
||||
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 misbehave
|
||||
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 [previous 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.
|
||||
Small and lightweight Armoury Crate alternative for Asus laptops offering almost same functionality without extra bloat and unnecessary services. Works on ROG G14, G15, G16, M16, X13, Z13, X16, TUF, Scar, Vivobook, ProArt and all other popular models.
|
||||
|
||||
-----------------------------
|
||||
|
||||
@@ -164,11 +182,11 @@ 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)
|
||||
|
||||
- It's **not recommended** to use an app in combination with Armoury Crate services, because they adjust the same settings. You can [uninstall it using AC own uninstall tool](https://dlcdnets.asus.com/pub/ASUS/mb/14Utilities/Armoury_Crate_Uninstall_Tool.zip?model=armoury%20crate). Just in case, you can always install it back later.
|
||||
- It's **not recommended** to use the app in combination with Armoury Crate services, because they adjust the same settings. You can [uninstall it using AC own uninstall tool](https://dlcdnets.asus.com/pub/ASUS/mb/14Utilities/Armoury_Crate_Uninstall_Tool.zip?model=armoury%20crate). Just in case, you can always install it back later.
|
||||
|
||||
- It's **not recommended** to have "ASUS Smart Display Control" app running, as it will try to change refresh rates and fight with g-helper for the same function. You can safely uninstall it.
|
||||
|
||||
@@ -179,72 +197,126 @@ G-Helper is a lightweight Armoury Crate alternative for Asus laptops. A small ut
|
||||
|
||||
-------------------------------
|
||||
|
||||
_Designed and developed for Asus Zephyrus G14 2022 (with AMD Radeon iGPU and dGPU). But could and should potentially work for G14 of 2021 and 2020, G15, X FLOW, and other ROG models for relevant and supported features._
|
||||
## Notice for G14 2023 users who complain about not being able to set Eco mode
|
||||
|
||||
I don't have a Microsoft certificate to sign the app yet, so if you get a warning from Windows Defender on launch (Windows Protected your PC), click More Info -> Run anyway. Alternatively you can compile and run project by yourself using Visual Studio :)
|
||||
This is a known issue with the Nvidia Drivers / Windows that occurs if you shutdown or restart a system with dGPU disabled (Eco mode). This situation can happen for **BOTH Armoury Crate and G-Helper** (as it doesn't depend on them in a first place)
|
||||
|
||||
Scenario to reproduce (for both AC / GH):
|
||||
1. Set Eco mode and shutdown / start or reboot your computer
|
||||
2. After booting in Eco set Standard -> ``brightness controls won't work``
|
||||
3. Try to set Eco mode -> ``it won't work``
|
||||
4. G-Helper would offer you to restart GPU in Device Manager, after that you will be able to set Eco, AC won't be able to do anything
|
||||
|
||||
To prevent this from happening, G-Helper by default would try to enable dGPU before shutdown / restart.
|
||||
If you want to turn this feature off uncheck ``Extra`` -> ``Enable GPU on shutdown (prevents issue with Eco mode)``
|
||||
|
||||
-------------------------------
|
||||
|
||||
I don't have a Microsoft certificate to sign the app yet, so if you get a warning from Windows Defender on launch (Windows Protected your PC), click More Info -> Run anyway.
|
||||
|
||||
------------------
|
||||
|
||||
## Power user settings
|
||||
|
||||
_GENERAL NOTE: "Power user" settings require some config edits. Before making any changes to ``config.json`` - quit G-Helper. Make your changes. Run G-Helper again._
|
||||
GENERAL NOTE: "Power user" settings require editing config located at ``%AppData%\GHelper\config.json``.
|
||||
|
||||
- Quit G-Helper
|
||||
- Make your changes / additions co ``config.json``
|
||||
- Start G-Helper again
|
||||
|
||||
_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 an empty config instead._
|
||||
|
||||
### 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)
|
||||
```
|
||||
"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.
|
||||
You can manually assign a custom power plan GUID to each mode.
|
||||
|
||||
Format is following : ``"scheme_<mode>" : "GUID" ``
|
||||
Where ``mode = 0 (balanced), 1 (turbo), 2 (silent)``
|
||||
|
||||
Default behaviour is :
|
||||
Example (for default windows "balanced" power plan):
|
||||
```
|
||||
"scheme_0": "00000000-0000-0000-0000-000000000000",
|
||||
"scheme_1": "ded574b5-45a0-4f42-8737-46345c09c238",
|
||||
"scheme_2": "961cc777-2547-4f9d-8174-7d86181b8a7a",
|
||||
"scheme_0": "381b4222-f694-41f0-9685-ff5bb260df2e",
|
||||
"scheme_1": "381b4222-f694-41f0-9685-ff5bb260df2e",
|
||||
"scheme_2": "381b4222-f694-41f0-9685-ff5bb260df2e",
|
||||
```
|
||||
|
||||
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.
|
||||
### Override UI theme
|
||||
|
||||
### Custom hotkey actions
|
||||
By default app would set UI theme from "app" theme in windows setting. You can override it to specific theme, or general windows theme
|
||||
|
||||
App supports custom actions for M3, M4 and FN+F4 hotkeys. To set them select "Custom" next to appropriate hotkey and do one of the following:
|
||||
|
||||
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.
|
||||
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``
|
||||
```
|
||||
"gpu_fix" : 1,
|
||||
"ui_mode" : "dark",
|
||||
"ui_mode" : "light",
|
||||
"ui_mode" : "windows",
|
||||
```
|
||||
|
||||
### Skip keyboard Aura initialisation on startup
|
||||
By default app would set last remembered RGB mode for keyboard on each launch. To disable it completely
|
||||
|
||||
```
|
||||
"skip_aura" : 1,
|
||||
````
|
||||
|
||||
### Disable OSD
|
||||
You can disable app's OSD (for performance modes, keyboard backlight, etc) by adding following line to ``%AppData%\GHelper\config.json``
|
||||
Disable app's OSD (for performance modes, keyboard backlight, etc.)
|
||||
```
|
||||
"disable_osd": 1,
|
||||
```
|
||||
|
||||
### Keybinding to toggle performance modes (on external keyboards)
|
||||
### 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
|
||||
|
||||
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.
|
||||
If you don't want this bindings to work you can add
|
||||
```
|
||||
"skip_hotkeys":1,
|
||||
```
|
||||
|
||||
### Keybinding to open G-helper from external keyboards
|
||||
Ctrl + Shift + F12
|
||||
### Toggle Performance Mode key binding
|
||||
|
||||
To change binding for Toggle Performance Modes to ``Ctrl + Shift + KEY``
|
||||
|
||||
```
|
||||
"keybind_profile": 116,
|
||||
```
|
||||
|
||||
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.
|
||||
|
||||
|
||||
### Higher Maximum GPU Clock / Memory Offsets
|
||||
|
||||
By default under GPU section you can set up to +250/+250 for Core and Memory Clock Offset. To increase this value:
|
||||
```
|
||||
"max_gpu_core": 300,
|
||||
"max_gpu_memory": 1500,
|
||||
```
|
||||
|
||||
### Custom hotkey actions
|
||||
|
||||
Select ``Custom`` next to appropriate hotkey under ``Extra`` settings and do one of the following:
|
||||
|
||||
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 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
|
||||
|
||||

|
||||
|
||||
------------
|
||||
|
||||
**Libraries / projects used**
|
||||
**Libraries and projects used**
|
||||
- [Linux Kernel](https://github.com/torvalds/linux/blob/master/drivers/platform/x86/asus-wmi.c) for some basic endpoints in ASUS ACPI/WMI interface
|
||||
- [NvAPIWrapper](https://github.com/falahati/NvAPIWrapper) for accessing Nvidia API
|
||||
- [Starlight](https://github.com/vddCore/Starlight) for anime matrix communication protocol
|
||||
@@ -253,4 +325,4 @@ Ctrl + Shift + F12
|
||||
**Disclaimers**
|
||||
"ROG", "TUF", and "Armoury Crate" are trademarked by and belong to AsusTek Computer, Inc. I make no claims to these or any assets belonging to AsusTek Computer and use them purely for informational purposes only.
|
||||
|
||||
THE SOFTWARE IS PROVIDED “AS IS”, 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.
|
||||
THE SOFTWARE IS PROVIDED “AS IS” AND WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. MISUSE OF THIS SOFTWARE COULD CAUSE SYSTEM INSTABILITY OR MALFUNCTION.
|
||||
|
||||
@@ -10,27 +10,27 @@
|
||||
|
||||
这是一个ROG 幻14、幻15,幻13、幻16,飞行堡垒/天选系列,ROG 枪神/魔霸系列或其他ASUS笔记本的控制工具。可以做到几乎所有Armoury Crate(奥创控制中心)能做的事情,而且不需要任何多余的功能或安装不必要的系统服务。
|
||||
|
||||
## 🎁 主要优点
|
||||
|
||||
## :gift: 主要优点
|
||||
|
||||
1. 自动且无缝的独立显卡模式切换(不需要关闭所有应用或执行其他操作)
|
||||
2. 可以手动调整所有的性能模式(包括自定义风扇曲线以及PPTs(Platform Power Threshold,即CPU总功耗,下文简称PPTs--译注))
|
||||
1. 自动且无缝的独立显卡模式切换(不需要关闭所有应用或执行其他操作)
|
||||
2. 可以手动调整所有的性能模式(包括自定义风扇曲线以及PPTs(Platform Power Threshold,即CPU总功耗,下文简称PPTs--译注))
|
||||
3. 极致的轻量化,几乎不消耗任何资源,也不需要安装系统服务。只需要下载一个exe文件就可以运行。
|
||||
4. 简洁的界面设计,可以轻松调整所有设置。
|
||||
5. 运行不需要管理员权限!
|
||||
|
||||
## [:floppy_disk: 下载应用](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
|
||||
## [💾 下载应用](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
|
||||
|
||||
如果你喜欢这个应用,请[给这个项目:star:](https://github.com/seerge/g-helper) 或者向别人推荐它!
|
||||
### :euro: [(通过paypal)支持和捐赠G-Helper](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA)
|
||||
如果你喜欢这个应用,请[给这个项目⭐️](https://github.com/seerge/g-helper) 或者向别人推荐它!
|
||||
|
||||
### 💶 [(通过paypal)支持和捐赠G-Helper](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA)
|
||||
|
||||
_如果你在别的地方提到这个软件-请记得加上这个项目的网址。十分感谢。_
|
||||
|
||||

|
||||
|
||||
### :zap: 主要功能
|
||||
### ⚡️ 主要功能
|
||||
|
||||
1. **性能模式**: 静音模式 - 平衡模式 - 增强模式 (笔电bios内置的性能模式,附带默认的风扇曲线)
|
||||
1. **性能模式**: 静音模式 - 平衡模式 - 增强模式 (笔电bios内置的性能模式,附带默认的风扇曲线)
|
||||
2. **显卡模式**: 集显模式 - 标准模式 - 独显直连 - 自动切换
|
||||
3. 笔记本屏幕刷新率 60hz 或 120hz 自动调节(或者 144hz 等刷新率),包括屏幕Overdrive(OD,即ROG系列的屏幕快速响应/快显功能--译注)功能
|
||||
4. 可调节的风扇曲线、电源功耗设置(PPTs)(_注:请谨慎调节!_)和CPU超频选项
|
||||
@@ -40,7 +40,8 @@ _如果你在别的地方提到这个软件-请记得加上这个项目的网址
|
||||
8. CPU/GPU温度、风扇转速和电池充放电功率显示
|
||||
9. 电池充电上限设置,保护电池健康度
|
||||
|
||||
### :gear: 当使用电池供电或插上电源时,自动切换:
|
||||
### ⚙️ 当使用电池供电或插上电源时,自动切换:
|
||||
|
||||
- 性能模式 (软件会记住上一次使用电池或插上电源时的电源模式)
|
||||
- 自动切换独立显卡模式 - 使用电池时停用独显,并在插上电源时重新启用
|
||||
- 自动切换屏幕刷新率 (使用电池时切换为 60hz,插入电源后切换为 120+ hz)
|
||||
@@ -48,7 +49,7 @@ _如果你在别的地方提到这个软件-请记得加上这个项目的网址
|
||||
|
||||
为了保证自动切换功能和按键绑定功能的正常工作,软件需要在后台运行并显示一个托盘图标。这并不会消耗其他资源。
|
||||
|
||||
### :rocket: 性能模式
|
||||
### 🚀 性能模式
|
||||
|
||||
性能模式与 Armoury Crate(奥创控制中心)中的 **保持一致**,因为这些设置与其对应的风扇曲线都被保存在bios中
|
||||
|
||||
@@ -60,70 +61,127 @@ _PPTs 默认在 幻14 2022版上显示, 对于其他型号 PPTs 的显示将会
|
||||
|
||||

|
||||
|
||||
### :video_game: 显卡模式
|
||||
### 🎮 显卡模式
|
||||
|
||||
1. 集显模式 : 只启用低功耗的内置显卡, 核显连接笔电内置屏幕
|
||||
2. 标准模式 (MS Hybrid) : 同时启用核显与独显, 核显连接笔电内置屏幕
|
||||
3. 独显直连: 同时启用核显与独显, 但独显直连笔电屏幕 (仅在幻14 2022版等机型上支持)
|
||||
4. 自动切换: 使用电池时关闭独显(集显模式),并在插上电源后重新启用独显(混合输出)
|
||||
|
||||
## :question: 常见问题解答(FAQ)
|
||||
## ❓ 常见问题解答(FAQ)
|
||||
|
||||
#### 当我按下 M4 / Rog键的时候总是弹出安装Armoury Crate的弹窗提示,我该如何关闭它?
|
||||
|
||||
删除下列文件或者把它移动(注:剪切+粘贴)到别的目录 ``C:\Windows\System32\ASUSACCI\ArmouryCrateKeyControl.exe``.
|
||||
|
||||
如果还是出现弹窗 - 进入 BIOS (开机时按住 F2), 按照屏幕下方的快捷键提示进入 Advanced Settings,然后关闭 "Armoury Crate Control Interface" (注:把它设置为disabled)。
|
||||
|
||||
#### 为什么我的笔记本不支持独显输出?
|
||||
独显输出只在幻14 2022版上支持(也可能支持2022年以来的其他机型)。
|
||||
#### 电池充电限制不起作用
|
||||
|
||||
#### 我无法在幻14 2020版上设置集显模式(关闭独显)
|
||||
很不幸,2020版的机型在硬件上不支持这个设置。
|
||||
这有可能是因为ASUS服务在你设置后又覆写了对应的设置。你可以通过在G-helper中点击"更多",然后在"正在运行的Asus服务项"右侧点击"停止"来停止ASUS服务。
|
||||
|
||||
#### 我没看到显卡模式
|
||||
|
||||
在一些旧型号中(比如幻14 2020)从硬件层上不支持禁用显卡,在这些机型中并不需要显卡模式,因此没有显示。
|
||||
|
||||
#### 为什么我的电脑上没有独显直连
|
||||
|
||||
独显直连(在硬件层面上)只对2022年之后的机型中生效。
|
||||
|
||||
#### 我是否应该自行调整功耗设置(PPTs)和风扇曲线?
|
||||
|
||||
你可以不那么做,这些操作是可选的。按照经验(bios)内置的性能模式工作的很好。请只在遇到问题的时候限制功耗或者手动设置风扇模式。当你在风扇与功率设置中按下“应用”时,bios将会认为风扇配置文件为“自定义”! (无论你是否真的修改了风扇曲线)
|
||||
|
||||
#### G-helper是如何控制我的风扇转速的?
|
||||
|
||||
软件并不会修改风扇转速。这个设置实际上由bios控制(与Armoury Crate的情况相同)。G-helper 所能做的 - 就是将一个自定义的风扇配置(可选地)应用到正在使用的性能模式,其中包括8组温度+风扇速度的百分比数值%。软件通过与Armoury Crate看起来相同的WMI endpoint来应用这一设置,
|
||||
|
||||
#### 我如何把风扇转速显示从百分比%切换到RPM(每分钟转速)?
|
||||
|
||||
点击一下百分比即可切换。
|
||||
|
||||
#### 当我修改自定义风扇曲线时,我得到了"BIOS拒绝修改风扇曲线"("BIOS rejected fan curve")提示
|
||||
|
||||
2021之后的TUF机型不支持自定义风扇曲线。很可能在Armory Crate中也没有这个选项。
|
||||
|
||||
#### 我没有在G-helper中看到独显温度
|
||||
|
||||
很可能要么你正在使用核显模式/自动切换模式,这种情况下独显只是关闭了;或者你的windows系统为独显设置了睡眠模式(为了省电)。这种情况下,G-helper无法识别到独显,也不能获得温度读数。
|
||||
|
||||
#### 弹窗提示"G-Helper已经在运行"
|
||||
#### 打开应用后没有看到应用启动/弹窗提示"G-Helper已经在运行"
|
||||
|
||||
请在系统托盘里找到 (G) 图标。windows会默认隐藏所有图标,所以你可能需要点击 ^ 来看见它们。建议任务栏右键进入任务栏设置 -> 其他系统图标 -> 将 G-Helper 设置为始终在任务栏上显示。
|
||||
|
||||
#### 应用不能启动或者崩溃了,我该怎么做?
|
||||
|
||||
从开始菜单里打开“事件管理器”, 进入 Windows日志 -> 应用,然后在最近的错误日志里寻找包含G-helper的日志。如果你找到一个 - 请提出一个 [新的 issue](https://github.com/seerge/g-helper/issues) ,其中包含来自这次错误的所有的详细信息。
|
||||
|
||||
#### 我可以在用G-Helper的时候同时用myASUS吗?
|
||||
|
||||
当然可以! 唯一的问题是myASUS可能会重置你之前在g-helper里设置的电池充电上限。在这种情况下,建议你在这两个应用(myASUS和g-helper)里设置相同的充电上限(60%/80%/100%)以避免冲突。
|
||||
|
||||
#### 我如何将M3键设置为将麦克风静音?
|
||||
|
||||
这个功能由 Asus Optimization Service 管理(所以 G-helper 没有这项设置,也不管理这个功能)。请确认这个系统服务是否正常运行
|
||||
|
||||
#### 我如何设置不同的视觉风格(即 Armoury Crate 内的gamevisual功能)?
|
||||
|
||||
因为这个功能让颜色显示不正确,我个人(注:作者 :) )并不喜欢这些。但是如果你需要这个功能 - 你可以使用 Nvidia 控制面板/GefoeceExperirence滤镜或者AMD控制面板(Radeon Software/AMD Software: Adrenalin Edition)来修改显示颜色(因显示器和配置而异)。如果你真的非常需要这个功能,你也可以使用 [微软商店中ASUS自己的工具](https://apps.microsoft.com/store/detail/gamevisual/9P4K1LFTXSH8?hl=nl-nl&gl=nl&rtc=1)
|
||||
|
||||
#### 我能超频 Nvidia GPU 核心或显存吗?
|
||||
我(注:作者 :) )现在并没有Nvidia的显卡,所以我不能保证这个功能加入之后是安全的。但是你可以用微星小飞机(msi afterburner) 去超频GPU,毕竟它是为GPU超频专门设计的 :)
|
||||
|
||||
首先确保你的独立显卡是启用的,之后打开"风扇 + 电源"选项,在这里即可调整核心和显存频率。这个和Armoury Crate中的设置一样。注意,使用这项功能需要管理员权限,应用也会弹出需要管理员权限的提示。(*)
|
||||
|
||||
#### Windows Defender将该应用标记为恶意软件/病毒
|
||||
|
||||
这是Windows Defender的误报(其他使用机器学习来检测病毒的杀毒软件可能也出现同样的结果),这可能是因为本应用没有数字签名和证书。如果你不放心的话,你可以自己编译安装本项目,本项目是完全开源的。
|
||||
|
||||
#### 我该在哪找到应用的配置文件和日志文件
|
||||
|
||||
你可以在 `%AppData%\GHelper` 文件夹找到他们,当你在issue中提交bug的时候,请务必附上应用日志。
|
||||
|
||||
#### 应用无法在开机时启动或者启动的时候在任务栏没有提示
|
||||
|
||||
打开应用,取消再重新勾选"开机自启"项目。如果还是不行的话,你可以手动在Windows 任务计划程序(Task Scheduler)中为G-helper应用增加几秒延迟后再启动。
|
||||
|
||||
#### 我该如何卸载G-helper?
|
||||
|
||||
G-helper是一个单文件的exe文件, 而且它不会向系统中安装任何东西。如果要“卸载”它 - 你可以直接删除exe文件 :) 如果你已经设置了自定义的风扇配置或者功耗设置(PPTs) - 在删除软件之前建议你选择你最喜欢的配置模式(比如"平衡"),然后在“风扇与电源设置”里点击“恢复默认设置”。
|
||||
|
||||
#### 我如何给我的CPU降压?
|
||||
|
||||
目前你只能给AMD CPU降压。如果你的机型支持这个功能 - 你会在“风扇 + 电源”项中看到对应的设置。如果你看不到该项设置,说明你的CPU不支持降压。所有支持的型号可以[点此查询](https://github.com/seerge/g-helper/discussions/736)。
|
||||
|
||||
#### 我的机型是幻14 2023并且我无法关闭/开启我的独立显卡
|
||||
|
||||
这应该是旧版本的BIOS的问题。根据[用户反馈](https://github.com/seerge/g-helper/issues/680),更新最近的BIOS 312版本即可解决问题(可以通过MyASUS或者G-helper "更新" 项进行安装)。
|
||||
|
||||
#### 我的机型是幻15 2022并且我无法关闭/开启我的独立显卡或者风扇出问题
|
||||
|
||||
幻15 2022款在BIOS 313以上版本会有很多小问题。许多用户反馈可以通过[将BIOS版本降级到311版本来解决](https://rog.asus.com/nl/laptops/rog-zephyrus/rog-zephyrus-g15-2022-series/helpdesk_bios/)。
|
||||
|
||||
#### 我删除了Armoury之后我的GPU性能降低了
|
||||
|
||||
检查你的 Nvidia Experience 设置,确保Whisper Mode项是关闭的。你还可以尝试重置所有设置。`Nvidia 控制面板 -> 管理 3D 设置 -> 恢复`
|
||||
|
||||
#### 我如何从硬件层面重启我的笔记本?
|
||||
|
||||
所有的华硕笔记本都支持方便的硬重启。它不会影响你的数据,但是会重置所有硬件相关的东西(例如启动独立显卡,唤醒wifi/蓝牙模块等)
|
||||
关闭你的电脑,长按“电源”按钮30-40秒。之后正常启动你的电脑(会比正常情况下花更长时间启动)。
|
||||
|
||||
#### G-helper 是什么?
|
||||
这是一个ASUS笔记本的控制工具。可以做到几乎所有Armoury Crate(奥创控制中心)能做的事情,而且不需要任何多余的功能或安装不必要的系统服务。
|
||||
|
||||
这是一个轻量化的Armoury Crate(奥创控制中心)替代工具,而且不需要任何多余的功能或安装不必要的系统服务的。在ROG G14, G15, G16, M16, X13, Z13, X16, TUF, Scar, Vivobook, ProArt等热门笔记本中都适用。
|
||||
|
||||
----------------------------
|
||||
---
|
||||
|
||||
## 💶 [支持这个项目](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA)
|
||||
|
||||
## :euro: [支持这个项目](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA)
|
||||
#### 如果你喜欢这个项目你可以[通过Paypal捐赠](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA)
|
||||
|
||||
[](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA)
|
||||
|
||||
----------------
|
||||
---
|
||||
|
||||
### 安装指南
|
||||
|
||||
@@ -131,21 +189,19 @@ G-helper是一个单文件的exe文件, 而且它不会向系统中安装任何
|
||||
2. 解压到你选择的文件夹
|
||||
3. 运行 **GHelper.exe**
|
||||
|
||||
### 运行要求(必须)
|
||||
### 运行要求(必须)
|
||||
|
||||
- Microsoft [.NET7](https://dotnet.microsoft.com/en-us/download)。 你可能已经安装了。 如果没有的话你可以从官方网站 [立即下载](https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-7.0.202-windows-x64-installer)。
|
||||
|
||||
- [Asus System Control Interface](https://dlcdnets.asus.com/pub/ASUS/nb/Image/CustomComponent/ASUSSystemControlInterfaceV3/ASUSSystemControlInterfaceV3.exe)。 如果你安装了或者安装过myASUS, 那么这个"驱动"应当已经安装(即使myASUS已经卸载)。 或者你可以手动下载安装。
|
||||
|
||||
### 推荐配置(可选)
|
||||
### 推荐配置(可选)
|
||||
|
||||
- 推荐保持 "Asus Optimization Service" 这个windows服务的运行, 它保证基本的键盘快捷键(比如屏幕或键盘亮度)能够使用。
|
||||
|
||||
- 可选选项(!) 你可以通过在管理员模式下运行 [这个用于精简的.bat文件](https://raw.githubusercontent.com/seerge/g-helper/main/debloat.bat)来禁用/移除不必要的服务。如果要恢复这些服务,运行 [这个.bat文件](https://raw.githubusercontent.com/seerge/g-helper/main/bloat.bat)。
|
||||
|
||||
-这个应用不建议与Armoury Crate(及其服务)同时运行, 因为它们会调整相同的设置。你可以[使用ASUS官方提供的卸载工具卸载](https://dlcdnets.asus.com/pub/ASUS/mb/14Utilities/Armoury_Crate_Uninstall_Tool.zip?model=armoury%20crate)Armoury Crate。以防万一,你总是可以之后再安装回来。
|
||||
|
||||
-------------------------------
|
||||
---
|
||||
|
||||
为Asus ROG 幻14 2022 (配置了AMD核显和独显)设计和开发。但应当可能在幻14 2021和2020款, 幻15, X FLOW, 以及其他的ROG机型上使用相关且支持的功能。
|
||||
|
||||
@@ -153,13 +209,13 @@ G-helper是一个单文件的exe文件, 而且它不会向系统中安装任何
|
||||
|
||||
设置文件保存在 ``%AppData%\GHelper``
|
||||
|
||||
------------------
|
||||
---
|
||||
|
||||
精简你的windows可以帮助延长电池的使用时间,同时让笔电的温度更低一些
|
||||
|
||||

|
||||
|
||||
---------
|
||||
---
|
||||
|
||||
## 高级用户设置
|
||||
|
||||
@@ -167,7 +223,7 @@ G-helper是一个单文件的exe文件, 而且它不会向系统中安装任何
|
||||
|
||||
在 config.json (位于 %appdata/GHelper) 中你可以手动添加自定义电源设置的GUID (它既可以是"真正的"可被选择的电源计划,也可以是"覆盖式(overlay)"的电源计划,就像g-helper默认设置的那样)
|
||||
|
||||
格式如下 : "scheme_<mode>" : "GUID"
|
||||
格式如下 : "scheme_`<mode>`" : "GUID"
|
||||
|
||||
Where ``mode = 0 (balanced), 1 (turbo), 2 (silent)``
|
||||
|
||||
@@ -180,17 +236,16 @@ Where ``mode = 0 (balanced), 1 (turbo), 2 (silent)``
|
||||
|
||||
### 自定义热键行为
|
||||
|
||||
软件支持为 M3, M4 和 FN+F4 热键自定义配置。如要设置,在按键旁的选项框中选择"自定义设置",然后执行下面的操作(任选其一):
|
||||
软件支持为 M3, M4 和 FN+F4 热键自定义配置。如要设置,在按键旁的选项框中选择"自定义设置",然后执行下面的操作(任选其一):
|
||||
|
||||
1. 要想运行任意应用 - 向 "action" 文本框中粘贴应用文件exe的完整路径,例如:
|
||||
``C:\Program Files\EA Games\Battlefield 2042\BF2042.exe``
|
||||
|
||||
``C:\Program Files\EA Games\Battlefield 2042\BF2042.exe``
|
||||
2. 要想模拟任意windows按键 - 向"action"文本框中粘贴相对应的 keycode,例如 ``0x2C`` 为屏幕截图键。
|
||||
Keycodes的完整列表: https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
|
||||
Keycodes的完整列表: https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
|
||||
|
||||

|
||||
|
||||
------------
|
||||
---
|
||||
|
||||
_注:请务必参考下方 **免责声明** 原文,以避免或减小错误或不恰当之翻译引起的负面影响。翻译仅为便于阅读之目的,不具有法律效力,亦不作为发生争端时处理之依据。_
|
||||
|
||||
|
||||
BIN
docs/ua.png
BIN
docs/ua.png
Binary file not shown.
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Reference in New Issue
Block a user