Compare commits

...

1096 Commits

Author SHA1 Message Date
Serge
435ddbb951 Cleanup 2023-11-12 22:26:33 +01:00
Serge
96ade7c9a0 Touchpad toggle fix for FA507 https://github.com/seerge/g-helper/issues/1589 2023-11-12 20:27:50 +01:00
Serge
3249072ee5 Cleanup 2023-11-12 19:12:58 +01:00
Serge
f6602fff3c Remove logo/lid backlight checkboxes for G512LI https://github.com/seerge/g-helper/issues/1575 2023-11-09 12:30:59 +01:00
Serge
5a7dc5c707 Merge branch 'main' of https://github.com/seerge/g-helper 2023-11-08 17:59:18 +01:00
Serge
e6d7a6f8b3 Removed RGB color selection for FX516P https://github.com/seerge/g-helper/issues/1571 2023-11-08 17:59:15 +01:00
Serge
5cd77249a7 Update README.md 2023-11-05 14:16:19 +01:00
Serge
d9e0045af5 ROG key binding for DUO models https://github.com/seerge/g-helper/discussions/1560 2023-11-03 21:55:35 +01:00
Serge
a66df0a394 Allow setting GPU clock limit when clock offsets are default https://github.com/seerge/g-helper/issues/1557 2023-11-03 21:54:41 +01:00
Serge
f7435b2789 More flexible GPU clock limit settings https://github.com/seerge/g-helper/discussions/1555#discussioncomment-7454925 2023-11-02 14:58:43 +01:00
Serge
f49e2ee1e8 Merge branch 'main' of https://github.com/seerge/g-helper 2023-10-31 18:03:25 +01:00
Serge
f854c8e088 Fix for (someitmes) not working hotkeys on Z13 https://github.com/seerge/g-helper/issues/1547 2023-10-31 18:03:23 +01:00
Serge
bc6edcb38e New Crowdin updates (#1537)
* New translations strings.resx (French)

* New translations strings.resx (Portuguese, Brazilian)
2023-10-29 11:39:11 +01:00
Serge
dac7c86f1b Update README.md 2023-10-25 22:35:34 +02:00
Serge
369c89cb8d New translations strings.resx (Ukrainian) (#1524) 2023-10-25 14:04:11 +02:00
Serge
65e0065234 Update release.yml 2023-10-23 13:20:23 +02:00
Serge
3fa8c04afa Update release.yml 2023-10-23 13:14:10 +02:00
Serge
162514a8f9 Version Bump 2023-10-22 12:34:21 +02:00
Serge
b51c68572e Touchpad toggle tweaks https://github.com/seerge/g-helper/discussions/1504 2023-10-22 12:33:42 +02:00
Serge
ed5ec6b576 Sceenpad toggle https://github.com/seerge/g-helper/issues/1450 2023-10-20 10:57:15 +02:00
Serge
8c1885c2ae Auto turn off 100% charge option when battery is fully charged https://github.com/seerge/g-helper/issues/1485 2023-10-19 14:36:19 +02:00
Serge
168b751795 Shift + Fn + F7/F8 for screenpad control https://github.com/seerge/g-helper/issues/1491 2023-10-19 14:30:54 +02:00
Serge
3e93a93ab3 AutoBattery charge limiter https://github.com/seerge/g-helper/issues/1481 2023-10-18 11:45:57 +02:00
Serge
8a12e84423 Fn+F6 binding for old TUFs https://github.com/seerge/g-helper/issues/1480 2023-10-18 11:18:53 +02:00
Serge
c978c94d59 Merge branch 'main' of https://github.com/seerge/g-helper 2023-10-13 21:23:42 +02:00
Serge
fc83e0e824 Added FA506IC to the list of models with swapped brightness 2023-10-13 21:23:39 +02:00
Serge
389fc41722 New Crowdin updates (#1465)
* New translations strings.resx (Indonesian)

* New translations strings.resx (Indonesian)
2023-10-13 19:26:01 +02:00
Serge
509817f442 New Crowdin updates (#1463)
* Updated translations strings.resx (Spanish)
* Updated translations strings.resx (Lithuanian)

* New translations strings.resx (Indonesian)
https://github.com/seerge/g-helper/pull/1462 @aliazhar-id
2023-10-13 11:59:25 +02:00
Serge
8d8cfb0521 Merge pull request #1452 from seerge/l10n_main
New Crowdin updates
2023-10-12 15:40:25 +02:00
Serge
f021135f53 New translations strings.resx (German) 2023-10-12 13:49:12 +02:00
Serge
98670414d2 Merge pull request #1451 from IceStormNG/asus-mouse-support
TUF M5 has 3 profiles, not just 1
2023-10-12 12:21:20 +02:00
IceStormNG
a41595068e TUF M5 has 3 profiles, not just 1 2023-10-12 12:19:02 +02:00
Serge
d58c277733 Exception fix https://github.com/seerge/g-helper/issues/1447 2023-10-11 19:24:41 +02:00
Serge
5701a287aa Version bump 2023-10-10 13:28:26 +02:00
Serge
1968b6487c Merge pull request #1436 from IceStormNG/asus-mouse-support
Remove unsupported lighting modes for  Keris Wireless Aimpoint
2023-10-07 12:20:16 +02:00
IceStormNG
95103108f2 Remove unsupported modes from the keris wireless aimpoint 2023-10-07 12:09:52 +02:00
Serge
defb0790e5 Merge pull request #1434 from seerge/l10n_main
New Crowdin updates
2023-10-07 01:13:17 +02:00
Serge
9da45b43ea New translations strings.resx (Turkish) 2023-10-06 22:30:11 +02:00
Serge
32a20c3cce New translations strings.resx (Turkish) 2023-10-06 21:32:57 +02:00
Serge
763337aedd Keyboard label https://github.com/seerge/g-helper/issues/1428 2023-10-06 11:59:17 +02:00
Serge
f1b51a726b Added FX517Z to list of single-color RGB devices https://github.com/seerge/g-helper/issues/1425 2023-10-06 10:51:27 +02:00
Serge
a085615398 Merge branch 'main' of https://github.com/seerge/g-helper 2023-10-06 10:48:36 +02:00
Serge
d32a3452f9 Swapped F7/F8 actions for FX506LH https://github.com/seerge/g-helper/issues/1429 2023-10-06 10:48:34 +02:00
Serge
433022b65d Removed unsupported RGB flags for G614J https://github.com/seerge/g-helper/issues/1428 2023-10-06 10:42:23 +02:00
Serge
460f921836 Removed unsupported RGB modes for G614J https://github.com/seerge/g-helper/issues/1420 2023-10-06 10:35:21 +02:00
Serge
1e2620c484 Merge pull request #1422 from seerge/l10n_main
New Crowdin updates
2023-10-05 21:57:40 +02:00
Serge
e774f704dd New translations strings.resx (Chinese Simplified) 2023-10-05 21:28:34 +02:00
Serge
aa327f563f New translations strings.resx (Chinese Simplified) 2023-10-05 19:29:35 +02:00
Serge
b9de97ecf4 Merge pull request #1419 from IceStormNG/asus-mouse-support
Support for ROG Chakram P704
2023-10-05 18:55:38 +02:00
IceStormNG
5d7af9bdcd Merge branch 'seerge:main' into asus-mouse-support 2023-10-05 18:23:47 +02:00
IceStormNG
c2ca761d99 Adds support for the ROG Chakram (P704) 2023-10-05 18:21:53 +02:00
Serge
e480ee6f12 Merge pull request #1416 from seerge/l10n_main
New Crowdin updates
2023-10-04 18:16:53 +02:00
nopeless
393cb3300c fix: breaking workflow and upload artifact (#1417)
* feat: allow manual executable build for github

* fix: manual dispatch behavior

* fix: use full sha
2023-10-04 18:14:31 +02:00
nopeless
ee90fe4a3d feat: allow manual executable build for github (#1415) 2023-10-04 17:35:04 +02:00
Serge
a0628ef368 New translations strings.resx (Polish) 2023-10-04 17:32:21 +02:00
Serge
701a7d99c4 Tray icon-click fix https://github.com/seerge/g-helper/pull/1407#issuecomment-1746823625 2023-10-04 15:03:07 +02:00
IceStormNG
667d365992 Merge branch 'seerge:main' into asus-mouse-support 2023-10-04 13:44:05 +02:00
IceStormNG
6232fb1cfb Support for TUF Gaming M5 Mouse. (#1414) 2023-10-04 13:10:26 +02:00
IceStormNG
a92924840b Support for TUF Gaming M5 Mouse. 2023-10-04 13:05:21 +02:00
Serge
7a4d885e1b Fn-lock fix https://github.com/seerge/g-helper/issues/1413 2023-10-04 10:29:03 +02:00
Serge
1c5e46131f Tray icon click fix 2023-10-03 18:35:48 +02:00
Serge
49d5df9bac Toggle one time 100% charge limit https://github.com/seerge/g-helper/issues/1390 2023-10-03 13:37:56 +02:00
Serge
b8870ba3d5 Existence check 2023-10-03 12:25:53 +02:00
Serge
2d7009d8fb Startup re-scheduling https://github.com/seerge/g-helper/issues/1410 2023-10-03 12:22:47 +02:00
Serge
46bfda3ad5 Cleanup 2023-10-03 00:31:07 +02:00
Serge
72b1842520 New translations strings.resx (Chinese Traditional) (#1406) 2023-10-02 23:56:21 +02:00
Serge
2f7b008557 Merge pull request #1407 from nopeless/main
feat: improve focus behavior
2023-10-02 23:49:49 +02:00
nopeless
97361e010e refactor: use AddOwnedForm for group behavior 2023-10-02 14:30:57 -05:00
nopeless
a30920ed70 fix: respect tray icon behavior 2023-10-02 14:09:52 -05:00
nopeless
4509b67ed9 feat: improve focus behavior 2023-10-02 14:00:52 -05:00
Serge
e6fd618900 Update README.md 2023-10-02 14:32:18 +02:00
Serge
9a48e442d5 Refresh rate delay parameter https://github.com/seerge/g-helper/issues/1395 2023-10-02 11:05:45 +02:00
Serge
9e3afe73c6 Merge branch 'main' of https://github.com/seerge/g-helper 2023-10-01 19:47:40 +02:00
Serge
d90da6571e Default screen fix 2023-10-01 19:47:37 +02:00
Serge
19e1014f07 Merge pull request #1397 from seerge/l10n_main
New Crowdin updates
2023-10-01 16:58:09 +02:00
Serge
cd5806ed22 New translations strings.resx (Portuguese, Brazilian) 2023-10-01 13:19:06 +02:00
Serge
0c63e96d0f New translations strings.resx (Vietnamese) 2023-10-01 13:19:05 +02:00
Serge
2271df172c New translations strings.resx (Chinese Traditional) 2023-10-01 13:19:04 +02:00
Serge
5995079e17 New translations strings.resx (Chinese Simplified) 2023-10-01 13:19:03 +02:00
Serge
49e6412c3c New translations strings.resx (Ukrainian) 2023-10-01 13:19:02 +02:00
Serge
3316e88d38 New translations strings.resx (Turkish) 2023-10-01 13:19:02 +02:00
Serge
5501c9c587 New translations strings.resx (Portuguese) 2023-10-01 13:19:01 +02:00
Serge
1d0bb67227 New translations strings.resx (Polish) 2023-10-01 13:19:00 +02:00
Serge
2dd5e93a7c New translations strings.resx (Lithuanian) 2023-10-01 13:18:59 +02:00
Serge
31f19303ec New translations strings.resx (Korean) 2023-10-01 13:18:58 +02:00
Serge
eaa1df636d New translations strings.resx (Italian) 2023-10-01 13:18:57 +02:00
Serge
2c07a1922c New translations strings.resx (Hungarian) 2023-10-01 13:18:56 +02:00
Serge
0d4fc5d94a New translations strings.resx (German) 2023-10-01 13:18:55 +02:00
Serge
b641a87455 New translations strings.resx (Spanish) 2023-10-01 13:18:54 +02:00
Serge
773be3cfd1 New translations strings.resx (French) 2023-10-01 13:18:53 +02:00
Serge
2b7a89b27f New translations strings.resx (Romanian) 2023-10-01 13:18:52 +02:00
Serge
ba1607686f Merge branch 'main' of https://github.com/seerge/g-helper 2023-10-01 13:12:51 +02:00
Serge
6375586ff9 One time 100% battery charge https://github.com/seerge/g-helper/issues/1390 2023-10-01 13:12:49 +02:00
Serge
17da3c7a5c Update README.md 2023-10-01 11:25:10 +02:00
Serge
9f836ff356 Custom hotkey combos https://github.com/seerge/g-helper/issues/1386 2023-10-01 11:22:20 +02:00
Serge
35355f6cb7 Update README.md 2023-10-01 10:36:43 +02:00
Serge
60be68b217 Font tweaks 2023-10-01 10:16:48 +02:00
Serge
4fe8953a48 Incomplete fan curve crash https://github.com/seerge/g-helper/issues/1396 2023-10-01 10:10:13 +02:00
Serge
7845f278f8 Option to bind G-Helper window to any macro key https://github.com/seerge/g-helper/issues/1389
Auto refresh tweaks https://github.com/seerge/g-helper/issues/1395
Anime Matrix tweaks
2023-09-30 23:08:34 +02:00
Serge
03944dc208 Merge pull request #1378 from seerge/l10n_main
New Crowdin updates
2023-09-27 19:53:22 +02:00
Serge
3b6caf1a52 New translations strings.resx (Turkish) 2023-09-27 19:52:47 +02:00
Serge
7ede6e3cb0 Merge pull request #1375 from seerge/l10n_main
New Crowdin updates
2023-09-27 18:40:30 +02:00
Serge
1a3ae449d6 New translations strings.resx (Turkish) 2023-09-27 15:03:01 +02:00
Serge
78a384d760 Merge pull request #1365 from seerge/l10n_main
New Crowdin updates
2023-09-26 15:27:06 +02:00
Serge
26828f5c93 New translations strings.resx (Hungarian) 2023-09-26 13:25:15 +02:00
Serge
594bf061e1 New translations strings.resx (Hungarian) 2023-09-26 11:36:26 +02:00
Serge
aa32942c92 Merge pull request #1362 from IceStormNG/asus-mouse-support
Support for ROG Strix Impact II (P506)
2023-09-25 15:13:44 +02:00
IceStormNG
4a3108a5e0 Corrected a comment. The mouse has 3 zones. 2023-09-25 14:35:09 +02:00
IceStormNG
82f5afa278 Only show battery percentage when the mouse has a battery. 2023-09-25 14:31:23 +02:00
IceStormNG
cd95802912 Support for Strix Impact II (P506) 2023-09-25 14:30:47 +02:00
Serge
0fed74e069 M16 Fan fix for older BIOS only 2023-09-24 12:23:31 +02:00
Serge
8773e26219 Version bump 2023-09-22 12:11:11 +02:00
Serge
45cce72af5 Merge branch 'main' of https://github.com/seerge/g-helper 2023-09-21 13:57:50 +02:00
Serge
4a43710d50 Removed unsuported hotkeys for ARCNM https://github.com/seerge/g-helper/issues/1341 2023-09-21 13:57:47 +02:00
Serge
8c12a230a8 Update README.md 2023-09-21 13:17:07 +02:00
Serge
50fed1ba2a Merge pull request #1335 from seerge/l10n_main
New Crowdin updates
2023-09-20 18:06:54 +02:00
Serge
63ba5dc9e8 New translations strings.resx (German) 2023-09-20 13:03:08 +02:00
Serge
b75d24b4ca Merge pull request #1330 from seerge/l10n_main
New Crowdin updates
2023-09-20 10:59:31 +02:00
Serge
9488a12dc2 New translations strings.resx (German) 2023-09-20 10:58:56 +02:00
Serge
701b3a126e New translations strings.resx (Chinese Traditional) 2023-09-20 00:33:54 +02:00
Serge
e3335ef803 New translations strings.resx (Spanish) 2023-09-20 00:33:47 +02:00
seerge
f16a6248cb Added Z13 to GPU fix list 2023-09-20 00:15:51 +02:00
Serge
9c0cd15115 HDR Detection / Multi-Zone switch improvements https://github.com/seerge/g-helper/issues/1319 2023-09-19 12:52:35 +02:00
Serge
524b84fc38 Detect Battery Saver state 2023-09-18 13:45:12 +02:00
Serge
3bd59a4c4d Merge branch 'main' of https://github.com/seerge/g-helper 2023-09-18 12:04:48 +02:00
Serge
96f07606f5 Version bump 2023-09-18 12:04:43 +02:00
Serge
ea96af51b8 Update README.md 2023-09-18 10:00:08 +02:00
Serge
0669bcb2d1 Merge branch 'main' of https://github.com/seerge/g-helper 2023-09-17 11:49:08 +02:00
Serge
67a42c4a21 Touchpad toggle https://github.com/seerge/g-helper/issues/1313
Miniled status tweak https://github.com/seerge/g-helper/issues/1319
2023-09-17 11:49:05 +02:00
Serge
de98588235 Update README.md 2023-09-14 11:26:56 +02:00
Serge
dffb239ea7 MUX switch for Vivobooks / Zenbooks https://github.com/seerge/g-helper/issues/1301 2023-09-13 13:26:35 +02:00
Serge
6a6c1f1455 Merge branch 'main' of https://github.com/seerge/g-helper 2023-09-12 19:31:53 +02:00
Serge
bd3b2647b4 Fixed exception at Fans+Power https://github.com/seerge/g-helper/issues/1303 2023-09-12 19:31:51 +02:00
Serge
cebc42126a Merge pull request #1296 from seerge/l10n_main
New Crowdin updates
2023-09-12 11:10:03 +02:00
Serge
2985b2f31c New translations Strings.resx (Polish) 2023-09-11 21:48:15 +02:00
Serge
335f5b38a5 Hide Calibrate button on not supported models 2023-09-11 19:40:58 +02:00
Serge
4dd9daa95c Version Bump 2023-09-11 14:34:23 +02:00
Serge
10db075ece Custom command arguments https://github.com/seerge/g-helper/issues/1292 2023-09-11 12:03:52 +02:00
Serge
a800eae020 Pre-entered max fan speeds 2023-09-10 12:31:18 +02:00
Serge
eb21fb2020 Backlight init delay 2023-09-09 17:01:02 +02:00
Serge
600e6a9404 Cleanup 2023-09-09 14:27:43 +02:00
Serge
4b0fbcbf10 Cleanup 2023-09-09 13:52:29 +02:00
Serge
215aec34b9 Merge branch 'main' of https://github.com/seerge/g-helper 2023-09-09 13:07:57 +02:00
Serge
9cba686a3c Fan Calibration 2023-09-09 13:07:55 +02:00
Serge
43a7eb8b32 Merge pull request #1284 from seerge/l10n_main
New Crowdin updates
2023-09-09 12:40:55 +02:00
Serge
08eb867ae7 New translations Strings.resx (Lithuanian) 2023-09-09 10:32:25 +02:00
Serge
5c59c34a6c Merge pull request #1278 from seerge/l10n_main
New Crowdin updates
2023-09-09 00:48:26 +02:00
Serge
ae2dae8a97 New translations Strings.resx (Portuguese, Brazilian) 2023-09-08 23:12:31 +02:00
Serge
c06969ba8f New translations Strings.resx (Vietnamese) 2023-09-08 23:12:31 +02:00
Serge
496d55f88b New translations Strings.resx (Chinese Simplified) 2023-09-08 23:12:30 +02:00
Serge
2b16372ec4 New translations Strings.resx (Ukrainian) 2023-09-08 23:12:29 +02:00
Serge
041aa40a6d New translations Strings.resx (Turkish) 2023-09-08 23:12:28 +02:00
Serge
55c1dd7e16 New translations Strings.resx (Portuguese) 2023-09-08 23:12:27 +02:00
Serge
2ec2f669fb New translations Strings.resx (Polish) 2023-09-08 23:12:26 +02:00
Serge
17ea6157a6 New translations Strings.resx (Lithuanian) 2023-09-08 23:12:25 +02:00
Serge
d5bdf180a8 New translations Strings.resx (Korean) 2023-09-08 23:12:24 +02:00
Serge
a7d5ac5de9 New translations Strings.resx (Italian) 2023-09-08 23:12:24 +02:00
Serge
b103623099 New translations Strings.resx (Hungarian) 2023-09-08 23:12:23 +02:00
Serge
751f4d0331 New translations Strings.resx (German) 2023-09-08 23:12:22 +02:00
Serge
1f536d8d84 New translations Strings.resx (Spanish) 2023-09-08 23:12:21 +02:00
Serge
c900121644 New translations Strings.resx (French) 2023-09-08 23:12:20 +02:00
Serge
9ce038fe19 New translations Strings.resx (Romanian) 2023-09-08 23:12:19 +02:00
Serge
1f66038ab9 Version bump 2023-09-08 22:04:41 +02:00
Serge
04d2eb53a2 Merge pull request #1277 from seerge/Fan-Calibration
Fan calibration
2023-09-08 21:45:41 +02:00
Serge
f55a3c0824 Merge pull request #1276 from seerge/l10n_main
New Crowdin updates
2023-09-08 21:45:18 +02:00
Serge
8f0e4431e6 Label 2023-09-08 21:45:17 +02:00
Serge
bff2676b64 Calibrate in turbo mode 2023-09-08 19:47:12 +02:00
Serge
e9e5fe1cc9 Simplification 2023-09-08 19:37:09 +02:00
Serge
e6a78fc8f7 Fan Calibration 2023-09-08 19:32:37 +02:00
Serge
0e3efcf547 Calibration 2023-09-08 19:12:57 +02:00
Serge
5c5b4f297c New translations Strings.resx (Polish) 2023-09-08 19:03:48 +02:00
Serge
6f1c2ce7c1 Merge pull request #1272 from seerge/l10n_main
New Crowdin updates
2023-09-08 13:24:48 +02:00
Serge
e26feb7025 New translations Strings.resx (Chinese Simplified) 2023-09-08 05:33:49 +02:00
Serge
fef0042870 New translations Strings.resx (Chinese Traditional) 2023-09-08 02:51:36 +02:00
Serge
5a1a303ce7 Merge pull request #1270 from seerge/l10n_main
New Crowdin updates
2023-09-07 17:36:23 +02:00
Serge
5849dc0ce9 New translations Strings.resx (Portuguese, Brazilian) 2023-09-07 17:30:25 +02:00
Serge
31ca13692b New translations Strings.resx (Vietnamese) 2023-09-07 17:30:23 +02:00
Serge
49cfbc6235 New translations Strings.resx (Chinese Traditional) 2023-09-07 17:30:22 +02:00
Serge
b577e5ed90 New translations Strings.resx (Chinese Simplified) 2023-09-07 17:30:21 +02:00
Serge
3c9dca0c62 New translations Strings.resx (Ukrainian) 2023-09-07 17:30:20 +02:00
Serge
818b87fe87 New translations Strings.resx (Turkish) 2023-09-07 17:30:19 +02:00
Serge
e177207799 New translations Strings.resx (Portuguese) 2023-09-07 17:30:18 +02:00
Serge
df4cf40a5b New translations Strings.resx (Lithuanian) 2023-09-07 17:30:17 +02:00
Serge
23082d59ba New translations Strings.resx (Korean) 2023-09-07 17:30:16 +02:00
Serge
708170b1ef New translations Strings.resx (Italian) 2023-09-07 17:30:15 +02:00
Serge
3a0131a577 New translations Strings.resx (Hungarian) 2023-09-07 17:30:14 +02:00
Serge
d1f4da5473 New translations Strings.resx (German) 2023-09-07 17:30:13 +02:00
Serge
91967638af New translations Strings.resx (Spanish) 2023-09-07 17:30:12 +02:00
Serge
d9a972f6a9 New translations Strings.resx (French) 2023-09-07 17:30:11 +02:00
Serge
ce4c9bb48c New translations Strings.resx (Romanian) 2023-09-07 17:30:10 +02:00
Serge
26c74fa1df New translations Strings.resx (Polish) 2023-09-07 17:30:09 +02:00
Serge
4ae3fb4e3d Boot Sound 2023-09-07 17:29:35 +02:00
Serge
20e7dd96a1 Cleanup 2023-09-07 17:07:34 +02:00
Serge
d36cd409a4 XGM Config Flag 2023-09-07 15:37:09 +02:00
Serge
082eceed9a Update checker 2023-09-07 13:44:31 +02:00
Serge
46c91d1956 Merge branch 'main' of https://github.com/seerge/g-helper 2023-09-07 10:06:58 +02:00
Serge
edfb829988 XGM activation https://github.com/seerge/g-helper/issues/729 2023-09-07 10:06:56 +02:00
Serge
83cb28e99c Update README.md 2023-09-06 22:11:38 +02:00
Serge
957916bfdf XGM Special Activation 2023-09-06 21:51:09 +02:00
Serge
2f98606a7d XG Mobile tweaks 2023-09-06 19:58:14 +02:00
Serge
c791421c3e Merge pull request #1264 from seerge/G14-2021-Matrix
Anime Matrix tweaks
2023-09-06 19:04:55 +02:00
Serge
fa79a72247 Anime Matrix tweaks 2023-09-06 19:03:27 +02:00
Serge
831f7b8989 Merge branch 'main' of https://github.com/seerge/g-helper 2023-09-06 16:01:20 +02:00
Serge
77800475cb Matrix Clock 2023-09-06 16:01:18 +02:00
Serge
96553a162c Merge pull request #1262 from seerge/l10n_main
New Crowdin updates
2023-09-06 13:56:27 +02:00
Serge
d1e987f4da New translations Strings.resx (Polish) 2023-09-06 13:54:28 +02:00
Serge
a1fb740c27 TUF Backlight for new models https://github.com/seerge/g-helper/issues/1250 2023-09-06 13:50:48 +02:00
Serge
cff47002e1 Matrix memory optimisations 2023-09-05 23:51:14 +02:00
Serge
c34ba9c620 Cleanup 2023-09-05 23:31:18 +02:00
Serge
3da2d042c8 Merge branch 'main' of https://github.com/seerge/g-helper 2023-09-05 21:39:00 +02:00
Serge
b93499c20d Anime Matrix Editor 2023-09-05 21:38:58 +02:00
Serge
feb7f1915e Update README.md 2023-09-04 22:37:53 +02:00
Serge
bd7f494830 Merge pull request #1247 from seerge/l10n_main
New Crowdin updates
2023-09-03 19:07:33 +02:00
Serge
1fc5095a65 New translations Strings.resx (Chinese Traditional) 2023-09-03 19:07:10 +02:00
Serge
920ed5e176 Update README.md 2023-09-03 18:33:26 +02:00
Serge
fce9cddd02 XGM for devices without dGPU https://github.com/seerge/g-helper/issues/1235 2023-09-03 15:53:43 +02:00
Serge
3332bd4b36 Merge branch 'main' of https://github.com/seerge/g-helper 2023-09-03 14:14:55 +02:00
Serge
56289abc36 Allow XGM connection from any dGPU mode for models w/o dGPU https://github.com/seerge/g-helper/issues/1235
Hide Backlight OSD if asus OSD is running
2023-09-03 14:14:54 +02:00
Serge
9be02a102d Merge pull request #1240 from seerge/l10n_main
New Crowdin updates
2023-09-02 17:52:56 +02:00
Serge
e1e94e1118 New translations Strings.resx (Portuguese) 2023-09-02 15:26:19 +02:00
Serge
2ffd08e754 Merge pull request #1236 from IceStormNG/asus-mouse-support
Pugio II (P705) Support
2023-09-02 00:56:42 +02:00
IceStormNG
0378b65763 Added Pugio II (P705) Mouse configuration 2023-09-02 00:54:16 +02:00
IceStormNG
5dd3760e90 Fixed mapping of animation speed values in the UI (how was that bug not found yet?) 2023-09-02 00:53:33 +02:00
IceStormNG
e7eb7fab8a Make low battery warning values configureable per mouse 2023-09-02 00:53:00 +02:00
IceStormNG
ce128adc4f Only open one Mouse settings window and also make it the topmost window. 2023-09-02 00:52:15 +02:00
Serge
a794f8ed5f Single color backlight for keyboard version 22/23 https://github.com/seerge/g-helper/issues/1230 2023-08-31 23:33:44 +02:00
Serge
9d30f2f83e Version bump 2023-08-31 12:09:27 +02:00
Serge
b93f1a385b Arrow lock for DUO https://github.com/seerge/g-helper/issues/1224 2023-08-30 23:49:32 +02:00
Serge
6bb4ba4119 Screenpad hotkey for DUO https://github.com/seerge/g-helper/issues/1215 2023-08-30 14:41:20 +02:00
Serge
178cb04002 Turn off display fix https://github.com/seerge/g-helper/issues/1218
Zephyrus DUO Screenpad hotkey https://github.com/seerge/g-helper/issues/1215
2023-08-30 12:45:07 +02:00
Serge
2d41cd62a8 Clasmshell tooltip https://github.com/seerge/g-helper/issues/1207 2023-08-29 11:48:59 +02:00
Serge
f9e4e89c15 Vivobook backlight control https://github.com/seerge/g-helper/issues/1208 2023-08-29 00:00:55 +02:00
Serge
02717c47be Fan ranges for ancient devices https://github.com/seerge/g-helper/issues/1206 2023-08-28 19:11:32 +02:00
Serge
cc010053b2 Minor tweaks 2023-08-27 13:05:10 +02:00
Serge
9bcc0fccd7 Update README.md 2023-08-24 18:09:20 +02:00
Serge
d8df9b03bf Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-24 15:07:54 +02:00
Serge
abfa2388e4 Cleanup 2023-08-24 15:07:52 +02:00
Serge
670f91efa8 Merge pull request #1170 from Oleg52/force-set-gpu-mode
add force set gpu param
2023-08-24 15:03:15 +02:00
Serge
70d442c409 Merge pull request #1171 from seerge/l10n_main
New Crowdin updates
2023-08-24 15:00:39 +02:00
Serge
5f018fa7b5 New translations Strings.resx (Portuguese) 2023-08-24 14:45:40 +02:00
Oleg Yermolenko
94f0b900de add force set gpu param 2023-08-24 14:06:52 +03:00
Serge
e17ff8fc94 Version Bump 2023-08-24 12:37:18 +02:00
Serge
bd4ee506ac Vivo Mode swap https://github.com/seerge/g-helper/issues/1168 2023-08-24 12:03:44 +02:00
Serge
8c5b224dc2 Vivobook modes swap https://github.com/seerge/g-helper/issues/1168 2023-08-24 12:01:26 +02:00
Serge
f111b5449e Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-24 11:54:11 +02:00
Serge
47f86d222f Minior tweaks 2023-08-24 11:54:09 +02:00
Serge
f9b7073dd7 Merge pull request #1166 from seerge/l10n_main
New Crowdin updates
2023-08-23 19:11:30 +02:00
Serge
a6c11f2ce3 New translations Strings.resx (Portuguese) 2023-08-23 14:01:14 +02:00
Serge
46fad77bac Update README.md 2023-08-23 12:31:14 +02:00
Serge
22a96fcce0 Update README.md 2023-08-23 12:29:37 +02:00
Serge
6df0dc8e9e Merge pull request #1155 from seerge/l10n_main
New Crowdin updates
2023-08-22 18:46:43 +02:00
Serge
ee7c0c6dab New translations Strings.resx (Portuguese) 2023-08-22 15:16:03 +02:00
Serge
6e086da024 New translations Strings.resx (Portuguese) 2023-08-22 14:12:34 +02:00
Serge
292d2a8ebc New translations Strings.resx (Portuguese) 2023-08-22 12:50:32 +02:00
Serge
52e78a8665 Merge pull request #1150 from seerge/l10n_main
New Crowdin updates
2023-08-22 10:49:58 +02:00
Serge
a97bfc2a58 Version bump 2023-08-22 10:39:34 +02:00
Serge
15001d987a Fix Default Curve 2023-08-22 10:37:31 +02:00
Serge
ecbeee82d8 Merge pull request #1153 from charlespeng/fix-default-fan-curve-buffer-size
Fix default fan curve buffer size
2023-08-22 10:28:04 +02:00
Charles Peng
e6c59283c1 Fix default fan curve buffer size 2023-08-22 15:08:30 +08:00
Serge
495b695589 New translations Strings.resx (Polish) 2023-08-22 01:31:34 +02:00
Serge
6ac7d7cc4d New translations Strings.resx (Portuguese) 2023-08-21 23:56:19 +02:00
Serge
0c328b1fda Update README.md 2023-08-21 18:35:01 +02:00
Serge
bd8a670424 Merge pull request #1146 from charlespeng/save-backlight-level-according-to-power-status
Save backlight level according to power status
2023-08-21 12:13:36 +02:00
Charles Peng
5f1139f132 Save backlight level according to power status 2023-08-21 16:04:05 +08:00
Serge
188b01c158 Merge pull request #1142 from seerge/l10n_main
New Crowdin updates
2023-08-21 00:59:32 +02:00
Serge
8307fabe15 New translations Strings.resx (Portuguese) 2023-08-20 19:25:59 +02:00
Serge
cead02eed2 Merge pull request #1141 from seerge/l10n_main
New Crowdin updates
2023-08-20 17:26:42 +02:00
Serge
fabf63655b New translations Strings.resx (Portuguese, Brazilian) 2023-08-20 17:26:04 +02:00
Serge
da2f887c68 New translations Strings.resx (Portuguese, Brazilian) 2023-08-20 17:24:25 +02:00
Serge
26dbd77b05 PT-BR 2023-08-20 17:24:02 +02:00
Serge
63382b748f Merge pull request #1140 from seerge/l10n_main
New Crowdin updates
2023-08-20 17:21:53 +02:00
Serge
1e2a5b0479 New translations Strings.resx (Portuguese, Brazilian) 2023-08-20 17:21:18 +02:00
Serge
341e747f7e New translations Strings.resx (Portuguese) 2023-08-20 17:21:15 +02:00
Serge
348f5a8ea1 Merge pull request #1139 from seerge/l10n_main
New Crowdin updates
2023-08-20 17:17:03 +02:00
Serge
c0b6c444b4 New translations Strings.resx (Portuguese, Brazilian) 2023-08-20 17:16:34 +02:00
Serge
f8d07bad1b New translations Strings.resx (Portuguese) 2023-08-20 17:16:30 +02:00
Serge
a138ebe0e7 New translations Strings.resx (French) 2023-08-20 16:42:09 +02:00
Serge
2260b01480 Merge pull request #1137 from IceStormNG/asus-mouse-support
Support for ROG Harpe Ace Aim Lab Edition (P713).
2023-08-20 15:13:25 +02:00
IceStormNG
9761f10398 Support for Harpe Ace Aim Lab Edition (P713). 2023-08-20 15:08:11 +02:00
Serge
984cb2f53e GPU detection https://github.com/seerge/g-helper/issues/1112 2023-08-19 12:51:33 +02:00
Serge
7c80a02cef Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-19 12:40:32 +02:00
Serge
f545d48179 GPU detection https://github.com/seerge/g-helper/issues/1114
Resetting custom fan curve on XGM on disconnect https://github.com/seerge/g-helper/issues/1123
2023-08-19 12:40:30 +02:00
Serge
07df99aaae Merge pull request #1126 from seerge/l10n_main
New Crowdin updates
2023-08-19 10:31:34 +02:00
Serge
6f60e1af1f Merge pull request #1129 from IceStormNG/main
Added windows based dark mode detection via config override
2023-08-19 10:14:45 +02:00
Serge
e0080ca879 New translations Strings.resx (Italian) 2023-08-19 09:33:58 +02:00
IceStormNG
eaf2483558 Added windows based dark mode detection via config override 2023-08-19 09:06:54 +02:00
Serge
8cac276925 New translations Strings.resx (Vietnamese) 2023-08-19 05:38:10 +02:00
Serge
499c83e3b0 New translations Strings.resx (Vietnamese) 2023-08-19 04:07:58 +02:00
Serge
ba0764aa85 New translations Strings.resx (Spanish) 2023-08-18 20:11:36 +02:00
Serge
53c1ee4c71 New translations Strings.resx (Lithuanian) 2023-08-18 18:51:34 +02:00
Serge
fe1891a2a9 New translations Strings.resx (German) 2023-08-18 18:51:33 +02:00
Serge
0ffb9f11d4 Merge pull request #1122 from seerge/l10n_main
New Crowdin updates
2023-08-18 18:49:52 +02:00
Serge
307cc81f18 Merge pull request #1125 from IceStormNG/main
Dark/Light Mode override
2023-08-18 18:48:44 +02:00
IceStormNG
2384649e09 Better handling for null values. 2023-08-18 18:37:58 +02:00
IceStormNG
4952675749 Light/Dark mode override 2023-08-18 18:36:34 +02:00
Serge
e2596ed9cb Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-18 18:15:14 +02:00
Serge
190786a15a Internal screen detection 2023-08-18 18:15:12 +02:00
Serge
9bcf3f36f8 New translations Strings.resx (Vietnamese) 2023-08-18 16:34:05 +02:00
Serge
26e1ae4d7b New translations Strings.resx (Chinese Traditional) 2023-08-18 16:34:04 +02:00
Serge
98af882970 New translations Strings.resx (Chinese Simplified) 2023-08-18 16:34:03 +02:00
Serge
5835e71947 New translations Strings.resx (Ukrainian) 2023-08-18 16:34:02 +02:00
Serge
f46580bd1b New translations Strings.resx (Turkish) 2023-08-18 16:34:01 +02:00
Serge
a282da6fd7 New translations Strings.resx (Portuguese) 2023-08-18 16:34:00 +02:00
Serge
1420d17413 New translations Strings.resx (Polish) 2023-08-18 16:33:59 +02:00
Serge
b7b6270565 New translations Strings.resx (Lithuanian) 2023-08-18 16:33:58 +02:00
Serge
49eb45749a New translations Strings.resx (Korean) 2023-08-18 16:33:57 +02:00
Serge
ec709f37e8 New translations Strings.resx (Italian) 2023-08-18 16:33:56 +02:00
Serge
615c58ac3c New translations Strings.resx (Hungarian) 2023-08-18 16:33:55 +02:00
Serge
20d698febd New translations Strings.resx (German) 2023-08-18 16:33:54 +02:00
Serge
3bb6bf3228 New translations Strings.resx (Spanish) 2023-08-18 16:33:53 +02:00
Serge
9674f034dd New translations Strings.resx (French) 2023-08-18 16:33:51 +02:00
Serge
f11ed679d9 New translations Strings.resx (Romanian) 2023-08-18 16:33:51 +02:00
Serge
2bb5087a63 Merge pull request #1120 from IceStormNG/asus-mouse-support
Internal improvements for mouse support
2023-08-18 15:20:11 +02:00
IceStormNG
e4aa5f0283 Cleanup of left-overs that shouldn't be there 2023-08-18 15:17:03 +02:00
IceStormNG
18b664a123 Default Profile is 0, so use that if decoding fails to have a sane fallback. 2023-08-18 15:09:12 +02:00
IceStormNG
1d03eb064a Allow subclasses to read whether packet logger is enabled or not 2023-08-18 15:08:40 +02:00
IceStormNG
0ad058ec4a Added feature to read and edit Acceleration and Deceleration values. It seems like only the Harpe Ace really does something with it even though all AimPoint Mice respond to it and store the value. 2023-08-18 15:08:08 +02:00
IceStormNG
18b54886ed Improved packet handling to deal better with empty packets and errors. 2023-08-18 15:05:55 +02:00
IceStormNG
f79a91fb78 Make reportId a constructor variable as some mice might not require 0x00 as most do. 2023-08-18 15:04:49 +02:00
Serge
584755ea93 Cleanup 2023-08-18 12:29:21 +02:00
Serge
3652e4d0ff 50W limit max for Ally 2023-08-18 12:16:19 +02:00
Serge
0069234563 Version bump 2023-08-18 01:23:02 +02:00
Serge
d92a1880ee Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-17 20:28:51 +02:00
Serge
dd72e2b573 Screen detection fix 2023-08-17 20:28:48 +02:00
Serge
10714d1002 Update README.md 2023-08-17 19:58:22 +02:00
Serge
daad1bca53 Merge pull request #1109 from IceStormNG/asus-mouse-support
Support for ROG Keris Wireless Aimpoint (P709_Wireless)
2023-08-17 14:29:17 +02:00
IceStormNG
c82ec8a005 Adds ROG Keris Wireless Aimpoint (P709_Wireless) 2023-08-17 14:25:31 +02:00
IceStormNG
9fbea0a3d3 Fixes crash when DPI was not read yet. 2023-08-17 14:23:55 +02:00
Serge
ed06247206 Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-17 10:52:10 +02:00
Serge
1e7bd816f2 Config overrides https://github.com/seerge/g-helper/issues/1105 2023-08-17 10:52:09 +02:00
Serge
592c4aa07a Update README.md 2023-08-16 14:57:06 +02:00
Serge
59f3aa9af4 Merge pull request #1096 from IceStormNG/main
AniMeMatrix fix for GU604
2023-08-15 23:52:43 +02:00
IceStormNG
8df825e250 AniMeMatrix fix for GU604 2023-08-15 23:27:14 +02:00
Serge
a985cc5bbb Darktheme fix https://github.com/seerge/g-helper/issues/1092
ACPI modes support for Vivobook https://github.com/seerge/g-helper/issues/1089
2023-08-15 13:59:07 +02:00
Serge
bd7985e817 Merge pull request #1093 from seerge/l10n_main
New Crowdin updates
2023-08-15 13:57:22 +02:00
Serge
8706f9f03c New translations Strings.resx (Ukrainian) 2023-08-15 12:53:23 +02:00
Serge
5c6a587745 App dark/light theme detection https://github.com/seerge/g-helper/issues/1092 2023-08-15 12:00:08 +02:00
Serge
de4905f84f Power mode saving https://github.com/seerge/g-helper/issues/1091 2023-08-15 11:21:20 +02:00
Serge
121a9224e9 Power mode saving 2023-08-15 11:19:10 +02:00
Serge
af9626e385 Version bump 2023-08-14 17:32:15 +02:00
Serge
6b3db926fc GPU Aura Mode 2023-08-14 17:19:22 +02:00
Serge
8f8be7a13e Single Color Modes 2023-08-14 16:55:25 +02:00
Serge
12450dbba4 Merge pull request #1084 from seerge/gpu_clock_limit
Gpu clock limit
2023-08-14 16:51:45 +02:00
Serge
4f6de3c6a3 GPU Mode Backlight 2023-08-14 16:48:16 +02:00
Serge
d89420e0f1 Merge pull request #1074 from seerge/l10n_main
New Crowdin updates
2023-08-14 12:06:32 +02:00
Serge
ddc13e0dec New translations Strings.resx (Korean) 2023-08-14 10:07:50 +02:00
Serge
61a3d782e8 New translations Strings.resx (Korean) 2023-08-14 08:37:33 +02:00
Serge
b1c8aa97c8 New translations Strings.resx (Korean) 2023-08-14 07:06:19 +02:00
Serge
3a50ee1784 New translations Strings.resx (Korean) 2023-08-14 05:31:39 +02:00
Serge
a69ce3592f New translations Strings.resx (Polish) 2023-08-13 18:48:23 +02:00
Serge
b49ae96dfe New translations Strings.resx (Polish) 2023-08-13 17:48:00 +02:00
Serge
4c989c9d75 Clock Limit tweaks 2023-08-13 15:48:54 +02:00
Serge
2282e56aad GPU Clock Limiting 2023-08-13 12:53:28 +02:00
Serge
982f2e8e32 Merge pull request #1069 from seerge/l10n_main
New Crowdin updates
2023-08-13 12:14:23 +02:00
Serge
e90f19e3e2 New translations Strings.resx (Chinese Simplified) 2023-08-13 05:08:45 +02:00
Serge
6d6a9c68f2 Merge pull request #1063 from seerge/l10n_main
New Crowdin updates
2023-08-12 17:49:57 +02:00
Serge
8138e44cdd New translations Strings.resx (Chinese Traditional) 2023-08-12 17:16:01 +02:00
Serge
ef788798b7 Version Bump 2023-08-12 16:27:51 +02:00
Serge
07d81e6072 Merge pull request #1062 from seerge/power_modes
Power Mode control
2023-08-12 16:23:24 +02:00
Serge
708e3aa40f Update README.md 2023-08-12 16:22:48 +02:00
Serge
3075e22e1e Power Mode control 2023-08-12 16:04:39 +02:00
Serge
b15109d13e Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-11 22:37:17 +02:00
Serge
c491087a29 Set Balanced plan by default 2023-08-11 22:37:14 +02:00
Serge
cf08ae0789 Update README.md 2023-08-11 22:20:25 +02:00
Serge
624f15be65 Merge pull request #1053 from seerge/l10n_main
New Crowdin updates
2023-08-11 21:58:50 +02:00
Serge
4789d0d782 New translations Strings.resx (Spanish) 2023-08-11 17:36:43 +02:00
Serge
f8fd8a9695 New translations Strings.resx (Italian) 2023-08-11 17:36:42 +02:00
Serge
91cfb8d38c New translations Strings.resx (Lithuanian) 2023-08-11 17:36:41 +02:00
Serge
130d9b73fb Cleanup 2023-08-11 16:01:30 +02:00
Serge
604d24ebbe Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-11 14:27:40 +02:00
Serge
8c3a74a991 FN-Lock Toggle 2023-08-11 14:27:38 +02:00
Serge
ed143a7bba Merge pull request #1048 from seerge/l10n_main
New Crowdin updates
2023-08-11 14:24:29 +02:00
Serge
ac5f1ec1b5 New translations Strings.resx (Vietnamese) 2023-08-11 13:04:07 +02:00
Serge
403db3057c New translations Strings.resx (Ukrainian) 2023-08-11 13:04:06 +02:00
Serge
4dac7b8e9d New translations Strings.resx (Turkish) 2023-08-11 13:04:06 +02:00
Serge
a856f87146 New translations Strings.resx (Portuguese) 2023-08-11 13:04:05 +02:00
Serge
d733101a26 New translations Strings.resx (Polish) 2023-08-11 13:04:04 +02:00
Serge
89741a5e8a New translations Strings.resx (Korean) 2023-08-11 13:04:03 +02:00
Serge
f00026b53a New translations Strings.resx (Hungarian) 2023-08-11 13:04:02 +02:00
Serge
5004358fe2 New translations Strings.resx (German) 2023-08-11 13:04:01 +02:00
Serge
97f6565024 New translations Strings.resx (Spanish) 2023-08-11 13:04:00 +02:00
Serge
f1a69ebad3 New translations Strings.resx (French) 2023-08-11 13:03:59 +02:00
Serge
bf6c3e636e New translations Strings.resx (Romanian) 2023-08-11 13:03:58 +02:00
Serge
a4e98a9fb1 New translations Strings.resx (Italian) 2023-08-11 13:03:57 +02:00
Serge
8b717f856a New translations Strings.resx (Lithuanian) 2023-08-11 13:03:56 +02:00
Serge
4d8f093a4b New translations Strings.resx (Chinese Traditional) 2023-08-11 13:03:55 +02:00
Serge
c699c82bbe New translations Strings.resx (Chinese Simplified) 2023-08-11 13:03:54 +02:00
Serge
5634d75672 Single Color 2023-08-11 12:58:20 +02:00
Serge
cf33b0cc52 Single Color detection 2023-08-11 12:51:03 +02:00
Serge
ddbaeb623b New translations Strings.resx (Lithuanian) 2023-08-11 07:47:01 +02:00
Serge
3efb2e0db9 Version Bump 2023-08-11 00:02:40 +02:00
Serge
8159aec53b New translations Strings.resx (Vietnamese) 2023-08-10 23:57:14 +02:00
Serge
564efb2f32 New translations Strings.resx (Ukrainian) 2023-08-10 23:57:14 +02:00
Serge
4dfcd6a5f9 New translations Strings.resx (Turkish) 2023-08-10 23:57:13 +02:00
Serge
0aa4d873d0 New translations Strings.resx (Portuguese) 2023-08-10 23:57:12 +02:00
Serge
911c01b6b2 New translations Strings.resx (Polish) 2023-08-10 23:57:11 +02:00
Serge
3a5e5fa227 New translations Strings.resx (Korean) 2023-08-10 23:57:10 +02:00
Serge
bf5786aca6 New translations Strings.resx (Hungarian) 2023-08-10 23:57:10 +02:00
Serge
ed065d00dc New translations Strings.resx (German) 2023-08-10 23:57:09 +02:00
Serge
6aa899d989 New translations Strings.resx (Spanish) 2023-08-10 23:57:08 +02:00
Serge
417d156300 New translations Strings.resx (French) 2023-08-10 23:57:07 +02:00
Serge
2471edd82f New translations Strings.resx (Romanian) 2023-08-10 23:57:06 +02:00
Serge
196eda7463 New translations Strings.resx (Italian) 2023-08-10 23:57:05 +02:00
Serge
1d63376c99 New translations Strings.resx (Lithuanian) 2023-08-10 23:57:05 +02:00
Serge
846b05b89e New translations Strings.resx (Chinese Traditional) 2023-08-10 23:57:04 +02:00
Serge
0f3b660824 New translations Strings.resx (Chinese Simplified) 2023-08-10 23:57:03 +02:00
Serge
14565cf8fa Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-10 23:39:48 +02:00
Serge
3d5c0d5ade GPU tweaks 2023-08-10 23:39:45 +02:00
Serge
14e0adaca8 Merge pull request #1044 from seerge/l10n_main
New Crowdin updates
2023-08-10 22:46:36 +02:00
Serge
4365d3b4cb New translations Strings.resx (Italian) 2023-08-10 17:21:13 +02:00
Serge
62ca72e684 New translations Strings.resx (Italian) 2023-08-10 15:32:06 +02:00
Serge
71c0c10f29 New translations Strings.resx (Lithuanian) 2023-08-10 09:44:15 +02:00
Serge
8733ef34d3 New translations Strings.resx (Chinese Traditional) 2023-08-10 05:07:14 +02:00
Serge
ff0a12d104 New translations Strings.resx (Chinese Simplified) 2023-08-10 04:10:42 +02:00
Serge
fe628319b7 Update README.md 2023-08-09 23:37:52 +02:00
Serge
86c11beee6 Update README.md 2023-08-09 23:30:23 +02:00
Serge
e45a72f6c6 Update README.md 2023-08-09 23:28:51 +02:00
Serge
88af725a08 Merge pull request #1039 from seerge/l10n_main
New Crowdin updates
2023-08-09 19:19:31 +02:00
Serge
d3fee87802 Update README.md 2023-08-09 18:49:21 +02:00
Serge
ea61e428da Eco mode GPU fix 2023-08-09 18:43:19 +02:00
Serge
7d5bd42f53 Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-09 18:02:40 +02:00
Serge
78c689eb08 Increased GPU restart delay 2023-08-09 18:02:32 +02:00
Serge
69c2f6ff6e Update README.md 2023-08-09 17:56:36 +02:00
Serge
b59db1432a New translations Strings.resx (Vietnamese) 2023-08-09 15:43:05 +02:00
Serge
4f85cd32aa New translations Strings.resx (Chinese Traditional) 2023-08-09 15:43:04 +02:00
Serge
f0d6d25e93 New translations Strings.resx (Chinese Simplified) 2023-08-09 15:43:03 +02:00
Serge
2d6d4093e9 New translations Strings.resx (Ukrainian) 2023-08-09 15:43:03 +02:00
Serge
8fc167fd57 New translations Strings.resx (Turkish) 2023-08-09 15:43:02 +02:00
Serge
475110af09 New translations Strings.resx (Portuguese) 2023-08-09 15:43:01 +02:00
Serge
3fc4621dc9 New translations Strings.resx (Polish) 2023-08-09 15:43:00 +02:00
Serge
43ddf6585c New translations Strings.resx (Lithuanian) 2023-08-09 15:42:59 +02:00
Serge
61d155d936 New translations Strings.resx (Korean) 2023-08-09 15:42:58 +02:00
Serge
d133162579 New translations Strings.resx (Italian) 2023-08-09 15:42:57 +02:00
Serge
fff4612a8d New translations Strings.resx (Hungarian) 2023-08-09 15:42:55 +02:00
Serge
d6f410c6e6 New translations Strings.resx (German) 2023-08-09 15:42:54 +02:00
Serge
ab11965d50 New translations Strings.resx (Spanish) 2023-08-09 15:42:53 +02:00
Serge
6071f41c33 New translations Strings.resx (French) 2023-08-09 15:42:52 +02:00
Serge
e220ad73b3 Hibernate After control 2023-08-09 14:11:04 +02:00
Serge
f7b9efc3cb Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-09 11:37:24 +02:00
Serge
e19f815498 Re-init anime matrix on wake up https://github.com/seerge/g-helper/issues/1038 2023-08-09 11:37:22 +02:00
Serge
cf95bb1faa Merge pull request #1019 from MrChenYukun/main
Update README.zh-CN.md
2023-08-09 10:32:00 +02:00
Serge
c9b7e4b2af Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-08 17:16:01 +02:00
Serge
1827450f4b Restored RGB for GA503RM https://github.com/seerge/g-helper/discussions/1033, limited max power slider for X13 https://github.com/seerge/g-helper/issues/1029 2023-08-08 17:15:57 +02:00
Serge
a990770ce1 Merge pull request #1025 from seerge/l10n_main
New Crowdin updates
2023-08-08 13:35:44 +02:00
Serge
8bf20a9ed1 New translations Strings.resx (Polish) 2023-08-08 12:12:59 +02:00
Serge
48674dcf90 Accessible controls 2023-08-08 01:03:06 +02:00
Serge
4be50d68da Merge pull request #1016 from seerge/l10n_main
New Crowdin updates
2023-08-07 17:10:22 +02:00
chenyukun1
0c6d31950e unify symbols 2023-08-07 18:44:54 +08:00
chenyukun1
80e8c8fcc2 add FAQ section translation to README.zh-CN.md 2023-08-07 18:39:00 +08:00
Serge
0c7621b798 New translations Strings.resx (Spanish) 2023-08-06 19:53:42 +02:00
Serge
3efe8fb67e Micmute from external keyboards 2023-08-06 18:57:19 +02:00
Serge
5c613af9f2 Cleanup 2023-08-06 16:48:25 +02:00
Serge
e33c13bd19 Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-06 14:49:19 +02:00
Serge
d764a20dc7 TUF brightness fix https://github.com/seerge/g-helper/issues/990 2023-08-06 14:49:17 +02:00
Serge
39a61b5118 Update README.md 2023-08-05 21:51:14 +02:00
Serge
f93594c4ae Universal brightness fix 2023-08-05 21:46:46 +02:00
Serge
3700e4469d Universal brightness fix 2023-08-05 21:26:07 +02:00
Serge
60a154851f Update README.md 2023-08-05 21:21:32 +02:00
Serge
8c621fe6d5 Update README.md 2023-08-05 21:20:23 +02:00
Serge
d01fe2e4b0 Update README.md 2023-08-05 19:05:49 +02:00
Serge
08382a6ec5 Update README.md 2023-08-05 17:06:02 +02:00
Serge
6746916425 Add files via upload 2023-08-05 17:04:21 +02:00
Serge
934ed919e4 Update README.md 2023-08-05 17:02:30 +02:00
Serge
53b0dc343c Update README.md 2023-08-05 16:45:36 +02:00
Serge
c04f26ae00 Update README.md 2023-08-05 16:34:34 +02:00
Serge
3b5587d2e1 Update README.md 2023-08-05 16:29:41 +02:00
Serge
cc48e04530 Merge pull request #1010 from Rakaveli/main
Support for rog keris eva edition mouse
2023-08-05 15:53:02 +02:00
Rakaveli
29f0de9cba wrong wireless flag fixed 2023-08-05 18:11:18 +05:00
Rakaveli
f9a7bd0fe0 Added support for rog keris eva edition mouse 2023-08-05 17:58:22 +05:00
Serge
1c25824bcf Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-05 13:17:52 +02:00
Serge
0fec4c9620 Optimized USB-C fix 2023-08-05 13:17:50 +02:00
Serge
2206411bea Merge pull request #1006 from seerge/l10n_main
New Crowdin updates
2023-08-05 12:43:36 +02:00
Serge
62efe79b7a New translations Strings.resx (Lithuanian) 2023-08-05 10:47:04 +02:00
Serge
327cf0e9dd New translations Strings.resx (Chinese Traditional) 2023-08-05 03:25:59 +02:00
Serge
fa3d9d1f81 - 2023-08-04 22:20:33 +02:00
Serge
cb0996eca9 Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-04 22:05:41 +02:00
Serge
3a5dbbf2ea Bindings 2023-08-04 22:05:39 +02:00
Serge
1062aba6a4 Merge pull request #1001 from seerge/l10n_main
New Crowdin updates
2023-08-04 22:03:13 +02:00
Serge
849faa5029 Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-04 21:59:04 +02:00
Serge
f242e74d07 Empty Default actions for CC / Padles on Ally 2023-08-04 21:59:02 +02:00
Serge
98a0c21355 Bindings fixes 2023-08-04 21:36:44 +02:00
Serge
7e2206d20c New translations Strings.resx (Ukrainian) 2023-08-04 18:27:11 +02:00
Serge
5f05672a3f New translations Strings.resx (Lithuanian) 2023-08-04 18:27:10 +02:00
Serge
ea812ae645 Update README.md 2023-08-04 15:59:26 +02:00
Serge
83eed09f48 Update README.md 2023-08-04 15:40:19 +02:00
Serge
d834264ef2 Merge pull request #992 from seerge/l10n_main
New Crowdin updates
2023-08-04 11:17:42 +02:00
Serge
df0ff6c284 New translations Strings.resx (Chinese Simplified) 2023-08-04 05:26:30 +02:00
Serge
bab796bae1 New translations Strings.resx (German) 2023-08-03 22:31:21 +02:00
Serge
2097a42973 Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-03 21:32:05 +02:00
Serge
458527ce2b Version Bump 2023-08-03 21:32:03 +02:00
Serge
c93f2277cf Universal brightness control 2023-08-03 21:28:05 +02:00
Serge
013bedcf9a Update README.md 2023-08-03 19:39:40 +02:00
Serge
39731fc2e8 Update README.md 2023-08-03 19:37:01 +02:00
Serge
2c1877a321 Update README.md 2023-08-03 19:34:47 +02:00
Serge
31ebbc3d18 Charge label fix 2023-08-03 19:07:30 +02:00
Serge
1447b10992 Merge pull request #985 from seerge/l10n_main
New Crowdin updates
2023-08-03 18:57:57 +02:00
Serge
ffaf3b4ab8 New translations Strings.resx (Polish) 2023-08-03 17:59:14 +02:00
Serge
7ca0dc4a85 New translations Strings.resx (Vietnamese) 2023-08-03 17:59:13 +02:00
Serge
7d3c54ef4c New translations Strings.resx (Chinese Traditional) 2023-08-03 17:59:12 +02:00
Serge
dd55a9ae4b New translations Strings.resx (Chinese Simplified) 2023-08-03 17:59:11 +02:00
Serge
4fff5ddb0a New translations Strings.resx (Ukrainian) 2023-08-03 17:59:10 +02:00
Serge
c657b79422 New translations Strings.resx (Turkish) 2023-08-03 17:59:09 +02:00
Serge
b3a8a9abef New translations Strings.resx (Portuguese) 2023-08-03 17:59:09 +02:00
Serge
6995637aec New translations Strings.resx (Lithuanian) 2023-08-03 17:59:08 +02:00
Serge
0cb0ff12a5 New translations Strings.resx (Korean) 2023-08-03 17:59:07 +02:00
Serge
f582882828 New translations Strings.resx (Italian) 2023-08-03 17:59:06 +02:00
Serge
4b6736c255 New translations Strings.resx (Hungarian) 2023-08-03 17:59:05 +02:00
Serge
246fbc9437 New translations Strings.resx (German) 2023-08-03 17:59:04 +02:00
Serge
e135d58c46 New translations Strings.resx (Spanish) 2023-08-03 17:59:03 +02:00
Serge
9bf4396902 New translations Strings.resx (French) 2023-08-03 17:59:02 +02:00
Serge
60e88c0b45 New translations Strings.resx (Romanian) 2023-08-03 17:59:01 +02:00
Serge
8ec72ec94d Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-03 17:15:49 +02:00
Serge
b808efb502 Added Battery Charge 2023-08-03 17:15:46 +02:00
Serge
92f9333800 Merge pull request #984 from IceStormNG/asus-mouse-support
TUF Gaming M3 support
2023-08-03 17:10:07 +02:00
IceStormNG
3c4a6c5e95 Added TUF Gaming M3 2023-08-03 17:05:26 +02:00
Serge
b22fffe81a Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-03 14:21:14 +02:00
Serge
dcecfbaeda Heatmap cleanup 2023-08-03 14:21:12 +02:00
Serge
2a6d02b1cb Tuf keybindings https://github.com/seerge/g-helper/issues/975 2023-08-03 13:48:24 +02:00
Serge
048f68e2ff UI Tweaks 2023-08-03 13:14:54 +02:00
Serge
ac66642623 Merge pull request #977 from ktemkin/ally_buttons
add as much button support as we can to the RC71 (ROG Ally)
2023-08-03 12:44:46 +02:00
Kate Temkin
8d9999c6c7 add as much button support as we can to the RC71 (ROG Ally) 2023-08-02 20:52:15 -06:00
IceStormNG
977e7cc8c4 Angle tuning limits are now variable and can be overriden per mouse. 2023-08-02 21:44:03 +02:00
Serge
662d5fb414 Aura Fix 2023-08-02 20:44:31 +02:00
Serge
3e0dc9ee7d Heatmap Alt fix 2023-08-02 18:25:27 +02:00
Serge
9cef990edf Revert aura tweak 2023-08-02 15:01:41 +02:00
Serge
f288f1fbf4 Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-02 14:43:17 +02:00
Serge
5561101093 Aura 2023-08-02 14:43:15 +02:00
Serge
a27906b1b7 Merge pull request #970 from seerge/l10n_main
New Crowdin updates
2023-08-02 11:13:13 +02:00
IceStormNG
659a408225 Disable packet logger for release builds. 2023-08-02 10:32:25 +02:00
Serge
3d4fab99b6 New translations Strings.resx (Chinese Simplified) 2023-08-02 04:29:56 +02:00
Serge
7c5f5a9b24 Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-02 00:30:48 +02:00
Serge
e9ae5c9dc8 Brightness fix for TUF506 2023-08-02 00:30:46 +02:00
Serge
33311611ab Fixed heatmap https://github.com/seerge/g-helper/issues/967 2023-08-01 23:54:13 +02:00
Serge
d50ec93e94 Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-01 22:45:39 +02:00
Serge
fbdfdd2f03 Skip custom keybindings https://github.com/seerge/g-helper/issues/960 2023-08-01 22:45:38 +02:00
Serge
cbe05b1a7c Update README.md 2023-08-01 22:30:14 +02:00
Serge
f32f70f145 2 Heatmap modes, one can blink, another one don't work on some devices 2023-08-01 20:24:16 +02:00
Serge
409febb48f Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-01 20:02:36 +02:00
Serge
df132ee196 Aura Fix Attempt 2023-08-01 20:02:34 +02:00
Serge
63b93cab0b Update README.md 2023-08-01 18:31:31 +02:00
Serge
9b1170d364 Update README.md 2023-08-01 14:10:17 +02:00
Serge
0dba6d7a42 Update README.md 2023-08-01 14:09:42 +02:00
Serge
d82deb9860 Fn+Np Enter support https://github.com/seerge/g-helper/issues/963 2023-08-01 13:20:11 +02:00
Serge
3307a95955 Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-01 12:23:26 +02:00
Serge
392b437913 Ctrl+M1/M2 for TUF 2023-08-01 12:23:23 +02:00
Serge
8312d8700e Merge pull request #962 from seerge/l10n_main
New Crowdin updates
2023-08-01 11:20:08 +02:00
Serge
f8110ef661 New translations Strings.resx (Lithuanian) 2023-08-01 08:30:05 +02:00
Serge
4da8f599ab New translations Strings.resx (Ukrainian) 2023-07-31 22:32:17 +02:00
Serge
0aa1e81665 Merge pull request #958 from seerge/l10n_main
New Crowdin updates
2023-07-31 22:21:55 +02:00
Serge
ffe07b42b5 Update README.md 2023-07-31 20:53:34 +02:00
Serge
d7dd4db144 New translations Strings.resx (Polish) 2023-07-31 20:40:23 +02:00
Serge
c81cb85112 New translations Strings.resx (Ukrainian) 2023-07-31 20:40:20 +02:00
Serge
e24f7679a6 New translations Strings.resx (Italian) 2023-07-31 20:40:17 +02:00
Serge
b4b3034e92 New translations Strings.resx (Hungarian) 2023-07-31 20:40:16 +02:00
Serge
9c452a2172 New translations Strings.resx (Spanish) 2023-07-31 20:40:14 +02:00
Serge
86bc0f4e5d Merge pull request #957 from IceStormNG/asus-mouse-support
Adds support for Gladius III Wireless (P706_Wireless).
2023-07-31 18:35:10 +02:00
IceStormNG
8f59ff5e3d Adds support for Gladius III Wireless (P706_Wireless). Renamed the other Gladius III (Wireless Aimpoint) to differentiate them. Fixes a crashbug that can occurs when opening the 2023-07-31 18:21:28 +02:00
Serge
a8db22b22b Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-31 17:51:02 +02:00
Serge
bffd68ead4 Aura Tweaks 2023-07-31 17:50:59 +02:00
Serge
46c0f89632 Merge pull request #955 from seerge/l10n_main
New Crowdin updates
2023-07-31 17:50:07 +02:00
Serge
08c28ed0d0 New translations Strings.resx (Chinese Traditional) 2023-07-31 17:15:58 +02:00
Serge
f24f2dcec3 New translations Strings.resx (Vietnamese) 2023-07-31 16:08:52 +02:00
Serge
f7b2a5b893 New translations Strings.resx (Chinese Simplified) 2023-07-31 16:08:51 +02:00
Serge
da34a5af56 New translations Strings.resx (Turkish) 2023-07-31 16:08:49 +02:00
Serge
fa9d73e629 New translations Strings.resx (Portuguese) 2023-07-31 16:08:48 +02:00
Serge
e1b6e3057d New translations Strings.resx (Lithuanian) 2023-07-31 16:08:47 +02:00
Serge
5bb3b67979 New translations Strings.resx (Korean) 2023-07-31 16:08:46 +02:00
Serge
4046982698 New translations Strings.resx (German) 2023-07-31 16:08:43 +02:00
Serge
4f80d1ced6 New translations Strings.resx (French) 2023-07-31 16:08:41 +02:00
Serge
22799caedc New translations Strings.resx (Romanian) 2023-07-31 16:08:40 +02:00
Serge
107b09c6dc Merge pull request #954 from IceStormNG/asus-mouse-support
Adds Button debounce (button response time) setting for supported mice.
2023-07-31 13:08:20 +02:00
IceStormNG
4f2fdc55ee Adds Button debounce (button response time) setting for supported mice. 2023-07-31 13:05:31 +02:00
Serge
16674b773d Merge pull request #950 from seerge/l10n_main
New Crowdin updates
2023-07-31 13:03:07 +02:00
Serge
1e8bbba24e Merge pull request #953 from IceStormNG/asus-mouse-support
Added Rog Strix Impact II Wireless mouse support.
2023-07-31 13:02:46 +02:00
IceStormNG
b5451cfc21 Added Rog Strix Impact II Wireless mouse support. Hint: Has the same DPI switching Problem as the Keris. 2023-07-31 12:40:40 +02:00
Serge
6507dee307 New translations Strings.resx (Chinese Simplified) 2023-07-31 07:59:33 +02:00
Serge
930b885ac0 Merge pull request #943 from seerge/l10n_main
New Crowdin updates
2023-07-31 01:13:28 +02:00
Serge
22377a4ba9 Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-31 00:08:47 +02:00
Serge
85cd10132e Setting Standard mode prior to going Ultimate 2023-07-31 00:08:45 +02:00
Serge
643e29e25a New translations Strings.resx (Spanish) 2023-07-30 22:02:10 +02:00
Serge
70c41b311c Update bug_report.md 2023-07-30 22:00:47 +02:00
Serge
85880c16c1 Update README.md 2023-07-30 21:59:35 +02:00
Serge
3ff0335985 Restored fallback CPU temp reading method 2023-07-30 21:52:28 +02:00
Serge
3bafaaada0 Aura Fix 3 2023-07-30 20:25:13 +02:00
Serge
584c641b18 Aura Fix 2023-07-30 20:11:41 +02:00
Serge
ca1875d57a Aura Fix 2 2023-07-30 20:08:44 +02:00
Serge
03c45994dc Aura Fix 2023-07-30 20:00:36 +02:00
Serge
f0cbec6ea1 New translations Strings.resx (Lithuanian) 2023-07-30 18:52:02 +02:00
Serge
72fe01bb34 Merge pull request #940 from seerge/l10n_main
New Crowdin updates
2023-07-30 18:26:55 +02:00
Serge
50ae8ae843 Merge pull request #941 from IceStormNG/asus-mouse-support
Mouse support fixes
2023-07-30 17:58:53 +02:00
Serge
14e3d41def New translations Strings.resx (Lithuanian) 2023-07-30 17:52:38 +02:00
Serge
200a2a9eb9 New translations Strings.resx (Polish) 2023-07-30 17:52:37 +02:00
IceStormNG
769c490d21 Give lighting zone table layout a proper name 2023-07-30 17:30:02 +02:00
IceStormNG
0da5002804 Only set new mouse profile if it actually changed. 2023-07-30 17:29:26 +02:00
IceStormNG
5bf579fec5 Imroved handling for mice with only a single lighting zone. 2023-07-30 17:28:08 +02:00
Serge
1038d4479c Merge pull request #939 from seerge/l10n_main
New Crowdin updates
2023-07-30 16:49:07 +02:00
Serge
78d663c62c New translations Strings.resx (German) 2023-07-30 16:48:49 +02:00
Serge
2f96adb204 Merge pull request #938 from IceStormNG/asus-mouse-support
Added Rog Keris Wireless
2023-07-30 16:40:07 +02:00
IceStormNG
e6f9be1bfd Merge branch 'seerge:main' into asus-mouse-support 2023-07-30 16:30:54 +02:00
IceStormNG
297cec6e77 Added Rog Keris Wireless mouse support 2023-07-30 16:30:34 +02:00
Serge
5aca01b21e Z13 rear-window 2023-07-30 16:20:53 +02:00
Serge
3df2193afb Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-30 16:20:19 +02:00
Serge
ed513e4469 Merge pull request #937 from seerge/l10n_main
New Crowdin updates
2023-07-30 15:30:01 +02:00
Serge
c398537a1f Rear window backlight for Z13 2023-07-30 15:28:53 +02:00
Serge
42641f5627 New translations Strings.resx (Vietnamese) 2023-07-30 15:28:28 +02:00
Serge
7b10532650 New translations Strings.resx (Chinese Traditional) 2023-07-30 15:28:27 +02:00
Serge
eb4d4c3d70 New translations Strings.resx (Turkish) 2023-07-30 15:28:26 +02:00
Serge
43c93d6a70 New translations Strings.resx (Portuguese) 2023-07-30 15:28:25 +02:00
Serge
bd26dfb774 New translations Strings.resx (Lithuanian) 2023-07-30 15:28:24 +02:00
Serge
c4aa38c82b New translations Strings.resx (Korean) 2023-07-30 15:28:23 +02:00
Serge
c0597e01b6 New translations Strings.resx (Italian) 2023-07-30 15:28:22 +02:00
Serge
8a6c4e1cee New translations Strings.resx (Hungarian) 2023-07-30 15:28:22 +02:00
Serge
0a77176bcc New translations Strings.resx (German) 2023-07-30 15:28:21 +02:00
Serge
35fc78d757 New translations Strings.resx (Spanish) 2023-07-30 15:28:20 +02:00
Serge
407206309a New translations Strings.resx (French) 2023-07-30 15:28:19 +02:00
Serge
51bc8143dd New translations Strings.resx (Romanian) 2023-07-30 15:28:18 +02:00
Serge
98bac7171a New translations Strings.resx (Chinese Simplified) 2023-07-30 15:28:17 +02:00
Serge
839ef140ff New translations Strings.resx (Ukrainian) 2023-07-30 15:28:16 +02:00
Serge
c3e97caf49 New translations Strings.resx (Polish) 2023-07-30 15:28:15 +02:00
Serge
96319f4dbb Merge pull request #935 from IceStormNG/asus-mouse-support
Auto refresh mice when hovering the button
2023-07-30 14:00:18 +02:00
IceStormNG
cbccd5b641 Merge branch 'seerge:main' into asus-mouse-support 2023-07-30 13:49:27 +02:00
IceStormNG
4742c33466 Auto refresh mice when hovering over their buttons and the mouse is marked as "Not ready". 2023-07-30 13:48:53 +02:00
Serge
81681eb7c4 Merge pull request #934 from IceStormNG/asus-mouse-support
Added Lighting zones for supported mice.
2023-07-30 13:47:41 +02:00
IceStormNG
7c80a32fc2 Added Lighting zones for supported mice. 2023-07-30 13:42:35 +02:00
Serge
9cb2904632 FX707 fix, AuraPower refactoring 2023-07-30 13:32:01 +02:00
Serge
40859a06d0 Merge pull request #933 from IceStormNG/asus-mouse-support
Added support for ASUS TUF Gaming M4 Wireless (P306_Wireless) Mouse
2023-07-30 12:20:37 +02:00
IceStormNG
b00ac96e99 Merge branch 'main' into asus-mouse-support
# Conflicts:
#	app/Peripherals/PeripheralsProvider.cs
2023-07-30 11:56:07 +02:00
IceStormNG
c7c14a9211 byte 3 is only 2 for mice with XY DPIs. 2023-07-30 11:23:38 +02:00
IceStormNG
78cbfc8813 Added TUF M4 Wireless mouse. 2023-07-30 11:18:15 +02:00
IceStormNG
569519aeea Mice with only one DPI per setting read through a different packet 2023-07-30 11:17:21 +02:00
IceStormNG
3cfd7e01ca Renamed Gladius III to Gladius III Aimpoint as there is also a regular Gladius III 2023-07-30 11:16:53 +02:00
IceStormNG
93b6c360d6 Handling of error responses from the mouse and some mice spam packets through the interface. Read again, until you get the matching USB packet or a timeout happens (aka: No data left in the buffer). 2023-07-30 11:10:31 +02:00
IceStormNG
15ba1b8c38 Allow override of "SetDPIProfil" function if needed 2023-07-30 11:09:27 +02:00
IceStormNG
2f35889a61 Measure mouse I/O for diagnostics purpose. 2023-07-30 10:56:01 +02:00
IceStormNG
e0e86962d1 Re-ordered sync 2023-07-30 10:54:33 +02:00
IceStormNG
cdde8afc7e Somem ice have separate X/Y DPI settings (not supported yet, but needs to be read differently from the mouse). 2023-07-30 10:54:09 +02:00
IceStormNG
0af87ecdac Variable DPI Increment as some mice do not use 50 per step but 100. 2023-07-30 10:50:09 +02:00
IceStormNG
4b3d18347c Variable max brightness as some mice do not use 0-100 but 0-4 as brightness values. 2023-07-30 10:49:26 +02:00
IceStormNG
8c2ee50c93 Fixed DPI button colors for mice with no custom DPI colors. 2023-07-30 10:48:31 +02:00
IceStormNG
6d66831770 Simplified exception naming 2023-07-30 10:48:02 +02:00
IceStormNG
e0795dd16b Adjust timeout to lower values. The typical mouse response time is between 1 and 40ms. 300 should be more than enough to fail earlier when the device does not respond. 2023-07-30 10:47:35 +02:00
IceStormNG
b0733d9254 Refresh the mouse only every 20s in background. When GHelper becomes visible, force refresh all devices. 2023-07-30 10:46:10 +02:00
Serge
0d757ef06d Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-29 18:52:57 +02:00
Serge
d19aaf804a Heatmap fix 2023-07-29 18:52:53 +02:00
Serge
41adef4786 Merge pull request #919 from seerge/l10n_main
New Crowdin updates
2023-07-29 00:00:48 +02:00
Serge
9ee3ae7359 New translations Strings.resx (Chinese Simplified) 2023-07-28 17:20:38 +02:00
Serge
bd0f97c5d9 New translations Strings.resx (Chinese Simplified) 2023-07-28 13:59:51 +02:00
Serge
f85644bd2b Merge pull request #913 from seerge/l10n_main
New Crowdin updates
2023-07-28 13:49:38 +02:00
Serge
62f1263951 New translations Strings.resx (Chinese Simplified) 2023-07-28 12:21:04 +02:00
Serge
1fcd0f2b97 New translations Strings.resx (Chinese Simplified) 2023-07-28 10:17:37 +02:00
Serge
73baf548a4 New translations Strings.resx (Chinese Simplified) 2023-07-28 07:51:13 +02:00
Serge
6357a22e38 New translations Strings.resx (Ukrainian) 2023-07-28 02:54:21 +02:00
Serge
3a08ee8d7c New translations Strings.resx (Polish) 2023-07-28 02:54:20 +02:00
Serge
af67684e91 New translations Strings.resx (Polish) 2023-07-28 01:47:09 +02:00
Serge
a877904b46 New translations Strings.resx (Ukrainian) 2023-07-28 00:49:53 +02:00
Serge
f090b4a44e New translations Strings.resx (Polish) 2023-07-28 00:49:52 +02:00
Serge
b3f5a2dfa2 Skip Updates param 2023-07-28 00:06:57 +02:00
Serge
6029660860 Added timer to prevent checking for Mice multiple times in a row 2023-07-28 00:06:01 +02:00
Serge
b304ce22b9 MaxRPM calibration tweaks 2023-07-27 23:50:31 +02:00
Serge
b7910d9f79 Close updates on main window close 2023-07-27 19:46:05 +02:00
Serge
505b3a9e4a Merge pull request #907 from IceStormNG/asus-mouse-support
ASUS Mouse: Resolved deadlocks
2023-07-27 11:21:56 +02:00
IceStormNG
42a346b19e Wait for mouse data before opening the window so the user does not see the form populating data. 2023-07-27 10:41:23 +02:00
IceStormNG
7c42f87751 Check for dispose before trying to Invoke. 2023-07-27 10:40:41 +02:00
IceStormNG
a323bd85ab Mouse refreshes battery again during "ReadSensors". But it does that nonblocking and event driven. 2023-07-27 10:19:17 +02:00
IceStormNG
6e4b5226f5 Do not refresh battery on main thread. 2023-07-27 10:14:06 +02:00
IceStormNG
acaa8bc523 Added missing import for synchronized annotation 2023-07-27 10:13:46 +02:00
IceStormNG
ef31935b24 Improved handling of critical sections to solve deadlocks. 2023-07-27 10:13:24 +02:00
Serge
a9c104d388 Duo keys 2023-07-27 01:41:25 +02:00
Serge
bc9d6be0d6 Deadlock 2023-07-27 00:25:30 +02:00
Serge
d37e06d399 Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-27 00:06:30 +02:00
Serge
d49832ae0f Restoring Aura Call 2023-07-27 00:06:28 +02:00
Serge
f318d09b9b Merge pull request #902 from seerge/l10n_main
New Crowdin updates
2023-07-26 23:58:50 +02:00
Serge
5cd77bb5cc Merge pull request #905 from IceStormNG/clamshell-power-user-settings
Clamshell power user settings
2023-07-26 23:58:27 +02:00
Serge
6b4d18c9c5 Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-26 23:57:22 +02:00
Serge
5830220a3d Performance tweaks 2023-07-26 23:57:20 +02:00
IceStormNG
dfe4bebe58 Only write the setting if it does not exist yet. 2023-07-26 23:19:36 +02:00
IceStormNG
cff2c9af0b Save lid action to config file during startup if user has set it to hibernate or shutdown. 2023-07-26 23:15:28 +02:00
IceStormNG
e16a50f1f2 Safeguard to prevent users from choosing invalid options. 2023-07-26 21:16:30 +02:00
IceStormNG
254e6a8633 Users can set a config option clamshell_default_lid_action to set their desired option when clamshell is not engaged. 2023-07-26 21:14:03 +02:00
IceStormNG
ccb413b2e6 Clamshell mode is now properly off by default 2023-07-26 21:13:24 +02:00
Serge
e2ea79b758 Merge pull request #904 from IceStormNG/asus-mouse-support
Asus mouse fixes
2023-07-26 21:09:30 +02:00
IceStormNG
c1043efc53 Merge branch 'seerge:main' into asus-mouse-support 2023-07-26 21:02:30 +02:00
IceStormNG
6c6c93b378 Better handling of wireless devies that get turned off. The dongle still responds but it sends empty packets. 2023-07-26 21:01:39 +02:00
IceStormNG
f9a8665290 Properly save the new dpi profile so it stays selected also when the mouse is powered off and on again. 2023-07-26 20:46:53 +02:00
IceStormNG
54d7dfe4f8 Safeguards to prevent crash when closing the window in the exact moment the battery is updated. 2023-07-26 20:32:09 +02:00
Serge
eeb53cb483 New translations Strings.resx (Lithuanian) 2023-07-26 20:23:50 +02:00
Serge
b9625f2748 Aura color 2023-07-26 19:26:23 +02:00
Serge
8d41c228e0 Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-26 19:13:12 +02:00
Serge
0146a40244 Heatmap fix 2023-07-26 19:13:10 +02:00
Serge
98534c9b43 Merge pull request #899 from seerge/l10n_main
New Crowdin updates
2023-07-26 18:11:16 +02:00
Serge
67aa2b5af8 New translations Strings.resx (Lithuanian) 2023-07-26 17:47:40 +02:00
IceStormNG
a451125475 Additional logging for dispose and disconnet events. 2023-07-26 15:08:27 +02:00
IceStormNG
fb3ffba343 Log energy settings only as they're supported. 2023-07-26 15:08:03 +02:00
IceStormNG
86ded739d6 Allow enabling packet logger through variable for test builds. 2023-07-26 15:07:39 +02:00
IceStormNG
80e8d54b57 UI fixes for mouse. Only register for events once the view is shown to prevent crashes. Add some additional logging for troubleshooting. Run Mouse sync asynchronously 2023-07-26 15:06:06 +02:00
Serge
f0f05fa1fd New translations Strings.resx (Chinese Traditional) 2023-07-26 09:40:55 +02:00
Serge
b7a4027b41 New translations Strings.resx (Chinese Traditional) 2023-07-26 08:27:58 +02:00
Serge
5f3958ce2b Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-26 00:48:38 +02:00
Serge
dcf4fa5a48 TUF Heatmap fix 2023-07-26 00:48:37 +02:00
Serge
6ace1fdd63 Merge pull request #897 from seerge/l10n_main
New Crowdin updates
2023-07-25 23:55:36 +02:00
Serge
243e307f0a New translations Strings.resx (Spanish) 2023-07-25 23:04:52 +02:00
Serge
8e53a94a13 Merge pull request #896 from seerge/l10n_main
New Crowdin updates
2023-07-25 22:09:53 +02:00
Serge
4f337a7100 New translations Strings.resx (Spanish) 2023-07-25 22:03:23 +02:00
Serge
b1a9bfe68d G14 2020 Extra fix 2023-07-25 22:01:03 +02:00
Serge
c9fc3e788a Div by zero fix 2023-07-25 20:25:07 +02:00
Serge
64e6216fc0 Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-25 19:34:52 +02:00
Serge
dfa3b8d270 UI 2023-07-25 19:34:50 +02:00
Serge
355ad69721 Merge pull request #889 from IceStormNG/asus-mouse-support
USB packet logger only for debug builds or if enabled in config
2023-07-25 19:22:49 +02:00
IceStormNG
a706d447f6 Only do packet logging if config usb_packet_logger is 1 or if it is a debug build. 2023-07-25 19:18:51 +02:00
IceStormNG
834952ca33 Use device correct name for logging 2023-07-25 19:14:40 +02:00
Serge
f8ba867440 Merge pull request #888 from seerge/l10n_main
New Crowdin updates
2023-07-25 18:58:04 +02:00
Serge
19b317d271 New translations Strings.resx (Vietnamese) 2023-07-25 18:57:37 +02:00
Serge
ecbb24a038 New translations Strings.resx (Chinese Traditional) 2023-07-25 18:57:36 +02:00
Serge
1151d314f9 New translations Strings.resx (Chinese Simplified) 2023-07-25 18:57:35 +02:00
Serge
ac43eed1c4 New translations Strings.resx (Ukrainian) 2023-07-25 18:57:34 +02:00
Serge
d554637497 New translations Strings.resx (Turkish) 2023-07-25 18:57:33 +02:00
Serge
25c1da63a7 New translations Strings.resx (Portuguese) 2023-07-25 18:57:32 +02:00
Serge
ded3f3ce54 New translations Strings.resx (Polish) 2023-07-25 18:57:31 +02:00
Serge
39501133c7 New translations Strings.resx (Lithuanian) 2023-07-25 18:57:30 +02:00
Serge
41673c5c7e New translations Strings.resx (Korean) 2023-07-25 18:57:28 +02:00
Serge
b3d2993017 New translations Strings.resx (Italian) 2023-07-25 18:57:27 +02:00
Serge
27f72aeef1 New translations Strings.resx (Hungarian) 2023-07-25 18:57:26 +02:00
Serge
e97bba573a New translations Strings.resx (German) 2023-07-25 18:57:25 +02:00
Serge
8a6a5a55db New translations Strings.resx (Spanish) 2023-07-25 18:57:24 +02:00
Serge
f2b45a0a8d New translations Strings.resx (French) 2023-07-25 18:57:23 +02:00
Serge
91df051c38 New translations Strings.resx (Romanian) 2023-07-25 18:57:22 +02:00
Serge
46871f00c0 MaxRPM for XGM 2023-07-25 18:53:50 +02:00
Serge
7bd2c7ea43 UI 2023-07-25 18:15:06 +02:00
Serge
e909676c2d FN + Nm-Enter binding 2023-07-25 18:03:54 +02:00
Serge
0ed7166059 Merge pull request #887 from IceStormNG/asus-mouse-support
Asus mouse support (at least for 2 mice for now)
2023-07-25 17:46:39 +02:00
IceStormNG
7cdb95f7a4 Remove unnecessary imports 2023-07-25 17:25:31 +02:00
IceStormNG
aeea6e8177 Merge branch 'main' into asus-mouse-support
# Conflicts:
#	app/Settings.Designer.cs
2023-07-25 17:20:45 +02:00
Serge
e67f6b54cb Merge pull request #882 from seerge/l10n_main
New Crowdin updates
2023-07-25 12:05:37 +02:00
Serge
ac6c71252d New translations Strings.resx (Romanian) 2023-07-25 08:16:37 +02:00
Serge
12a962d75d Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-25 01:50:47 +02:00
Serge
fab464feb5 Heatmap 2023-07-25 01:50:46 +02:00
Serge
3fbd956f1c Merge pull request #879 from seerge/l10n_main
New Crowdin updates
2023-07-25 01:22:29 +02:00
Serge
ed4a4a43a1 Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-25 00:09:31 +02:00
Serge
702e6ccb0a Added Heatmap backlight mode 2023-07-25 00:09:30 +02:00
Serge
c533511166 New translations Strings.resx (Romanian) 2023-07-24 22:48:30 +02:00
Serge
0039a6aeef Merge pull request #877 from seerge/l10n_main
New Crowdin updates
2023-07-24 22:35:50 +02:00
Serge
aefd29c459 New translations Strings.resx (Romanian) 2023-07-24 21:45:16 +02:00
IceStormNG
90ba7b6c08 Added more features to be selected and deselected individually. Renamed the P711 to Gladius III. Mouse classes will be named by their product name, not their internal name to find them easier. 2023-07-24 19:19:31 +02:00
IceStormNG
c67f079f30 Merge branch 'main' into asus-mouse-support
# Conflicts:
#	app/Settings.Designer.cs
2023-07-24 18:53:55 +02:00
IceStormNG
fce0801f3b Smaller buttons for the mouse 2023-07-24 18:05:30 +02:00
IceStormNG
f70285c017 Allow DPI changes via text input 2023-07-24 18:04:46 +02:00
Serge
7b4e342f04 UI 2023-07-24 16:45:00 +02:00
IceStormNG
150c2c75d6 Put image to the side to have more space for text 2023-07-24 16:33:23 +02:00
IceStormNG
5c065a3857 Fixed crash if speed is reported as 0. 2023-07-24 16:20:16 +02:00
IceStormNG
e0a517f42f Merge branch 'main' into asus-mouse-support
# Conflicts:
#	app/Settings.Designer.cs
#	app/Settings.cs
2023-07-24 15:41:33 +02:00
IceStormNG
966f9107fb Code re-format 2023-07-24 15:29:56 +02:00
IceStormNG
badbb174cd Also hide the color button if colors cannot be set 2023-07-24 15:29:21 +02:00
IceStormNG
03a942b57e Support for proper "Off" Lighting mode 2023-07-24 15:29:03 +02:00
Serge
4086098f58 Hide Keyboard section for G14 2020 completely 2023-07-24 14:53:09 +02:00
Serge
a9dd06de64 UI 2023-07-24 14:48:04 +02:00
Serge
46cbc26d92 UI 2023-07-24 14:34:14 +02:00
Serge
73f7c9f33e Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-24 14:26:37 +02:00
Serge
ef6de6ad2a UI Re-arrangements 2023-07-24 14:26:35 +02:00
IceStormNG
93ad46a685 Well.. this should've been implemented already. 2023-07-24 14:14:57 +02:00
IceStormNG
4d686b6115 Fixed IDs for P711. It's apparently always mi_00. Even if the ASUS driver lists something else. 2023-07-24 14:14:43 +02:00
IceStormNG
3b5cfe958d Polling rates are fixed index numbers for all mice. 0 is immer 125Hz for example, if the mouse, like the Ckakram, do not support 125Hz, the first valid polling rate is 250Hz = 1. 2023-07-24 14:14:09 +02:00
Serge
132df330a4 Merge pull request #865 from seerge/l10n_main
New Crowdin updates
2023-07-23 22:58:05 +02:00
IceStormNG
217074c640 P711 apparently supports all modes even though Armoury Crate does not list them all (as per OpenRGB) 2023-07-23 20:52:47 +02:00
IceStormNG
6e312111ac Merge branch 'seerge:main' into asus-mouse-support 2023-07-23 20:47:53 +02:00
Serge
99296ebb1c Rear Lightbar support 2023-07-23 20:14:57 +02:00
IceStormNG
f0eadd4628 Show charging in brackets. 2023-07-23 18:58:38 +02:00
IceStormNG
d4b0b484aa Added Gladius III (P711) experimental class. 2023-07-23 18:57:02 +02:00
IceStormNG
6f70b54cd4 Unregister event handlers on close 2023-07-23 18:55:24 +02:00
IceStormNG
3c1b61dc82 This can be simplified to reduce redundant code. 2023-07-23 18:53:21 +02:00
Serge
5240fcc8e7 New translations Strings.resx (Lithuanian) 2023-07-23 18:48:29 +02:00
IceStormNG
65d25917b1 Merge branch 'seerge:main' into asus-mouse-support 2023-07-23 18:38:00 +02:00
IceStormNG
378d81bafe Added UI to change ASUS mouse settings. 2023-07-23 18:37:30 +02:00
IceStormNG
5f29e98955 Fixed lighting decode 2023-07-23 18:30:26 +02:00
IceStormNG
5cb5b8cdaf Make sure to tell the mouse to flush the settings when we changed something 2023-07-23 18:30:07 +02:00
IceStormNG
8e19dcb677 Notify on Battery status update 2023-07-23 18:29:34 +02:00
IceStormNG
e825612396 Disable the button if the mouse is not ready yet. 2023-07-23 17:54:37 +02:00
IceStormNG
117ffd0f62 Various fixes in the protocol. Now it is tested and works (at least with the Chakram X in Dongle mode.) 2023-07-23 17:54:09 +02:00
Serge
5291206cb3 Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-23 17:17:54 +02:00
Serge
2747387847 Fix Aura UI 2023-07-23 17:17:52 +02:00
Serge
bd1a11a15a Update README.md 2023-07-23 14:46:02 +02:00
Serge
c2262c0f89 Moved Aura commands to parallel thread 2023-07-23 14:36:22 +02:00
Serge
88aaf94441 Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-23 13:33:08 +02:00
Serge
20b99810cb Standard mode fix 2023-07-23 13:33:05 +02:00
Serge
7b327a4481 Merge pull request #856 from seerge/l10n_main
New Crowdin updates
2023-07-23 12:39:23 +02:00
IceStormNG
890032a81b Auto-reposition window after resize caused by detection of a new device. 2023-07-23 11:58:15 +02:00
IceStormNG
18384bbddc Added Peripherals Panel to main window (buttons have no function yet... coming soon) 2023-07-23 11:57:44 +02:00
IceStormNG
c1900e75ec Helper function to tint images 2023-07-23 11:55:47 +02:00
IceStormNG
ab2dd4d685 Added mouse icon 2023-07-23 11:54:54 +02:00
IceStormNG
f9f96bd807 Restructured to generic Interface for easier extension. 2023-07-23 11:52:31 +02:00
IceStormNG
df616b486d Register for device listener on startup 2023-07-23 10:55:06 +02:00
IceStormNG
d8b2836819 Improved connect and disconnect handling with better cleanup and less exceptions. 2023-07-23 10:54:37 +02:00
IceStormNG
4ef7f5b4cb Expose Dispose function for overriding 2023-07-23 10:53:59 +02:00
IceStormNG
7dfe830dac Better disconnect handling 2023-07-23 10:53:30 +02:00
Serge
6f40dadfcb New translations Strings.resx (Chinese Simplified) 2023-07-23 09:59:11 +02:00
IceStormNG
86c960e01b Merge branch 'seerge:main' into asus-mouse-support 2023-07-22 22:55:16 +02:00
IceStormNG
f80db2c770 Added ASUS Mouse Control Protocol + Implementation for Chakram X (Dongle and Wired) 2023-07-22 22:51:03 +02:00
IceStormNG
d9cba16218 Added additional logic to the AnimeMatrix USB classes to re-use them. 2023-07-22 22:47:14 +02:00
Serge
a004924a42 Merge 2023-07-22 19:23:36 +02:00
Serge
ef442da885 Merge 2023-07-22 19:23:29 +02:00
Serge
eab2ef695d Hide Unsupported elements in Extra 2023-07-22 19:20:44 +02:00
Serge
0291920a55 Merge pull request #844 from seerge/l10n_main
New Crowdin updates
2023-07-22 11:39:35 +02:00
Serge
633c841d7f New translations Strings.resx (Chinese Traditional) 2023-07-22 01:48:49 +02:00
Serge
f2f4df5693 New translations Strings.resx (Spanish) 2023-07-21 20:47:51 +02:00
Serge
4592d729d3 New translations Strings.resx (Italian) 2023-07-21 18:26:01 +02:00
Serge
8cedcb7b5d Merge pull request #841 from seerge/l10n_main
New Crowdin updates
2023-07-21 18:05:15 +02:00
Serge
37d133bd7c Merge pull request #842 from IceStormNG/clamshell-mode-fixes
Clamshell mode fixes
2023-07-21 15:50:51 +02:00
IceStormNG
3f87730375 Fixed a typo 2023-07-21 15:45:42 +02:00
IceStormNG
d99c3a8301 Assign handler via code so the settings assignment does not trigger the handler 2023-07-21 15:42:40 +02:00
IceStormNG
fbc792cb1d Only instanciate if needed. 2023-07-21 15:40:24 +02:00
IceStormNG
5498bb9398 This name makes more sense as it only checks for requirements 2023-07-21 15:39:23 +02:00
IceStormNG
25f842df9d Only touch power settings if the user checks the box. But always disable the changes back to the defaults when the user unchecks it. 2023-07-21 15:38:26 +02:00
Serge
987ee1c000 New translations Strings.resx (Polish) 2023-07-21 14:46:05 +02:00
Serge
afe760f58d Merge pull request #840 from seerge/l10n_main
New Crowdin updates
2023-07-21 13:00:18 +02:00
Serge
b07f0a09fa New translations Strings.resx (Chinese Simplified) 2023-07-21 12:59:52 +02:00
Serge
2b26791dc0 New translations Strings.resx (Ukrainian) 2023-07-21 12:59:51 +02:00
Serge
8db6939b30 Update README.md 2023-07-21 12:47:21 +02:00
Serge
29bcb810b4 Update release.yml 2023-07-21 11:40:51 +02:00
Serge
62837e0ecc Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-21 11:33:24 +02:00
Serge
e1fb6d27a5 UI Tweaks 2023-07-21 11:33:22 +02:00
Serge
b49ab894ac Merge pull request #837 from seerge/l10n_main
New Crowdin updates
2023-07-21 01:04:45 +02:00
Serge
1166a51e4a New translations Strings.resx (German) 2023-07-20 23:38:07 +02:00
Serge
0e26838eb3 New translations Strings.resx (Spanish) 2023-07-20 22:22:12 +02:00
Serge
c0585156e8 New translations Strings.resx (Lithuanian) 2023-07-20 22:22:11 +02:00
Serge
a358632f41 Battery Health UI 2023-07-20 20:01:03 +02:00
Serge
55a3677a37 Version Bump 2023-07-20 19:36:59 +02:00
Serge
1e89039b02 Battery Health UI changes 2023-07-20 18:08:11 +02:00
Serge
2c0fdb7773 Merge pull request #836 from seerge/l10n_main
New Crowdin updates
2023-07-20 17:09:00 +02:00
Serge
2aedbc7a24 New translations Strings.resx (Vietnamese) 2023-07-20 17:07:27 +02:00
Serge
ea22d910ad New translations Strings.resx (Chinese Traditional) 2023-07-20 17:07:26 +02:00
Serge
90cec227c5 New translations Strings.resx (Chinese Simplified) 2023-07-20 17:07:25 +02:00
Serge
d1f6cb11ee New translations Strings.resx (Ukrainian) 2023-07-20 17:07:24 +02:00
Serge
836ebbeebf New translations Strings.resx (Turkish) 2023-07-20 17:07:23 +02:00
Serge
c13b35ca1e New translations Strings.resx (Portuguese) 2023-07-20 17:07:22 +02:00
Serge
bab99b0006 New translations Strings.resx (Polish) 2023-07-20 17:07:21 +02:00
Serge
cc8c87387a New translations Strings.resx (Korean) 2023-07-20 17:07:19 +02:00
Serge
0bc19a3eaa New translations Strings.resx (Italian) 2023-07-20 17:07:18 +02:00
Serge
716ee5ccf3 New translations Strings.resx (Hungarian) 2023-07-20 17:07:17 +02:00
Serge
8c03980dc9 New translations Strings.resx (German) 2023-07-20 17:07:16 +02:00
Serge
7d5056ac62 New translations Strings.resx (Spanish) 2023-07-20 17:07:15 +02:00
Serge
d2cb5173be New translations Strings.resx (French) 2023-07-20 17:07:14 +02:00
Serge
80d5117345 New translations Strings.resx (Romanian) 2023-07-20 17:07:13 +02:00
Serge
a516ee443d New translations Strings.resx (Lithuanian) 2023-07-20 17:07:13 +02:00
Serge
977208e883 Merge pull request #835 from IceStormNG/battery-health
Added battery health reading to below the battery charge limiter bar.
2023-07-20 16:43:46 +02:00
IceStormNG
fc53159a51 Battery health is now a tooltip similarly to the other tooltips. Is only refreshed once every 15 Minutes at most, and only if the user hovers over the battery panel. 2023-07-20 16:32:42 +02:00
Serge
8b29a89efa Merge pull request #833 from seerge/l10n_main
New Crowdin updates
2023-07-20 15:30:21 +02:00
IceStormNG
584bd155d6 Added battery health reading to below the battery charge limiter bar. 2023-07-20 14:52:17 +02:00
Serge
c81bd65bd5 New translations Strings.resx (German) 2023-07-20 14:48:23 +02:00
Serge
a4b44565ea Fan Scale multiplier 2023-07-20 13:25:44 +02:00
Serge
ca13de2e43 Merge pull request #828 from seerge/l10n_main
New Crowdin updates
2023-07-20 11:52:04 +02:00
Serge
9dbcab6b4e New translations Strings.resx (Spanish) 2023-07-20 10:15:25 +02:00
Serge
76df61092d New translations Strings.resx (French) 2023-07-20 01:38:52 +02:00
Serge
39039b4710 New translations Strings.resx (French) 2023-07-19 23:51:13 +02:00
Serge
acb3ba7589 Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-19 23:43:28 +02:00
Serge
a97ab6dbc8 UI Tweaks 2023-07-19 23:43:26 +02:00
Serge
6be0222f31 Merge pull request #820 from seerge/l10n_main
New Crowdin updates
2023-07-19 22:09:03 +02:00
Serge
1a99771762 Merge pull request #826 from IceStormNG/clamshell-misdetection-nvidia
Prevent the Nvidia Advanced Optimimus "fake" display to be considered an external display.
2023-07-19 20:45:31 +02:00
IceStormNG
283814afa6 Prevent the Nvidia Advanced Optimimus "fake" display to be considered an external display. 2023-07-19 20:38:29 +02:00
Serge
3d81a889a8 New translations Strings.resx (Chinese Traditional) 2023-07-19 17:38:30 +02:00
Serge
a52724fe09 New translations Strings.resx (Ukrainian) 2023-07-19 17:38:29 +02:00
Serge
66839b4836 New translations Strings.resx (Lithuanian) 2023-07-19 17:38:28 +02:00
Serge
526baf41ea New translations Strings.resx (Ukrainian) 2023-07-19 16:20:32 +02:00
Serge
a90bb19f72 New translations Strings.resx (Polish) 2023-07-19 16:20:31 +02:00
Serge
3de3cb0f29 New translations Strings.resx (Italian) 2023-07-19 16:20:30 +02:00
Serge
b607561b14 New translations Strings.resx (German) 2023-07-19 16:20:29 +02:00
Serge
3045151789 New translations Strings.resx (Spanish) 2023-07-19 16:20:28 +02:00
Serge
e7a4537098 Cleanup 2023-07-19 16:17:05 +02:00
Serge
3b6f3488ea Merge pull request #818 from IceStormNG/fix-color-codes
Fixed: Keyboard color cannot be set to white anymore
2023-07-19 16:16:47 +02:00
Serge
19dad2a257 Merge pull request #819 from seerge/l10n_main
New Crowdin updates
2023-07-19 16:14:48 +02:00
Serge
d100b804c3 New translations Strings.resx (German) 2023-07-19 15:07:21 +02:00
Serge
b9aa3ab710 New translations Strings.resx (Spanish) 2023-07-19 15:07:20 +02:00
Serge
c7c25c988f New translations Strings.resx (Lithuanian) 2023-07-19 15:07:19 +02:00
IceStormNG
460e586d67 -1 is a valid color for ToARGB(). In this case it is pure white. Which is not usable anymore with those checks in place. 2023-07-19 14:36:35 +02:00
Serge
6ca5abe547 Merge pull request #816 from seerge/l10n_main
New Crowdin updates
2023-07-19 13:39:30 +02:00
Serge
cbc618c539 New translations Strings.resx (Vietnamese) 2023-07-19 13:18:58 +02:00
Serge
c8f3c99a08 New translations Strings.resx (Chinese Traditional) 2023-07-19 13:18:57 +02:00
Serge
9716bea53b New translations Strings.resx (Chinese Simplified) 2023-07-19 13:18:56 +02:00
Serge
46fec97a0a New translations Strings.resx (Ukrainian) 2023-07-19 13:18:56 +02:00
Serge
06d0ccc32f New translations Strings.resx (Turkish) 2023-07-19 13:18:55 +02:00
Serge
212598b2bc New translations Strings.resx (Portuguese) 2023-07-19 13:18:54 +02:00
Serge
bde2f7ff42 New translations Strings.resx (Polish) 2023-07-19 13:18:53 +02:00
Serge
d794efa4da New translations Strings.resx (Korean) 2023-07-19 13:18:52 +02:00
Serge
a8b2e5f75b New translations Strings.resx (Italian) 2023-07-19 13:18:51 +02:00
Serge
5b8d7a58b3 New translations Strings.resx (Hungarian) 2023-07-19 13:18:50 +02:00
Serge
fba5ad0819 New translations Strings.resx (German) 2023-07-19 13:18:49 +02:00
Serge
0aa5826cf6 New translations Strings.resx (Spanish) 2023-07-19 13:18:48 +02:00
Serge
c6d4ad32aa New translations Strings.resx (French) 2023-07-19 13:18:48 +02:00
Serge
e225c5fdf0 New translations Strings.resx (Romanian) 2023-07-19 13:18:47 +02:00
Serge
328ffcd3ae New translations Strings.resx (Lithuanian) 2023-07-19 13:18:46 +02:00
Serge
bb8d10986b Merge pull request #817 from IceStormNG/clamshell-detection
Automatic Clamshell Mode Toggle
2023-07-19 12:22:22 +02:00
Carsten Braun
595336288a Added automatic toggle for "Lid Action" when external display and power is connected to keep the laptop awake when lid is closed (known as Clamshell Mode). 2023-07-19 11:54:51 +02:00
Serge
3598f5dec8 Improved stop/disable service command 2023-07-19 11:38:06 +02:00
Serge
12da3288b3 New translations Strings.resx (Lithuanian) 2023-07-19 11:33:35 +02:00
Serge
2b8d82b58f AsusCert service fix 2023-07-19 00:31:32 +02:00
Serge
15ae5179f0 Merge pull request #813 from jadonclegg/brightnessControls
Added hotkeys for brightness control.
2023-07-19 00:19:23 +02:00
Jadon Clegg
a84e7c89e4 Merge branch 'seerge:main' into brightnessControls 2023-07-18 15:46:44 -06:00
jadon
9e91d76c97 Removed extra log call 2023-07-18 15:42:00 -06:00
jadon
97e1cd3372 Added hotkeys for using ctrl / shift + vol up / down to control screen / keyboard brightness. 2023-07-18 15:37:25 -06:00
Serge
97cb08a888 Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-18 22:26:17 +02:00
Serge
21048b6aa1 Auto Init Aura 2023-07-18 22:26:15 +02:00
Serge
7d949786ba Update README.md 2023-07-18 22:25:54 +02:00
Serge
55664a7b95 Update README.md 2023-07-18 19:42:25 +02:00
Serge
74ff754e58 Update README.md 2023-07-18 19:37:56 +02:00
Serge
840c07b366 GA402X power limits 2023-07-18 19:36:49 +02:00
Serge
74e67f7a01 Added GA402XV to the list of devices that require fan curve for PPTs 2023-07-18 16:56:54 +02:00
Serge
9f5521bc52 Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-18 15:47:55 +02:00
Serge
1b8de79667 Re-connect to GPU in fans+power 2023-07-18 15:47:53 +02:00
Serge
93936fb32a Merge pull request #806 from seerge/l10n_main
New Crowdin updates
2023-07-18 14:10:25 +02:00
Serge
7e1aef10d7 New translations Strings.resx (Chinese Traditional) 2023-07-18 13:33:05 +02:00
Serge
48ef9172f1 New translations Strings.resx (Chinese Simplified) 2023-07-18 13:33:04 +02:00
Serge
fdd5c3ccd6 New translations Strings.resx (Ukrainian) 2023-07-18 13:33:03 +02:00
Serge
3da3c163d3 Merge pull request #804 from seerge/l10n_main
New Crowdin updates
2023-07-18 12:59:03 +02:00
Serge
001ffbaa90 New translations Strings.resx (Romanian) 2023-07-18 12:35:32 +02:00
Serge
53a592a033 New translations Strings.resx (Hungarian) 2023-07-18 12:35:31 +02:00
Serge
1b2148da25 New translations Strings.resx (Vietnamese) 2023-07-18 12:35:30 +02:00
Serge
da4c08e09e New translations Strings.resx (Chinese Traditional) 2023-07-18 12:35:29 +02:00
Serge
ed86c588de New translations Strings.resx (Chinese Simplified) 2023-07-18 12:35:28 +02:00
Serge
6f310b01a1 New translations Strings.resx (Ukrainian) 2023-07-18 12:35:27 +02:00
Serge
94bf868271 New translations Strings.resx (Turkish) 2023-07-18 12:35:26 +02:00
Serge
2e7201fb37 New translations Strings.resx (Portuguese) 2023-07-18 12:35:25 +02:00
Serge
7172f5440a New translations Strings.resx (Polish) 2023-07-18 12:35:24 +02:00
Serge
f125493e96 New translations Strings.resx (Korean) 2023-07-18 12:35:23 +02:00
Serge
375a37f7d9 New translations Strings.resx (Italian) 2023-07-18 12:35:22 +02:00
Serge
8be1c62e32 New translations Strings.resx (German) 2023-07-18 12:35:21 +02:00
Serge
3eb0546874 New translations Strings.resx (Spanish) 2023-07-18 12:35:20 +02:00
Serge
78d02b9ed8 New translations Strings.resx (French) 2023-07-18 12:35:19 +02:00
Serge
b46e932a0d Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-18 12:33:32 +02:00
Serge
3ce473f78d Added battery charge readings (next to discharge) 2023-07-18 12:33:29 +02:00
Serge
9459778463 New translations Strings.resx (Korean) 2023-07-18 11:59:38 +02:00
Serge
19603d107f Update README.md 2023-07-17 19:24:08 +02:00
Serge
91a507b98d Merge pull request #797 from seerge/l10n_main
New Crowdin updates
2023-07-17 19:13:54 +02:00
Serge
231b90a295 New translations Strings.resx (Chinese Simplified) 2023-07-17 05:06:33 +02:00
Serge
0bd766302b Merge pull request #793 from seerge/l10n_main
New Crowdin updates
2023-07-16 23:44:22 +02:00
Serge
f9f1089d0e New translations Strings.resx (Chinese Traditional) 2023-07-16 18:52:26 +02:00
Serge
b9d7110935 New translations Strings.resx (Polish) 2023-07-16 18:52:26 +02:00
Serge
61716e7336 Merge pull request #792 from seerge/l10n_main
New Crowdin updates
2023-07-16 17:09:36 +02:00
Serge
fecf1cfece Hide UV warning 2023-07-16 17:08:29 +02:00
Serge
a31303624a Removed Undervolting sliders for not supported models 2023-07-16 17:04:15 +02:00
Serge
721aeb7e6a New translations Strings.resx (Romanian) 2023-07-16 14:57:41 +02:00
Serge
b0f2f018eb New translations Strings.resx (Hungarian) 2023-07-16 14:57:40 +02:00
Serge
aed3e3fe32 New translations Strings.resx (Vietnamese) 2023-07-16 14:57:39 +02:00
Serge
1e2e1ddcfb New translations Strings.resx (Chinese Traditional) 2023-07-16 14:57:38 +02:00
Serge
fa33c7f514 New translations Strings.resx (Chinese Simplified) 2023-07-16 14:57:38 +02:00
Serge
13248d18bf New translations Strings.resx (Ukrainian) 2023-07-16 14:57:37 +02:00
Serge
545f584d0d New translations Strings.resx (Turkish) 2023-07-16 14:57:36 +02:00
Serge
86af2535d2 New translations Strings.resx (Portuguese) 2023-07-16 14:57:35 +02:00
Serge
c172654044 New translations Strings.resx (Polish) 2023-07-16 14:57:34 +02:00
Serge
6be351aba3 New translations Strings.resx (Korean) 2023-07-16 14:57:33 +02:00
Serge
443a8a34d4 New translations Strings.resx (Italian) 2023-07-16 14:57:32 +02:00
Serge
ebc63e8b5f New translations Strings.resx (German) 2023-07-16 14:57:31 +02:00
Serge
9638b1468a New translations Strings.resx (Spanish) 2023-07-16 14:57:30 +02:00
Serge
51b1f0ced5 New translations Strings.resx (French) 2023-07-16 14:57:29 +02:00
Serge
e593fa3a76 ScreenPad brightness control 2023-07-16 14:48:21 +02:00
Serge
f419cb8eed Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-15 20:13:02 +02:00
Serge
0ecca82652 Internal screen detection 2023-07-15 20:13:00 +02:00
Serge
5cf10a4aab Merge pull request #784 from seerge/l10n_main
New Crowdin updates
2023-07-15 13:13:41 +02:00
Serge
152a4e04c5 Brightness hotkeys fix 2023-07-15 13:11:38 +02:00
Serge
39d9f9b465 New translations Strings.resx (Chinese Simplified) 2023-07-15 04:20:27 +02:00
Serge
4167096617 New translations Strings.resx (Polish) 2023-07-15 01:37:10 +02:00
Serge
4d8c2b5f6a New translations Strings.resx (Polish) 2023-07-15 00:20:17 +02:00
Serge
e5f0d77d05 Added keyboard backlight init on every startup / wake up 2023-07-14 17:17:06 +02:00
Serge
01d9b6edf4 Removed GU603 from manual mode list 2023-07-14 16:56:50 +02:00
Serge
0aea639baf Fixed services count button / colors 2023-07-14 14:45:33 +02:00
Serge
5cbf292996 Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-14 13:16:28 +02:00
Serge
a6c9f01f46 UI Fixes 2023-07-14 13:16:26 +02:00
Serge
d91a9229e5 Merge pull request #777 from seerge/l10n_main
New Crowdin updates
2023-07-14 12:47:51 +02:00
Serge
a77f859441 New translations Strings.resx (Chinese Simplified) 2023-07-14 10:35:02 +02:00
Serge
e2b2035b08 New translations Strings.resx (Italian) 2023-07-13 23:51:42 +02:00
Serge
837d2ab38e F11 fix 2023-07-13 22:42:36 +02:00
Serge
3ffcc53b58 Version bump 2023-07-13 21:20:56 +02:00
Serge
b538a919ae UI Tweaks 2023-07-13 21:13:18 +02:00
Serge
dece8159d8 Merge pull request #774 from seerge/l10n_main
New Crowdin updates
2023-07-13 15:19:39 +02:00
Serge
edc9dbf77f Improved Screen detection 2023-07-13 15:02:33 +02:00
Serge
9bdd7ef321 New translations Strings.resx (Hungarian) 2023-07-13 14:02:11 +02:00
Serge
a7d9327175 New translations Strings.resx (Polish) 2023-07-13 14:02:10 +02:00
Serge
084e257e90 New translations Strings.resx (Hungarian) 2023-07-13 13:06:20 +02:00
Serge
8623c78f60 New translations Strings.resx (Italian) 2023-07-13 13:06:19 +02:00
Serge
f1bb689842 New translations Strings.resx (Italian) 2023-07-13 11:54:12 +02:00
Serge
2f85b19a2d Merge pull request #770 from seerge/l10n_main
New Crowdin updates
2023-07-13 11:06:26 +02:00
Serge
5ace593833 New translations Strings.resx (Italian) 2023-07-13 10:30:59 +02:00
Serge
f4862c3703 New translations Strings.resx (Vietnamese) 2023-07-13 03:26:53 +02:00
Serge
8299a87130 New translations Strings.resx (Polish) 2023-07-13 02:24:54 +02:00
Serge
be2043d539 New translations Strings.resx (Romanian) 2023-07-13 01:29:00 +02:00
Serge
562a92e6bb New translations Strings.resx (Polish) 2023-07-13 01:28:59 +02:00
Serge
4485fabb4d Merge pull request #767 from seerge/l10n_main
New Crowdin updates
2023-07-13 00:49:52 +02:00
Serge
b13a736643 New translations Strings.resx (Italian) 2023-07-13 00:19:29 +02:00
Serge
97f45810c9 New translations Strings.resx (Hungarian) 2023-07-12 21:08:49 +02:00
Serge
9e89b3f52b New translations Strings.resx (Hungarian) 2023-07-12 20:06:03 +02:00
Serge
45a64f6d2e New translations Strings.resx (Romanian) 2023-07-12 18:16:13 +02:00
Serge
deff61aaa4 New translations Strings.resx (Ukrainian) 2023-07-12 18:16:12 +02:00
Serge
4409a980a4 New translations Strings.resx (Romanian) 2023-07-12 16:43:22 +02:00
Serge
5b30c10e91 New translations Strings.resx (Chinese Simplified) 2023-07-12 14:46:59 +02:00
Serge
03667973d9 New translations Strings.resx (Polish) 2023-07-12 14:46:58 +02:00
Serge
ac4254393b New translations Strings.resx (Italian) 2023-07-12 14:46:57 +02:00
Serge
fc2a7b2b94 Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-12 14:17:44 +02:00
Serge
b8782f264b UI tweaks 2023-07-12 14:17:42 +02:00
Serge
66082eee9f Merge pull request #762 from seerge/l10n_main
New Crowdin updates
2023-07-12 13:48:47 +02:00
Serge
6b52f9e8d1 New translations Strings.resx (Hungarian) 2023-07-12 13:14:40 +02:00
Serge
2f62801cd7 New translations Strings.resx (Polish) 2023-07-12 13:14:40 +02:00
Serge
767f943020 New translations Strings.resx (Polish) 2023-07-12 12:13:04 +02:00
Serge
cd9754190b New translations Strings.resx (Chinese Traditional) 2023-07-12 09:49:01 +02:00
Serge
32e366f1f6 New translations Strings.resx (Chinese Traditional) 2023-07-12 08:51:33 +02:00
Serge
964a630c81 New translations Strings.resx (Chinese Simplified) 2023-07-12 08:51:32 +02:00
Serge
06cdef6b7e New translations Strings.resx (Chinese Simplified) 2023-07-12 07:50:21 +02:00
Serge
1b70bf416c New translations Strings.resx (Chinese Simplified) 2023-07-12 06:16:14 +02:00
Serge
678169ecf1 New translations Strings.resx (Chinese Simplified) 2023-07-12 05:19:13 +02:00
Serge
b1fcbed100 New translations Strings.resx (Chinese Simplified) 2023-07-12 04:04:29 +02:00
Serge
c41bc3bc20 New translations Strings.resx (Chinese Traditional) 2023-07-12 03:06:56 +02:00
Serge
4ce72f3bb3 New translations Strings.resx (Italian) 2023-07-12 00:12:32 +02:00
Serge
7866b10c6d Merge pull request #761 from seerge/l10n_main
New Crowdin updates
2023-07-12 00:07:14 +02:00
Serge
720771a64c New translations Strings.resx (Italian) 2023-07-11 22:56:57 +02:00
Serge
1d381855ba New translations Strings.resx (Italian) 2023-07-11 21:50:39 +02:00
Serge
ae4a452123 Merge pull request #760 from seerge/l10n_main
New Crowdin updates
2023-07-11 20:56:14 +02:00
Serge
ce1680618b New translations Strings.resx (Vietnamese) 2023-07-11 20:55:35 +02:00
Serge
de633936fd New translations Strings.resx (Chinese Traditional) 2023-07-11 20:55:34 +02:00
Serge
0821ef5e5a New translations Strings.resx (Chinese Simplified) 2023-07-11 20:55:33 +02:00
Serge
e3f6127877 New translations Strings.resx (Ukrainian) 2023-07-11 20:55:32 +02:00
Serge
33f32d182c New translations Strings.resx (Turkish) 2023-07-11 20:55:31 +02:00
Serge
db875cac09 New translations Strings.resx (Portuguese) 2023-07-11 20:55:30 +02:00
Serge
5c7bd327c3 New translations Strings.resx (Polish) 2023-07-11 20:55:29 +02:00
Serge
f8c4750682 New translations Strings.resx (Korean) 2023-07-11 20:55:28 +02:00
Serge
1125b0dc4e New translations Strings.resx (Italian) 2023-07-11 20:55:27 +02:00
Serge
47a6162012 New translations Strings.resx (German) 2023-07-11 20:55:27 +02:00
Serge
2a603c7a00 New translations Strings.resx (Spanish) 2023-07-11 20:55:26 +02:00
Serge
5d83c2109c New translations Strings.resx (French) 2023-07-11 20:55:24 +02:00
Serge
9cdcdb7b15 Translations 2023-07-11 20:55:13 +02:00
Serge
229a8e1848 Merge pull request #758 from seerge/l10n_main
New Crowdin updates
2023-07-11 18:56:46 +02:00
Serge
838c9c476e Merge branch 'main' into l10n_main 2023-07-11 18:56:41 +02:00
Serge
3cc36435f0 New translations Strings.resx (Portuguese) 2023-07-11 18:48:38 +02:00
Serge
9e43558298 New translations Strings.resx (Polish) 2023-07-11 18:48:37 +02:00
Serge
8f7e696a3b New translations Strings.resx (Italian) 2023-07-11 18:48:36 +02:00
Serge
1451412dfb New translations Strings.resx (German) 2023-07-11 18:48:35 +02:00
Serge
06519ad986 New translations Strings.resx (Spanish) 2023-07-11 18:48:34 +02:00
Serge
f1c9b41de2 New translations Strings.resx (French) 2023-07-11 18:48:33 +02:00
Serge
1887e5a4b1 New translations Strings.resx (Vietnamese) 2023-07-11 18:41:12 +02:00
Serge
db21159385 New translations Strings.resx (Chinese Traditional) 2023-07-11 18:41:11 +02:00
Serge
7ba74f7b76 New translations Strings.resx (Chinese Simplified) 2023-07-11 18:41:10 +02:00
Serge
a2289c63a6 New translations Strings.resx (Ukrainian) 2023-07-11 18:41:09 +02:00
Serge
2e90a954f0 New translations Strings.resx (Turkish) 2023-07-11 18:41:08 +02:00
Serge
cab1d625ff New translations Strings.resx (Portuguese) 2023-07-11 18:41:07 +02:00
Serge
fbd136f74b New translations Strings.resx (Polish) 2023-07-11 18:41:06 +02:00
Serge
06404d24d9 New translations Strings.resx (Korean) 2023-07-11 18:41:05 +02:00
Serge
8db210b2e0 New translations Strings.resx (Italian) 2023-07-11 18:41:04 +02:00
Serge
1f99a6152c New translations Strings.resx (German) 2023-07-11 18:41:02 +02:00
Serge
9bbbb02ae0 New translations Strings.resx (Spanish) 2023-07-11 18:41:01 +02:00
Serge
5a5498367e New translations Strings.resx (French) 2023-07-11 18:41:00 +02:00
Serge
597723024f Translations 2023-07-11 18:40:46 +02:00
Serge
32a76d0280 New translations Strings.resx (Vietnamese) 2023-07-11 18:26:17 +02:00
Serge
7ad41d2548 New translations Strings.resx (Chinese Traditional) 2023-07-11 18:26:16 +02:00
Serge
a9c8c31461 New translations Strings.resx (Chinese Simplified) 2023-07-11 18:26:15 +02:00
Serge
d465d24333 New translations Strings.resx (Ukrainian) 2023-07-11 18:26:14 +02:00
Serge
decbf6216b New translations Strings.resx (Turkish) 2023-07-11 18:26:13 +02:00
Serge
ab82b66667 New translations Strings.resx (Portuguese) 2023-07-11 18:26:12 +02:00
Serge
8530fadd14 New translations Strings.resx (Polish) 2023-07-11 18:26:11 +02:00
Serge
c26e722411 New translations Strings.resx (Korean) 2023-07-11 18:26:10 +02:00
Serge
957e57f05a New translations Strings.resx (Italian) 2023-07-11 18:26:09 +02:00
Serge
fc1fe4399d New translations Strings.resx (German) 2023-07-11 18:26:08 +02:00
Serge
bed6485b76 New translations Strings.resx (Spanish) 2023-07-11 18:26:07 +02:00
Serge
bc0d769703 New translations Strings.resx (French) 2023-07-11 18:26:06 +02:00
Serge
d96b97dafd New translations Strings.resx (Portuguese, Brazilian) 2023-07-11 18:21:50 +02:00
Serge
0724550f0e New translations Strings.resx (Vietnamese) 2023-07-11 18:21:49 +02:00
Serge
14fb7efd85 New translations Strings.resx (Chinese Traditional) 2023-07-11 18:21:49 +02:00
Serge
bd2a8ad5f5 New translations Strings.resx (Chinese Simplified) 2023-07-11 18:21:48 +02:00
Serge
074f9ffa70 New translations Strings.resx (Ukrainian) 2023-07-11 18:21:47 +02:00
Serge
ed123947b0 New translations Strings.resx (Turkish) 2023-07-11 18:21:46 +02:00
Serge
c0d410cd33 New translations Strings.resx (Polish) 2023-07-11 18:21:45 +02:00
Serge
34cf810804 New translations Strings.resx (Korean) 2023-07-11 18:21:44 +02:00
Serge
79a6a6348e New translations Strings.resx (Italian) 2023-07-11 18:21:43 +02:00
Serge
ea5414d050 New translations Strings.resx (German) 2023-07-11 18:21:42 +02:00
Serge
ec427ab7a5 New translations Strings.resx (Spanish) 2023-07-11 18:21:41 +02:00
Serge
e7a8f21b16 New translations Strings.resx (French) 2023-07-11 18:21:40 +02:00
Serge
a4c8105218 Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-11 18:20:57 +02:00
Serge
9a80e488fa UI Tweaks 2023-07-11 18:20:56 +02:00
Serge
38271ae318 New translations Strings.resx (Portuguese, Brazilian) 2023-07-11 18:19:14 +02:00
Serge
a3c02c0509 New translations Strings.resx (Vietnamese) 2023-07-11 18:19:13 +02:00
Serge
cb38e89569 New translations Strings.resx (Ukrainian) 2023-07-11 18:19:11 +02:00
Serge
d1c696be66 New translations Strings.resx (Turkish) 2023-07-11 18:19:10 +02:00
Serge
a5aa93a93b New translations Strings.resx (Polish) 2023-07-11 18:19:09 +02:00
Serge
2ad7403bf1 New translations Strings.resx (Korean) 2023-07-11 18:19:08 +02:00
Serge
3c0443b2fb New translations Strings.resx (Italian) 2023-07-11 18:19:08 +02:00
Serge
03dea7df17 New translations Strings.resx (German) 2023-07-11 18:19:07 +02:00
Serge
7075ae8e49 New translations Strings.resx (Spanish) 2023-07-11 18:19:06 +02:00
Serge
06b1506aa6 New translations Strings.resx (French) 2023-07-11 18:19:05 +02:00
Serge
078a3dfb55 Update Crowdin configuration file 2023-07-11 18:18:31 +02:00
Serge
a12f27df9c New translations Strings.resx (Portuguese, Brazilian) 2023-07-11 18:15:33 +02:00
Serge
b29a03e90c New translations Strings.resx (Vietnamese) 2023-07-11 18:15:32 +02:00
Serge
45c92fc0cc New translations Strings.resx (Chinese Traditional) 2023-07-11 18:15:31 +02:00
Serge
ad3e79389c New translations Strings.resx (Chinese Simplified) 2023-07-11 18:15:30 +02:00
Serge
39d8b5b8c0 New translations Strings.resx (Ukrainian) 2023-07-11 18:15:29 +02:00
Serge
703b81ed76 New translations Strings.resx (Turkish) 2023-07-11 18:15:29 +02:00
Serge
d5c3e61cb9 New translations Strings.resx (Polish) 2023-07-11 18:15:28 +02:00
Serge
0b2da9dbfc New translations Strings.resx (Korean) 2023-07-11 18:15:27 +02:00
Serge
2fc1c4413a New translations Strings.resx (Italian) 2023-07-11 18:15:26 +02:00
Serge
5048e3e7d4 New translations Strings.resx (German) 2023-07-11 18:15:25 +02:00
Serge
1e49d89397 New translations Strings.resx (Spanish) 2023-07-11 18:15:24 +02:00
Serge
f1ad319149 New translations Strings.resx (French) 2023-07-11 18:15:23 +02:00
Serge
c00d9aa56c Update Crowdin configuration file 2023-07-11 18:15:08 +02:00
115 changed files with 19773 additions and 3047 deletions

View File

@@ -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

View File

@@ -3,6 +3,8 @@ name: Release
on:
release:
types: [ published ]
workflow_dispatch:
permissions:
contents: write
@@ -20,7 +22,7 @@ jobs:
- name: Publish
run: |
dotnet publish app/GHelper.sln --configuration Release --runtime win-x64 -p:PublishSingleFile=true --no-self-contained
powershell Compress-Archive app/bin/x64/Release/net7.0-windows8.0/win-x64/publish/* GHelper.zip
powershell Compress-Archive app/bin/x64/Release/net7.0-windows/win-x64/publish/* GHelper.zip
- name: Upload
env:
GH_TOKEN: ${{ github.token }}

View File

@@ -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,60 @@ 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);
MatrixRotation rotation = (MatrixRotation)AppConfig.Get("matrix_rotation", 0);
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();
if (rotation == MatrixRotation.Planar)
device.GenerateFrame(image, matrixZoom, matrixX, matrixY, matrixQuality);
else
device.GenerateFrameDiagonal(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);
if (rotation == MatrixRotation.Planar)
device.GenerateFrame(image, matrixZoom, matrixX, matrixY, matrixQuality);
else
device.GenerateFrameDiagonal(image, matrixZoom, matrixX, matrixY, matrixQuality);
device.Present();
}
}

View File

@@ -3,7 +3,6 @@
using GHelper.AnimeMatrix.Communication;
using System.Drawing.Drawing2D;
using System.Drawing.Text;
using System.Globalization;
using System.Management;
using System.Text;
@@ -51,6 +50,12 @@ namespace Starlight.AnimeMatrix
}
}
public enum MatrixRotation
{
Planar,
Diagonal
}
internal class AnimeMatrixPacket : Packet
{
public AnimeMatrixPacket(byte[] command)
@@ -77,6 +82,7 @@ namespace Starlight.AnimeMatrix
}
public class AnimeMatrixDevice : Device
{
int UpdatePageLength = 490;
@@ -86,35 +92,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 FullRows = 11;
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;
FullRows = 5;
LedStart = 1;
}
if (model.Contains("GU604"))
@@ -124,14 +131,28 @@ namespace Starlight.AnimeMatrix
MaxColumns = 39;
MaxRows = 92;
LedCount = 1711;
frameShiftX = -5;
UpdatePageLength = 630;
FullRows = 9;
}
_displayBuffer = new byte[LedCount];
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 +196,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 +209,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 +249,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,10 +291,21 @@ 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 SetLedDiagonal(int x, int y, byte color, int deltaX = 0, int deltaY = 0)
{
x += deltaX;
y -= deltaY;
int plX = (x - y) / 2;
int plY = x + y;
SetLedPlanar(plX, plY, color);
}
public void WakeUp()
{
Set(Packet<AnimeMatrixPacket>(Encoding.ASCII.GetBytes("ASUS Tech.Inc.")));
@@ -342,57 +399,77 @@ namespace Starlight.AnimeMatrix
}
public void PresentClock()
private void SetBitmapDiagonal(Bitmap bmp, int deltaX = 0, int deltaY = 0)
{
int second = DateTime.Now.Second;
string time;
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");
if (_model == AnimeType.GA401)
PresentText(time);
else
PresentTextDiagonal(time);
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 > 20)
SetLedDiagonal(x, y, (byte)color, deltaX + (FullRows / 2) + 1, deltaY - (FullRows / 2) - 1);
}
}
}
public void PresentText(string text1, string text2 = "")
private void SetBitmapLinear(Bitmap bmp)
{
using (Bitmap bmp = new Bitmap(MaxColumns * 3, MaxRows))
for (int y = 0; y < bmp.Height; y++)
{
for (int x = 0; x < bmp.Width; x++)
if (x % 2 == y % 2)
{
var pixel = bmp.GetPixel(x, y);
var color = (pixel.R + pixel.G + pixel.B) / 3;
if (color > 20)
SetLedPlanar(x / 2, y, (byte)color);
}
}
}
public void Text(string text, float fontSize = 10, int x = 0, int y = 0)
{
int width = MaxRows - FullRows;
int height = MaxRows - FullRows;
int textHeight, textWidth;
using (Bitmap bmp = new Bitmap(width, height))
{
using (Graphics g = Graphics.FromImage(bmp))
{
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(fonts.Families[0], fontSize, FontStyle.Regular, GraphicsUnit.Pixel))
{
SizeF textSize = g.MeasureString(text1, font);
g.DrawString(text1, font, Brushes.White, (MaxColumns * 3 - textSize.Width) + 3, -4);
SizeF textSize = g.MeasureString(text, font);
textHeight = (int)textSize.Height;
textWidth = (int)textSize.Width;
g.DrawString(text, font, Brushes.White, x, height - y);
}
if (text2.Length > 0)
using (Font font = new Font("Consolas", 18F, GraphicsUnit.Pixel))
{
SizeF textSize = g.MeasureString(text2, font);
g.DrawString(text2, font, Brushes.White, (MaxColumns * 3 - textSize.Width) + 1, 25);
}
}
GenerateFrame(bmp, InterpolationMode.Bicubic);
Present();
}
SetBitmapDiagonal(bmp, (width - textWidth), height);
}
}
public void GenerateFrame(Image image, InterpolationMode interpolation = InterpolationMode.High)
public void PresentClock()
{
string second = (DateTime.Now.Second % 2 == 0) ? ":" : " ";
string time = DateTime.Now.ToString("HH" + second + "mm");
Clear();
Text(time, 15, 0, 25);
Text(DateTime.Now.ToString("yy'. 'MM'. 'dd"), 11.5F, 0, 14);
Present();
}
public void GenerateFrame(Image image, float zoom = 100, int panX = 0, int panY = 0, InterpolationMode quality = InterpolationMode.Default)
{
int width = MaxColumns / 2 * 6;
int height = MaxRows;
@@ -402,99 +479,55 @@ 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)
{
var pixel = bmp.GetPixel(x, y);
var color = (pixel.R + pixel.G + pixel.B) / 3;
if (color < 10) color = 0;
SetLedPlanar(x / 2, y, (byte)color);
}
}
Clear();
SetBitmapLinear(bmp);
}
}
public void SetLedDiagonal(int x, int y, byte color, int delta = 10)
public void GenerateFrameDiagonal(Image image, float zoom = 100, int panX = 0, int panY = 0, InterpolationMode quality = InterpolationMode.Default)
{
//x+=delta;
y -= delta;
int width = MaxRows - FullRows;
int height = MaxRows - FullRows*2;
float scale;
int dx = (x - y) / 2;
int dy = x + y;
SetLedPlanar(dx, dy, 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)
using (Bitmap bmp = new Bitmap(width, height))
{
familyName = fontFamilies[j].Name;
familyList = familyList + familyName;
familyList = familyList + ", ";
}
scale = Math.Min((float)width / (float)image.Width, (float)height / (float)image.Height) * zoom / 100;
int maxX = (int)Math.Sqrt(MaxRows * MaxRows + MaxColumns * MaxColumns);
using (Bitmap bmp = new Bitmap(maxX, MaxRows))
{
using (Graphics g = Graphics.FromImage(bmp))
using (var graph = Graphics.FromImage(bmp))
{
g.CompositingQuality = CompositingQuality.HighQuality;
g.SmoothingMode = SmoothingMode.AntiAlias;
var scaleWidth = (float)(image.Width * scale);
var scaleHeight = (float)(image.Height * scale);
graph.InterpolationMode = quality;
graph.CompositingQuality = CompositingQuality.HighQuality;
graph.SmoothingMode = SmoothingMode.AntiAlias;
graph.DrawImage(image, width - scaleWidth, height - scaleHeight, scaleWidth, scaleHeight);
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);
}
}
Clear();
SetBitmapDiagonal(bmp, -panX, height + panY);
}
Present();
}
private bool IsRowInRange(int row)
{
return (row >= 0 && row < MaxRows);

View File

@@ -6,11 +6,17 @@ namespace GHelper.AnimeMatrix.Communication
{
public abstract class Device : IDisposable
{
private static UsbProvider _usbProvider;
protected UsbProvider? _usbProvider;
private static ushort _vendorId;
private static ushort _productId;
private static int _maxFeatureReportLength;
protected ushort _vendorId;
protected ushort _productId;
protected int _maxFeatureReportLength;
protected Device(ushort vendorId, ushort productId)
{
_vendorId = vendorId;
_productId = productId;
}
protected Device(ushort vendorId, ushort productId, int maxFeatureReportLength)
{
@@ -20,7 +26,17 @@ namespace GHelper.AnimeMatrix.Communication
SetProvider();
}
public void SetProvider()
public ushort VendorID()
{
return _vendorId;
}
public ushort ProductID()
{
return _productId;
}
public virtual void SetProvider()
{
_usbProvider = new WindowsUsbProvider(_vendorId, _productId, _maxFeatureReportLength);
}
@@ -36,7 +52,12 @@ namespace GHelper.AnimeMatrix.Communication
public byte[] Get(Packet packet)
=> _usbProvider?.Get(packet.Data);
public void Dispose()
public void Read(byte[] data)
=> _usbProvider?.Read(data);
public void Write(byte[] data)
=> _usbProvider?.Write(data);
public virtual void Dispose()
{
_usbProvider?.Dispose();
}

View File

@@ -1,6 +1,6 @@
namespace GHelper.AnimeMatrix.Communication.Platform
{
internal abstract class UsbProvider : IDisposable
public abstract class UsbProvider : IDisposable
{
protected ushort VendorID { get; }
protected ushort ProductID { get; }
@@ -13,6 +13,8 @@ namespace GHelper.AnimeMatrix.Communication.Platform
public abstract void Set(byte[] data);
public abstract byte[] Get(byte[] data);
public abstract void Read(byte[] data);
public abstract void Write(byte[] data);
public abstract void Dispose();
}

View File

@@ -8,6 +8,27 @@ namespace GHelper.AnimeMatrix.Communication.Platform
protected HidDevice HidDevice { get; }
protected HidStream HidStream { get; }
public WindowsUsbProvider(ushort vendorId, ushort productId, string path, int timeout = 500) : base(vendorId, productId)
{
try
{
HidDevice = DeviceList.Local.GetHidDevices(vendorId, productId)
.First(x => x.DevicePath.Contains(path));
}
catch
{
throw new IOException("HID device was not found on your machine.");
}
var config = new OpenConfiguration();
config.SetOption(OpenOption.Interruptible, true);
config.SetOption(OpenOption.Exclusive, false);
config.SetOption(OpenOption.Priority, 10);
HidStream = HidDevice.Open(config);
HidStream.ReadTimeout = timeout;
HidStream.WriteTimeout = timeout;
}
public WindowsUsbProvider(ushort vendorId, ushort productId, int maxFeatureReportLength)
: base(vendorId, productId)
{
@@ -53,6 +74,23 @@ namespace GHelper.AnimeMatrix.Communication.Platform
return data;
}
public override void Read(byte[] data)
{
WrapException(() =>
{
HidStream.Read(data);
});
}
public override void Write(byte[] data)
{
WrapException(() =>
{
HidStream.Write(data);
HidStream.Flush();
});
}
public override void Dispose()
{
HidStream.Dispose();

View File

@@ -7,7 +7,10 @@ public static class AppConfig
{
private static string configFile;
private static string? _model;
private static string? _modelShort;
private static string? _bios;
private static Dictionary<string, object> config = new Dictionary<string, object>();
@@ -69,6 +72,34 @@ public static class AppConfig
return _model;
}
public static (string, string) GetBiosAndModel()
{
if (_bios is not null && _modelShort is not null) return (_bios, _modelShort);
using (ManagementObjectSearcher objSearcher = new ManagementObjectSearcher(@"SELECT * FROM Win32_BIOS"))
{
using (ManagementObjectCollection objCollection = objSearcher.Get())
{
foreach (ManagementObject obj in objCollection)
if (obj["SMBIOSBIOSVersion"] is not null)
{
string[] results = obj["SMBIOSBIOSVersion"].ToString().Split(".");
if (results.Length > 1)
{
_modelShort = results[0];
_bios = results[1];
}
else
{
_modelShort = obj["SMBIOSBIOSVersion"].ToString();
}
}
return (_bios, _modelShort);
}
}
}
public static string GetModelShort()
{
string model = GetModel();
@@ -79,7 +110,6 @@ public static class AppConfig
public static bool ContainsModel(string contains)
{
GetModel();
return (_model is not null && _model.ToLower().Contains(contains.ToLower()));
}
@@ -96,8 +126,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)
@@ -105,6 +142,11 @@ public static class AppConfig
return Get(name) == 1;
}
public static bool IsNotFalse(string name)
{
return Get(name) != 0;
}
public static string GetString(string name, string empty = null)
{
if (config.ContainsKey(name))
@@ -142,6 +184,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();
@@ -248,4 +295,155 @@ public static class AppConfig
Set(name + "_" + Modes.GetCurrent(), value);
}
public static bool IsAlly()
{
return ContainsModel("RC71");
}
public static bool NoMKeys()
{
return (ContainsModel("Z13") && !IsARCNM()) ||
ContainsModel("FX706") ||
ContainsModel("FA506") ||
ContainsModel("FX506") ||
ContainsModel("Duo") ||
ContainsModel("FX505");
}
public static bool IsARCNM()
{
return ContainsModel("GZ301VIC");
}
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("FA506IC") || ContainsModel("FX506LU") || ContainsModel("FX506IC") || ContainsModel("FX506LH");
}
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") || ContainsModel("FX517Z") || ContainsModel("FX516P") || ContainsModel("X13");
}
public static bool IsStrix()
{
return ContainsModel("Strix") || ContainsModel("Scar");
}
public static bool IsStrixLimitedRGB()
{
return ContainsModel("G614JV") || ContainsModel("G614JZ") || ContainsModel("G512LI") || ContainsModel("G513RS");
}
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 IsFanScale()
{
if (!ContainsModel("GU604")) return false;
try
{
var (bios, model) = GetBiosAndModel();
return (Int32.Parse(bios) < 312);
} catch
{
return false;
}
}
public static bool IsFanRequired()
{
return ContainsModel("GA402X") || ContainsModel("G513") || ContainsModel("G713R") || ContainsModel("G713P");
}
public static bool IsPowerRequired()
{
return ContainsModel("FX507") || ContainsModel("FX517") || ContainsModel("FX707");
}
public static bool IsGPUFixNeeded()
{
return ContainsModel("GA402X") || ContainsModel("GV302") || ContainsModel("GZ301") || ContainsModel("FX506") || ContainsModel("GU603V") || ContainsModel("GU603Z");
}
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") || IsAlly();
}
public static bool IsHardwareTouchpadToggle()
{
return ContainsModel("FA507");
}
}

View File

@@ -1,4 +1,6 @@
using System.Management;
using GHelper;
using GHelper.USB;
using System.Management;
using System.Runtime.InteropServices;
public enum AsusFan
@@ -55,17 +57,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 GPUXGConnected = 0x00090018;
public const uint GPUXG = 0x00090019;
public const uint GPUMux = 0x00090016;
public const uint GPUMuxVivo = 0x00090026;
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,11 +96,19 @@ 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;
public const int ScreenPadToggle = 0x00050031;
public const int ScreenPadBrightness = 0x00050032;
public const int BootSound = 0x00130022;
public const int Tablet_Notebook = 0;
public const int Tablet_Tablet = 1;
public const int Tablet_Tent = 2;
@@ -106,12 +123,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;
@@ -209,6 +227,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)
@@ -236,7 +267,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);
@@ -257,7 +288,7 @@ public class AsusACPI
}
public int DeviceSet(uint DeviceID, int Status, string logName)
public int DeviceSet(uint DeviceID, int Status, string? logName)
{
byte[] args = new byte[8];
BitConverter.GetBytes((uint)DeviceID).CopyTo(args, 0);
@@ -266,12 +297,14 @@ public class AsusACPI
byte[] status = CallMethod(DEVS, args);
int result = BitConverter.ToInt32(status, 0);
Logger.WriteLine(logName + " = " + Status + " : " + (result == 1 ? "OK" : result));
if (logName is not null)
Logger.WriteLine(logName + " = " + Status + " : " + (result == 1 ? "OK" : result));
return result;
}
public int DeviceSet(uint DeviceID, byte[] Params, string logName)
public int DeviceSet(uint DeviceID, byte[] Params, string? logName)
{
byte[] args = new byte[4 + Params.Length];
BitConverter.GetBytes((uint)DeviceID).CopyTo(args, 0);
@@ -280,7 +313,9 @@ public class AsusACPI
byte[] status = CallMethod(DEVS, args);
int result = BitConverter.ToInt32(status, 0);
Logger.WriteLine(logName + " = " + BitConverter.ToString(Params) + " : " + (result == 1 ? "OK" : result));
if (logName is not null)
Logger.WriteLine(logName + " = " + BitConverter.ToString(Params) + " : " + (result == 1 ? "OK" : result));
return BitConverter.ToInt32(status, 0);
}
@@ -318,6 +353,56 @@ public class AsusACPI
return -1;
}
public int GetFan(AsusFan device)
{
int fan = -1;
switch (device)
{
case AsusFan.GPU:
fan = Program.acpi.DeviceGet(GPU_Fan);
break;
case AsusFan.Mid:
fan = Program.acpi.DeviceGet(Mid_Fan);
break;
default:
fan = Program.acpi.DeviceGet(CPU_Fan);
break;
}
if (fan < 0)
{
fan += 65536;
if (fan <= 0 || fan > 100) fan = -1;
}
return fan;
}
public int SetFanRange(AsusFan device, byte[] curve)
{
if (curve.Length != 16) return -1;
if (curve.All(singleByte => singleByte == 0)) return -1;
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)
{
@@ -327,8 +412,14 @@ public class AsusACPI
int result;
for (int i = 8; i < curve.Length; i++)
curve[i] = Math.Max((byte)0, Math.Min((byte)99, curve[i])); // it seems to be a bug, when some old model's bios can go nuts if fan is set to 100%
int defaultScale = (AppConfig.IsFanScale() && (device == AsusFan.CPU || device == AsusFan.GPU)) ? 130 : 100;
int fanScale = AppConfig.Get("fan_scale", defaultScale);
if (fanScale != 100 && device == AsusFan.CPU) Logger.WriteLine("Custom fan scale: " + fanScale);
// it seems to be a bug, when some old model's bios can go nuts if fan is set to 100%
for (int i = 8; i < curve.Length; i++) curve[i] = (byte)(Math.Max((byte)0, Math.Min((byte)100, curve[i])) * fanScale / 100);
switch (device)
{
@@ -385,7 +476,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;
@@ -452,19 +550,20 @@ public class AsusACPI
DeviceSet(TUF_KB_BRIGHTNESS, param, "TUF Brightness");
}
public void TUFKeyboardRGB(int mode, Color color, int speed)
public void TUFKeyboardRGB(AuraMode mode, Color color, int speed, string? log = "TUF RGB")
{
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, log);
if (result != 1) DeviceSet(TUF_KB2, setting, log);
}

1499
app/AsusMouseSettings.Designer.cs generated Normal file

File diff suppressed because it is too large Load Diff

900
app/AsusMouseSettings.cs Normal file
View File

@@ -0,0 +1,900 @@
using GHelper.Peripherals.Mouse;
using GHelper.UI;
namespace GHelper
{
public partial class AsusMouseSettings : RForm
{
private static Dictionary<LightingMode, string> lightingModeNames = new Dictionary<LightingMode, string>()
{
{ LightingMode.Static,Properties.Strings.AuraStatic},
{ LightingMode.Breathing, Properties.Strings.AuraBreathe},
{ LightingMode.ColorCycle, Properties.Strings.AuraColorCycle},
{ LightingMode.Rainbow, Properties.Strings.AuraRainbow},
{ LightingMode.React, Properties.Strings.AuraReact},
{ LightingMode.Comet, Properties.Strings.AuraComet},
{ LightingMode.BatteryState, Properties.Strings.AuraBatteryState},
{ LightingMode.Off, Properties.Strings.MatrixOff},
};
private List<LightingMode> supportedLightingModes = new List<LightingMode>();
private readonly AsusMouse mouse;
private readonly RButton[] dpiButtons;
private LightingZone visibleZone = LightingZone.All;
private bool updateMouseDPI = true;
public AsusMouseSettings(AsusMouse mouse)
{
this.mouse = mouse;
InitializeComponent();
dpiButtons = new RButton[] { buttonDPI1, buttonDPI2, buttonDPI3, buttonDPI4 };
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;
labelLowBatteryWarning.Text = Properties.Strings.MouseLowBatteryWarning;
labelAutoPowerOff.Text = Properties.Strings.MouseAutoPowerOff;
buttonSync.Text = Properties.Strings.MouseSynchronize;
checkBoxAngleSnapping.Text = Properties.Strings.MouseAngleSnapping;
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();
this.Text = mouse.GetDisplayName();
Shown += AsusMouseSettings_Shown;
FormClosing += AsusMouseSettings_FormClosing;
comboProfile.DropDownClosed += ComboProfile_DropDownClosed;
sliderDPI.ValueChanged += SliderDPI_ValueChanged;
numericUpDownCurrentDPI.ValueChanged += NumericUpDownCurrentDPI_ValueChanged;
sliderDPI.MouseUp += SliderDPI_MouseUp;
sliderDPI.MouseDown += SliderDPI_MouseDown;
buttonDPIColor.Click += ButtonDPIColor_Click;
buttonDPI1.Click += ButtonDPI_Click;
buttonDPI2.Click += ButtonDPI_Click;
buttonDPI3.Click += ButtonDPI_Click;
buttonDPI4.Click += ButtonDPI_Click;
comboBoxPollingRate.DropDownClosed += ComboBoxPollingRate_DropDownClosed;
checkBoxAngleSnapping.CheckedChanged += CheckAngleSnapping_CheckedChanged;
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;
sliderBrightness.MouseUp += SliderBrightness_MouseUp;
comboBoxAnimationSpeed.DropDownClosed += ComboBoxAnimationSpeed_DropDownClosed;
comboBoxAnimationDirection.DropDownClosed += ComboBoxAnimationDirection_DropDownClosed;
checkBoxRandomColor.CheckedChanged += CheckBoxRandomColor_CheckedChanged;
sliderLowBatteryWarning.ValueChanged += SliderLowBatteryWarning_ValueChanged;
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();
});
}
private void ComboProfile_DropDownClosed(object? sender, EventArgs e)
{
if (mouse.Profile == comboProfile.SelectedIndex)
{
return;
}
mouse.SetProfile(comboProfile.SelectedIndex);
RefreshMouseData();
}
private void ComboBoxPollingRate_DropDownClosed(object? sender, EventArgs e)
{
mouse.SetPollingRate(mouse.SupportedPollingrates()[comboBoxPollingRate.SelectedIndex]);
}
private void ButtonDPIColor_Click(object? sender, EventArgs e)
{
ColorDialog colorDlg = new ColorDialog
{
AllowFullOpen = true,
Color = pictureDPIColor.BackColor
};
if (colorDlg.ShowDialog() == DialogResult.OK)
{
AsusMouseDPI dpi = mouse.DpiSettings[mouse.DpiProfile - 1];
dpi.Color = colorDlg.Color;
mouse.SetDPIForProfile(dpi, mouse.DpiProfile);
VisualizeDPIButtons();
VisualizeCurrentDPIProfile();
}
}
private void ButtonDPI_Click(object? sender, EventArgs e)
{
int index = -1;
for (int i = 0; i < dpiButtons.Length; ++i)
{
if (sender == dpiButtons[i])
{
index = i;
break;
}
}
if (index == -1)
{
//huh?
return;
}
mouse.SetDPIProfile(index + 1);
VisualizeDPIButtons();
VisualizeCurrentDPIProfile();
}
private void UpdateLightingSettings(LightingSetting settings, LightingZone zone)
{
mouse.SetLightingSetting(settings, visibleZone);
VisusalizeLightingSettings();
}
private void CheckBoxRandomColor_CheckedChanged(object? sender, EventArgs e)
{
LightingSetting? ls = mouse.LightingSettingForZone(visibleZone);
ls.RandomColor = checkBoxRandomColor.Checked;
UpdateLightingSettings(ls, visibleZone);
}
private void ComboBoxAnimationDirection_DropDownClosed(object? sender, EventArgs e)
{
LightingSetting? ls = mouse.LightingSettingForZone(visibleZone);
ls.AnimationDirection = (AnimationDirection)comboBoxAnimationDirection.SelectedIndex;
UpdateLightingSettings(ls, visibleZone);
}
private void ComboBoxAnimationSpeed_DropDownClosed(object? sender, EventArgs e)
{
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.LightingSettingForZone(visibleZone);
ls.Brightness = sliderBrightness.Value;
UpdateLightingSettings(ls, visibleZone);
}
private void ComboBoxLightingMode_DropDownClosed(object? sender, EventArgs e)
{
if (!mouse.HasRGB())
{
return;
}
LightingMode lm = supportedLightingModes[comboBoxLightingMode.SelectedIndex];
LightingSetting? ls = mouse.LightingSettingForZone(visibleZone);
if (ls.LightingMode == lm)
{
//Nothing to do here.
return;
}
ls.LightingMode = lm;
UpdateLightingSettings(ls, visibleZone);
}
private void ButtonLightingColor_Click(object? sender, EventArgs e)
{
ColorDialog colorDlg = new ColorDialog
{
AllowFullOpen = true,
Color = pictureBoxLightingColor.BackColor
};
if (colorDlg.ShowDialog() == DialogResult.OK)
{
LightingSetting? ls = mouse.LightingSettingForZone(visibleZone);
ls.RGBColor = colorDlg.Color;
UpdateLightingSettings(ls, visibleZone);
}
}
private void SliderLowBatteryWarning_ValueChanged(object? sender, EventArgs e)
{
labelLowBatteryWarningValue.Text = sliderLowBatteryWarning.Value.ToString() + "%";
}
private void SliderLowBatteryWarning_MouseUp(object? sender, MouseEventArgs e)
{
mouse.SetEnergySettings(sliderLowBatteryWarning.Value, mouse.PowerOffSetting);
}
private void ComboBoxAutoPowerOff_DropDownClosed(object? sender, EventArgs e)
{
object? obj = Enum.GetValues(typeof(PowerOffSetting)).GetValue(comboBoxAutoPowerOff.SelectedIndex);
if (obj is null)
{
return;
}
PowerOffSetting pos = (PowerOffSetting)obj;
mouse.SetEnergySettings(mouse.LowBatteryWarning, pos);
}
private void SliderAngleAdjustment_ValueChanged(object? sender, EventArgs e)
{
labelAngleAdjustmentValue.Text = sliderAngleAdjustment.Value.ToString() + "°";
}
private void SliderAngleAdjustment_MouseUp(object? sender, MouseEventArgs e)
{
mouse.SetAngleAdjustment((short)sliderAngleAdjustment.Value);
}
private void ComboBoxLiftOffDistance_DropDownClosed(object? sender, EventArgs e)
{
mouse.SetLiftOffDistance((LiftOffDistance)comboBoxLiftOffDistance.SelectedIndex);
}
private void CheckAngleSnapping_CheckedChanged(object? sender, EventArgs e)
{
mouse.SetAngleSnapping(checkBoxAngleSnapping.Checked);
mouse.SetAngleAdjustment((short)sliderAngleAdjustment.Value);
}
private void SliderDPI_ValueChanged(object? sender, EventArgs e)
{
numericUpDownCurrentDPI.Value = sliderDPI.Value;
UpdateMouseDPISettings();
}
private void NumericUpDownCurrentDPI_ValueChanged(object? sender, EventArgs e)
{
sliderDPI.Value = (int)numericUpDownCurrentDPI.Value;
}
private void SliderDPI_MouseDown(object? sender, MouseEventArgs e)
{
updateMouseDPI = false;
}
private void SliderDPI_MouseUp(object? sender, MouseEventArgs e)
{
updateMouseDPI = true;
UpdateMouseDPISettings();
}
private void UpdateMouseDPISettings()
{
if (!updateMouseDPI)
{
return;
}
AsusMouseDPI dpi = mouse.DpiSettings[mouse.DpiProfile - 1];
dpi.DPI = (uint)sliderDPI.Value;
mouse.SetDPIForProfile(dpi, mouse.DpiProfile);
VisualizeDPIButtons();
VisualizeCurrentDPIProfile();
}
private void Mouse_Disconnect(object? sender, EventArgs e)
{
if (Disposing || IsDisposed)
{
return;
}
//Mouse disconnected. Bye bye.
this.Invoke(delegate
{
this.Close();
});
}
private void RefreshMouseData()
{
mouse.SynchronizeDevice();
Logger.WriteLine(mouse.GetDisplayName() + " (GUI): Mouse data synchronized");
if (!mouse.IsDeviceReady)
{
Logger.WriteLine(mouse.GetDisplayName() + " (GUI): Mouse is not ready. Closing view.");
Mouse_Disconnect(this, EventArgs.Empty);
return;
}
if (Disposing || IsDisposed)
{
return;
}
VisualizeMouseSettings();
VisualizeBatteryState();
}
private void InitMouseCapabilities()
{
for (int i = 0; i < mouse.ProfileCount(); ++i)
{
String prf = Properties.Strings.Profile + " " + (i + 1);
comboProfile.Items.Add(prf);
}
labelMinDPI.Text = mouse.MinDPI().ToString();
labelMaxDPI.Text = mouse.MaxDPI().ToString();
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())
{
buttonDPIColor.Visible = false;
pictureDPIColor.Visible = false;
buttonDPI1.Image = ControlHelper.TintImage(Properties.Resources.lighting_dot_24, Color.Red);
buttonDPI2.Image = ControlHelper.TintImage(Properties.Resources.lighting_dot_24, Color.Purple);
buttonDPI3.Image = ControlHelper.TintImage(Properties.Resources.lighting_dot_24, Color.Blue);
buttonDPI4.Image = ControlHelper.TintImage(Properties.Resources.lighting_dot_24, Color.Green);
buttonDPI1.BorderColor = Color.Red;
buttonDPI2.BorderColor = Color.Purple;
buttonDPI3.BorderColor = Color.Blue;
buttonDPI4.BorderColor = Color.Green;
}
if (mouse.CanSetPollingRate())
{
foreach (PollingRate pr in mouse.SupportedPollingrates())
{
comboBoxPollingRate.Items.Add(mouse.PollingRateDisplayString(pr));
}
}
else
{
panelPollingRate.Visible = false;
}
if (!mouse.HasAngleSnapping())
{
checkBoxAngleSnapping.Visible = false;
}
if (!mouse.HasAngleTuning())
{
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())
{
comboBoxLiftOffDistance.Items.AddRange(new string[] {
Properties.Strings.Low,
Properties.Strings.High,
});
}
else
{
panelLiftOffDistance.Visible = false;
}
if (mouse.DPIProfileCount() < 4)
{
for (int i = 3; i > mouse.DPIProfileCount() - 1; --i)
{
dpiButtons[i].Visible = false;
}
}
if (!mouse.HasBattery())
{
panelBatteryState.Visible = false;
}
if (mouse.HasAutoPowerOff())
{
comboBoxAutoPowerOff.Items.AddRange(new string[]{
" 1 "+ Properties.Strings.Minute,
" 2 "+ Properties.Strings.Minutes,
" 3 "+ Properties.Strings.Minutes,
" 5 "+ Properties.Strings.Minutes,
"10 "+ Properties.Strings.Minutes,
Properties.Strings.Never,
});
}
if (!mouse.HasLowBatteryWarning())
{
labelLowBatteryWarning.Visible = false;
labelLowBatteryWarningValue.Visible = false;
sliderLowBatteryWarning.Visible = false;
}
else
{
sliderLowBatteryWarning.Min = 0;
sliderLowBatteryWarning.Step = mouse.LowBatteryWarningStep();
sliderLowBatteryWarning.Max = mouse.LowBatteryWarningMax();
}
if (!mouse.HasAutoPowerOff() && !mouse.HasLowBatteryWarning())
{
panelEnergy.Visible = false;
}
if (mouse.HasRGB())
{
if (mouse.SupportedLightingZones().Length > 1)
{
buttonLightingZoneLogo.Visible = mouse.SupportedLightingZones().Contains(LightingZone.Logo);
buttonLightingZoneScroll.Visible = mouse.SupportedLightingZones().Contains(LightingZone.Scrollwheel);
buttonLightingZoneUnderglow.Visible = mouse.SupportedLightingZones().Contains(LightingZone.Underglow);
buttonLightingZoneDock.Visible = mouse.SupportedLightingZones().Contains(LightingZone.Dock);
}
else
{
buttonLightingZoneLogo.Visible = false;
buttonLightingZoneScroll.Visible = false;
buttonLightingZoneUnderglow.Visible = false;
buttonLightingZoneDock.Visible = false;
}
sliderBrightness.Max = mouse.MaxBrightness();
InitLightingModes();
comboBoxAnimationDirection.Items.AddRange(new string[] {
Properties.Strings.AuraClockwise,
Properties.Strings.AuraCounterClockwise,
});
comboBoxAnimationSpeed.Items.AddRange(new string[] {
Properties.Strings.AuraSlow,
Properties.Strings.AuraNormal,
Properties.Strings.AuraFast
});
}
else
{
panelLighting.Visible = false;
}
}
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()
{
if (mouse.Profile < comboProfile.Items.Count)
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();
if (mouse.CanSetPollingRate())
{
int idx = mouse.PollingRateIndex(mouse.PollingRate);
if (idx == -1)
{
return;
}
comboBoxPollingRate.SelectedIndex = idx;
}
if (mouse.HasAngleSnapping())
{
checkBoxAngleSnapping.Checked = mouse.AngleSnapping;
}
if (mouse.HasAngleTuning())
{
sliderAngleAdjustment.Value = mouse.AngleAdjustmentDegrees;
}
if (mouse.HasAutoPowerOff())
{
if (mouse.PowerOffSetting == PowerOffSetting.Never)
{
comboBoxAutoPowerOff.SelectedIndex = comboBoxAutoPowerOff.Items.Count - 1;
}
else
{
comboBoxAutoPowerOff.SelectedIndex = (int)mouse.PowerOffSetting;
}
}
if (mouse.HasLowBatteryWarning())
{
sliderLowBatteryWarning.Value = mouse.LowBatteryWarning;
}
if (mouse.HasLiftOffSetting())
{
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()
{
if (!mouse.HasBattery())
{
return;
}
labelBatteryState.Text = mouse.Battery + "%";
labelChargingState.Visible = mouse.Charging;
if (mouse.Charging)
{
pictureBoxBatteryState.BackgroundImage = ControlHelper.TintImage(Properties.Resources.icons8_ladende_batterie_48, foreMain);
}
else
{
pictureBoxBatteryState.BackgroundImage = ControlHelper.TintImage(Properties.Resources.icons8_batterie_voll_geladen_48, foreMain);
}
}
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())
{
return;
}
VisusalizeLightingZones();
LightingSetting? ls = mouse.LightingSettingForZone(visibleZone);
if (ls is null)
{
//Lighting settings not loaded?
return;
}
sliderBrightness.Value = ls.Brightness;
checkBoxRandomColor.Visible = mouse.SupportsRandomColor(ls.LightingMode);
pictureBoxLightingColor.Visible = mouse.SupportsColorSetting(ls.LightingMode);
buttonLightingColor.Visible = mouse.SupportsColorSetting(ls.LightingMode);
comboBoxAnimationSpeed.Visible = mouse.SupportsAnimationSpeed(ls.LightingMode);
labelAnimationSpeed.Visible = mouse.SupportsAnimationSpeed(ls.LightingMode);
comboBoxAnimationDirection.Visible = mouse.SupportsAnimationDirection(ls.LightingMode);
labelAnimationDirection.Visible = mouse.SupportsAnimationDirection(ls.LightingMode);
comboBoxLightingMode.SelectedIndex = supportedLightingModes.IndexOf(ls.LightingMode);
if (mouse.SupportsRandomColor(ls.LightingMode))
{
checkBoxRandomColor.Checked = ls.RandomColor;
buttonLightingColor.Visible = !ls.RandomColor;
}
if (ls.RandomColor && mouse.SupportsRandomColor(ls.LightingMode))
pictureBoxLightingColor.BackColor = Color.Transparent;
else
pictureBoxLightingColor.BackColor = ls.RGBColor;
//0x09 => 0
//0x07 => 1
//0x05 => 2
comboBoxAnimationSpeed.SelectedIndex = 2 - ((((int)ls.AnimationSpeed) - 5) / 2);
comboBoxAnimationDirection.SelectedIndex = (int)ls.AnimationDirection;
}
private void VisualizeDPIButtons()
{
for (int i = 0; i < mouse.DPIProfileCount() && i < 4; ++i)
{
AsusMouseDPI dpi = mouse.DpiSettings[i];
if (dpi is null)
{
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;
}
private void AsusMouseSettings_Shown(object? sender, EventArgs e)
{
if (Height > Program.settingsForm.Height)
{
Top = Program.settingsForm.Top + Program.settingsForm.Height - Height;
}
else
{
Top = Program.settingsForm.Top;
}
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)
{
RefreshMouseData();
}
}
}

120
app/AsusMouseSettings.resx Normal file
View 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>

View File

@@ -1,427 +0,0 @@
using HidLibrary;
using System.Text;
namespace GHelper
{
[Flags]
public enum AuraDev19b6 : uint
{
BootLogo = 1,
BootKeyb = 1 << 1,
AwakeLogo = 1 << 2,
AwakeKeyb = 1 << 3,
SleepLogo = 1 << 4,
SleepKeyb = 1 << 5,
ShutdownLogo = 1 << 6,
ShutdownKeyb = 1 << 7,
BootBar = 1u << (7 + 2),
AwakeBar = 1u << (7 + 3),
SleepBar = 1u << (7 + 4),
ShutdownBar = 1u << (7 + 5),
BootLid = 1u << (15 + 1),
AwakeLid = 1u << (15 + 2),
SleepLid = 1u << (15 + 3),
ShutdownLid = 1u << (15 + 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) };
}
public static ushort BitOr(this AuraDev19b6 self, AuraDev19b6 rhs)
{
return (ushort)(self | rhs);
}
public static ushort BitAnd(this AuraDev19b6 self, AuraDev19b6 rhs)
{
return (ushort)(self & rhs);
}
}
public static class AsusUSB
{
public const int ASUS_ID = 0x0b05;
public const byte INPUT_HID_ID = 0x5a;
public const byte AURA_HID_ID = 0x5d;
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_INIT4 = Encoding.ASCII.GetBytes("^ASUS Tech.Inc.");
public static readonly byte[] LED_INIT5 = new byte[] { 0x5e, 0x05, 0x20, 0x31, 0, 0x08 };
static byte[] MESSAGE_SET = { AURA_HID_ID, 0xb5, 0, 0, 0 };
static byte[] MESSAGE_APPLY = { AURA_HID_ID, 0xb4 };
static int[] deviceIds = { 0x1a30, 0x1854, 0x1869, 0x1866, 0x19b6, 0x1822, 0x1837, 0x1854, 0x184a, 0x183d, 0x8502, 0x1807, 0x17e0, 0x18c6, 0x1abe };
private static int mode = 0;
private static int speed = 1;
public static Color Color1 = Color.White;
public static Color Color2 = Color.Black;
public static Dictionary<int, string> GetSpeeds()
{
return new Dictionary<int, string>
{
{ 0, Properties.Strings.AuraSlow },
{ 1, Properties.Strings.AuraNormal },
{ 2, Properties.Strings.AuraFast }
};
}
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 },
};
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" },
};
public static Dictionary<int, string> GetModes()
{
if (AppConfig.ContainsModel("TUF"))
{
_modes.Remove(3);
}
if (AppConfig.ContainsModel("401") || AppConfig.ContainsModel("X13"))
{
_modes.Remove(2);
_modes.Remove(3);
}
if (AppConfig.ContainsModel("G513QY"))
{
return _modes;
}
if (AppConfig.ContainsModel("Strix") || AppConfig.ContainsModel("Scar"))
{
return _modesStrix;
}
return _modes;
}
public static int Mode
{
get { return mode; }
set
{
if (GetModes().ContainsKey(value))
mode = value;
else
mode = 0;
}
}
public static bool HasColor()
{
return AppConfig.ContainsModel("GA401") || AppConfig.ContainsModel("X13");
}
public static bool HasSecondColor()
{
return (mode == 1 && !AppConfig.ContainsModel("TUF"));
}
public static int Speed
{
get { return speed; }
set
{
if (GetSpeeds().ContainsKey(value))
speed = value;
else
speed = 1;
}
}
public static void SetColor(int colorCode)
{
Color1 = Color.FromArgb(colorCode);
}
public static void SetColor2(int colorCode)
{
Color2 = Color.FromArgb(colorCode);
}
private static IEnumerable<HidDevice> GetHidDevices(int[] deviceIds, int minFeatures = 1)
{
HidDevice[] HidDeviceList = HidDevices.Enumerate(ASUS_ID, deviceIds).ToArray();
foreach (HidDevice device in HidDeviceList)
if (device.IsConnected && device.Capabilities.FeatureReportByteLength >= minFeatures)
yield return device;
}
public static HidDevice? GetDevice(byte reportID = INPUT_HID_ID)
{
HidDevice[] HidDeviceList = HidDevices.Enumerate(ASUS_ID, deviceIds).ToArray();
HidDevice input = null;
foreach (HidDevice device in HidDeviceList)
if (device.ReadFeatureData(out byte[] data, reportID))
{
input = device;
//Logger.WriteLine("HID Device("+ reportID + ")" + + device.Capabilities.FeatureReportByteLength + "|" + device.Capabilities.InputReportByteLength + device.DevicePath);
}
return input;
}
public static bool TouchpadToggle()
{
HidDevice? input = GetDevice();
if (input != null) return input.WriteFeatureData(new byte[] { INPUT_HID_ID, 0xf4, 0x6b });
return false;
}
public static byte[] AuraMessage(int mode, Color color, Color color2, int speed)
{
byte[] msg = new byte[17];
msg[0] = AURA_HID_ID;
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[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
return msg;
}
public static void Init()
{
Task.Run(async () =>
{
var devices = GetHidDevices(deviceIds);
foreach (HidDevice device in devices)
{
device.OpenDevice();
device.WriteFeatureData(LED_INIT1);
device.WriteFeatureData(LED_INIT2);
device.WriteFeatureData(LED_INIT3);
device.WriteFeatureData(LED_INIT4);
device.WriteFeatureData(LED_INIT5);
device.CloseDevice();
}
});
}
public static void ApplyBrightness(int brightness, string log = "Backlight")
{
if (AppConfig.ContainsModel("TUF"))
Program.acpi.TUFKeyboardBrightness(brightness);
Task.Run(async () =>
{
byte[] msg = { AURA_HID_ID, 0xba, 0xc5, 0xc4, (byte)brightness };
byte[] msgBackup = { INPUT_HID_ID, 0xba, 0xc5, 0xc4, (byte)brightness };
var devices = GetHidDevices(deviceIds);
foreach (HidDevice device in devices)
{
device.OpenDevice();
if (device.ReadFeatureData(out byte[] data, AURA_HID_ID))
{
device.WriteFeatureData(msg);
Logger.WriteLine(log + ":" + BitConverter.ToString(msg));
}
if (AppConfig.ContainsModel("GA503") && device.ReadFeatureData(out byte[] dataBackkup, INPUT_HID_ID))
{
device.WriteFeatureData(msgBackup);
Logger.WriteLine(log + ":" + BitConverter.ToString(msgBackup));
}
device.CloseDevice();
}
// Backup payload for old models
/*
if (AppConfig.ContainsModel("GA503RW"))
{
byte[] msgBackup = { INPUT_HID_ID, 0xba, 0xc5, 0xc4, (byte)brightness };
var devicesBackup = GetHidDevices(deviceIds);
foreach (HidDevice device in devicesBackup)
{
device.OpenDevice();
device.WriteFeatureData(msgBackup);
device.CloseDevice();
}
}
*/
});
}
public static void ApplyAuraPower(List<AuraDev19b6> flags)
{
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.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));
}
public static void ApplyAura()
{
int _speed;
switch (Speed)
{
case 1:
_speed = 0xeb;
break;
case 2:
_speed = 0xf5;
break;
default:
_speed = 0xe1;
break;
}
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);
}
// Reference : thanks to https://github.com/RomanYazvinsky/ for initial discovery of XGM payloads
public static int SetXGM(byte[] msg)
{
//Logger.WriteLine("XGM Payload :" + BitConverter.ToString(msg));
var payload = new byte[300];
Array.Copy(msg, payload, msg.Length);
foreach (HidDevice device in GetHidDevices(new int[] { 0x1970 }, 300))
{
device.OpenDevice();
Logger.WriteLine("XGM " + device.Attributes.ProductHexId + "|" + device.Capabilities.FeatureReportByteLength + ":" + BitConverter.ToString(msg));
device.WriteFeatureData(payload);
device.CloseDevice();
//return 1;
}
return 0;
}
public static void ApplyXGMLight(bool status)
{
SetXGM(new byte[] { 0x5e, 0xc5, status ? (byte)0x50 : (byte)0 });
}
public static int ResetXGM()
{
return SetXGM(new byte[] { 0x5e, 0xd1, 0x02 });
}
public static int SetXGMFan(byte[] curve)
{
if (AsusACPI.IsInvalidCurve(curve)) return -1;
byte[] msg = new byte[19];
Array.Copy(new byte[] { 0x5e, 0xd1, 0x01 }, msg, 3);
Array.Copy(curve, 0, msg, 3, curve.Length);
return SetXGM(msg);
}
}
}

View File

@@ -16,7 +16,8 @@ namespace GHelper.AutoUpdate
public AutoUpdateControl(SettingsForm settingsForm)
{
settings = settingsForm;
settings.SetVersionLabel(Properties.Strings.VersionLabel + ": " + Assembly.GetExecutingAssembly().GetName().Version);
var appVersion = new Version(Assembly.GetExecutingAssembly().GetName().Version.ToString());
settings.SetVersionLabel(Properties.Strings.VersionLabel + $": {appVersion.Major}.{appVersion.Minor}.{appVersion.Build}");
}
public void CheckForUpdates()
@@ -40,6 +41,8 @@ namespace GHelper.AutoUpdate
async void CheckForUpdatesAsync()
{
if (AppConfig.Is("skip_updates")) return;
try
{

View File

@@ -1,32 +1,45 @@
using GHelper.Helpers;
using System.Diagnostics;
namespace GHelper.Battery
namespace GHelper.Battery
{
internal class BatteryControl
{
public static void ToggleBatteryLimitFull()
{
if (AppConfig.Is("charge_full")) SetBatteryChargeLimit();
else SetBatteryLimitFull();
}
public static void SetBatteryLimitFull()
{
AppConfig.Set("charge_full", 1);
Program.acpi.DeviceSet(AsusACPI.BatteryLimit, 100, "BatteryLimit");
Program.settingsForm.VisualiseBatteryFull();
}
public static void UnSetBatteryLimitFull()
{
AppConfig.Set("charge_full", 0);
Program.settingsForm.VisualiseBatteryFull();
}
public static void AutoBattery(bool init = false)
{
if (AppConfig.Is("charge_full") && !init) SetBatteryLimitFull();
else SetBatteryChargeLimit();
}
public static void SetBatteryChargeLimit(int limit = -1)
{
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");
try
{
OptimizationService.SetChargeLimit(limit);
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
AppConfig.Set("charge_limit", limit);
AppConfig.Set("charge_full", 0);
Program.settingsForm.VisualiseBattery(limit);
}
}

View File

@@ -1,4 +1,4 @@
namespace GHelper.Helpers
namespace GHelper.Display
{
using System;
using System.Diagnostics;

388
app/Display/ScreenCCD.cs Normal file
View File

@@ -0,0 +1,388 @@
using System.ComponentModel;
using System.Runtime.InteropServices;
namespace GHelper.Display
{
public class ScreenCCD
{
public static bool GetHDRStatus()
{
var err = GetDisplayConfigBufferSizes(QDC.QDC_ONLY_ACTIVE_PATHS, out var pathCount, out var modeCount);
if (err != 0)
throw new Win32Exception(err);
var paths = new DISPLAYCONFIG_PATH_INFO[pathCount];
var modes = new DISPLAYCONFIG_MODE_INFO[modeCount];
err = QueryDisplayConfig(QDC.QDC_ONLY_ACTIVE_PATHS, ref pathCount, paths, ref modeCount, modes, IntPtr.Zero);
if (err != 0)
throw new Win32Exception(err);
string internalName = AppConfig.GetString("internal_display");
foreach (var path in paths)
{
// get display name
var info = new DISPLAYCONFIG_TARGET_DEVICE_NAME();
info.header.type = DISPLAYCONFIG_DEVICE_INFO_TYPE.DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME;
info.header.size = Marshal.SizeOf<DISPLAYCONFIG_TARGET_DEVICE_NAME>();
info.header.adapterId = path.targetInfo.adapterId;
info.header.id = path.targetInfo.id;
err = DisplayConfigGetDeviceInfo(ref info);
if (err != 0)
throw new Win32Exception(err);
var colorInfo = new DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO();
colorInfo.header.type = DISPLAYCONFIG_DEVICE_INFO_TYPE.DISPLAYCONFIG_DEVICE_INFO_GET_ADVANCED_COLOR_INFO;
colorInfo.header.size = Marshal.SizeOf<DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO>();
colorInfo.header.adapterId = path.targetInfo.adapterId;
colorInfo.header.id = path.targetInfo.id;
err = DisplayConfigGetDeviceInfo(ref colorInfo);
if (err != 0)
throw new Win32Exception(err);
if (info.outputTechnology == DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL ||
info.outputTechnology == DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED ||
info.monitorFriendlyDeviceName == internalName)
{
Logger.WriteLine(info.monitorFriendlyDeviceName + " HDR: " + colorInfo.advancedColorEnabled);
return colorInfo.advancedColorEnabled;
}
}
return false;
}
private enum DISPLAYCONFIG_DEVICE_INFO_TYPE
{
DISPLAYCONFIG_DEVICE_INFO_GET_SOURCE_NAME = 1,
DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME = 2,
DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_PREFERRED_MODE = 3,
DISPLAYCONFIG_DEVICE_INFO_GET_ADAPTER_NAME = 4,
DISPLAYCONFIG_DEVICE_INFO_SET_TARGET_PERSISTENCE = 5,
DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_BASE_TYPE = 6,
DISPLAYCONFIG_DEVICE_INFO_GET_SUPPORT_VIRTUAL_RESOLUTION = 7,
DISPLAYCONFIG_DEVICE_INFO_SET_SUPPORT_VIRTUAL_RESOLUTION = 8,
DISPLAYCONFIG_DEVICE_INFO_GET_ADVANCED_COLOR_INFO = 9,
DISPLAYCONFIG_DEVICE_INFO_SET_ADVANCED_COLOR_STATE = 10,
DISPLAYCONFIG_DEVICE_INFO_GET_SDR_WHITE_LEVEL = 11,
}
private enum DISPLAYCONFIG_COLOR_ENCODING
{
DISPLAYCONFIG_COLOR_ENCODING_RGB = 0,
DISPLAYCONFIG_COLOR_ENCODING_YCBCR444 = 1,
DISPLAYCONFIG_COLOR_ENCODING_YCBCR422 = 2,
DISPLAYCONFIG_COLOR_ENCODING_YCBCR420 = 3,
DISPLAYCONFIG_COLOR_ENCODING_INTENSITY = 4,
}
private enum DISPLAYCONFIG_SCALING
{
DISPLAYCONFIG_SCALING_IDENTITY = 1,
DISPLAYCONFIG_SCALING_CENTERED = 2,
DISPLAYCONFIG_SCALING_STRETCHED = 3,
DISPLAYCONFIG_SCALING_ASPECTRATIOCENTEREDMAX = 4,
DISPLAYCONFIG_SCALING_CUSTOM = 5,
DISPLAYCONFIG_SCALING_PREFERRED = 128,
}
private enum DISPLAYCONFIG_ROTATION
{
DISPLAYCONFIG_ROTATION_IDENTITY = 1,
DISPLAYCONFIG_ROTATION_ROTATE90 = 2,
DISPLAYCONFIG_ROTATION_ROTATE180 = 3,
}
private enum DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY
{
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_OTHER = -1,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HD15 = 0,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SVIDEO = 1,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPOSITE_VIDEO = 2,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPONENT_VIDEO = 3,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DVI = 4,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HDMI = 5,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_LVDS = 6,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_D_JPN = 8,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDI = 9,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EXTERNAL = 10,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED = 11,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EXTERNAL = 12,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EMBEDDED = 13,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDTVDONGLE = 14,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_MIRACAST = 15,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INDIRECT_WIRED = 16,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INDIRECT_VIRTUAL = 17,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL = unchecked((int)0x80000000),
}
private enum DISPLAYCONFIG_TOPOLOGY_ID
{
DISPLAYCONFIG_TOPOLOGY_INTERNAL = 0x00000001,
DISPLAYCONFIG_TOPOLOGY_CLONE = 0x00000002,
DISPLAYCONFIG_TOPOLOGY_EXTEND = 0x00000004,
DISPLAYCONFIG_TOPOLOGY_EXTERNAL = 0x00000008,
}
private enum DISPLAYCONFIG_PATH
{
DISPLAYCONFIG_PATH_ACTIVE = 0x00000001,
DISPLAYCONFIG_PATH_PREFERRED_UNSCALED = 0x00000004,
DISPLAYCONFIG_PATH_SUPPORT_VIRTUAL_MODE = 0x00000008,
}
private enum DISPLAYCONFIG_SOURCE_FLAGS
{
DISPLAYCONFIG_SOURCE_IN_USE = 0x00000001,
}
private enum DISPLAYCONFIG_TARGET_FLAGS
{
DISPLAYCONFIG_TARGET_IN_USE = 0x00000001,
DISPLAYCONFIG_TARGET_FORCIBLE = 0x00000002,
DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_BOOT = 0x00000004,
DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_PATH = 0x00000008,
DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_SYSTEM = 0x00000010,
DISPLAYCONFIG_TARGET_IS_HMD = 0x00000020,
}
private enum QDC
{
QDC_ALL_PATHS = 0x00000001,
QDC_ONLY_ACTIVE_PATHS = 0x00000002,
QDC_DATABASE_CURRENT = 0x00000004,
QDC_VIRTUAL_MODE_AWARE = 0x00000010,
QDC_INCLUDE_HMD = 0x00000020,
}
private enum DISPLAYCONFIG_SCANLINE_ORDERING
{
DISPLAYCONFIG_SCANLINE_ORDERING_UNSPECIFIED = 0,
DISPLAYCONFIG_SCANLINE_ORDERING_PROGRESSIVE = 1,
DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED = 2,
DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_UPPERFIELDFIRST = DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED,
DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_LOWERFIELDFIRST = 3,
}
private enum DISPLAYCONFIG_PIXELFORMAT
{
DISPLAYCONFIG_PIXELFORMAT_8BPP = 1,
DISPLAYCONFIG_PIXELFORMAT_16BPP = 2,
DISPLAYCONFIG_PIXELFORMAT_24BPP = 3,
DISPLAYCONFIG_PIXELFORMAT_32BPP = 4,
DISPLAYCONFIG_PIXELFORMAT_NONGDI = 5,
}
private enum DISPLAYCONFIG_MODE_INFO_TYPE
{
DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE = 1,
DISPLAYCONFIG_MODE_INFO_TYPE_TARGET = 2,
DISPLAYCONFIG_MODE_INFO_TYPE_DESKTOP_IMAGE = 3,
}
[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_DEVICE_INFO_HEADER
{
public DISPLAYCONFIG_DEVICE_INFO_TYPE type;
public int size;
public LUID adapterId;
public uint id;
}
[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO
{
public DISPLAYCONFIG_DEVICE_INFO_HEADER header;
public uint value;
public DISPLAYCONFIG_COLOR_ENCODING colorEncoding;
public int bitsPerColorChannel;
public bool advancedColorSupported => (value & 0x1) == 0x1;
public bool advancedColorEnabled => (value & 0x2) == 0x2;
public bool wideColorEnforced => (value & 0x4) == 0x4;
public bool advancedColorForceDisabled => (value & 0x8) == 0x8;
}
[StructLayout(LayoutKind.Sequential)]
private struct POINTL
{
public int x;
public int y;
}
[StructLayout(LayoutKind.Sequential)]
private struct LUID
{
public uint LowPart;
public int HighPart;
public long Value => ((long)HighPart << 32) | LowPart;
public override string ToString() => Value.ToString();
}
[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_SOURCE_MODE
{
public uint width;
public uint height;
public DISPLAYCONFIG_PIXELFORMAT pixelFormat;
public POINTL position;
}
[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_RATIONAL
{
public uint Numerator;
public uint Denominator;
public override string ToString() => Numerator + " / " + Denominator;
}
[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_2DREGION
{
public uint cx;
public uint cy;
}
[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_DESKTOP_IMAGE_INFO
{
public POINTL PathSourceSize;
public RECT DesktopImageRegion;
public RECT DesktopImageClip;
}
[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_VIDEO_SIGNAL_INFO
{
public ulong pixelRate;
public DISPLAYCONFIG_RATIONAL hSyncFreq;
public DISPLAYCONFIG_RATIONAL vSyncFreq;
public DISPLAYCONFIG_2DREGION activeSize;
public DISPLAYCONFIG_2DREGION totalSize;
public uint videoStandard;
public DISPLAYCONFIG_SCANLINE_ORDERING scanLineOrdering;
}
[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_TARGET_MODE
{
public DISPLAYCONFIG_VIDEO_SIGNAL_INFO targetVideoSignalInfo;
}
[StructLayout(LayoutKind.Explicit)]
private struct DISPLAYCONFIG_MODE_INFO_union
{
[FieldOffset(0)]
public DISPLAYCONFIG_TARGET_MODE targetMode;
[FieldOffset(0)]
public DISPLAYCONFIG_SOURCE_MODE sourceMode;
[FieldOffset(0)]
public DISPLAYCONFIG_DESKTOP_IMAGE_INFO desktopImageInfo;
}
[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_PATH_SOURCE_INFO
{
public LUID adapterId;
public uint id;
public uint modeInfoIdx;
public DISPLAYCONFIG_SOURCE_FLAGS statusFlags;
}
[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_PATH_TARGET_INFO
{
public LUID adapterId;
public uint id;
public uint modeInfoIdx;
public DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY outputTechnology;
public DISPLAYCONFIG_ROTATION rotation;
public DISPLAYCONFIG_SCALING scaling;
public DISPLAYCONFIG_RATIONAL refreshRate;
public DISPLAYCONFIG_SCANLINE_ORDERING scanLineOrdering;
public bool targetAvailable;
public DISPLAYCONFIG_TARGET_FLAGS statusFlags;
}
[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_PATH_INFO
{
public DISPLAYCONFIG_PATH_SOURCE_INFO sourceInfo;
public DISPLAYCONFIG_PATH_TARGET_INFO targetInfo;
public DISPLAYCONFIG_PATH flags;
}
[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_MODE_INFO
{
public DISPLAYCONFIG_MODE_INFO_TYPE infoType;
public uint id;
public LUID adapterId;
public DISPLAYCONFIG_MODE_INFO_union info;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
private struct DISPLAYCONFIG_SOURCE_DEVICE_NAME
{
public DISPLAYCONFIG_DEVICE_INFO_HEADER header;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string viewGdiDeviceName;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
private struct DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS
{
public uint value;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
private struct DISPLAYCONFIG_TARGET_DEVICE_NAME
{
public DISPLAYCONFIG_DEVICE_INFO_HEADER header;
public DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS flags;
public DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY outputTechnology;
public ushort edidManufactureId;
public ushort edidProductCodeId;
public uint connectorInstance;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
public string monitorFriendlyDeviceName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
public string monitorDevicePat;
}
[StructLayout(LayoutKind.Sequential)]
private struct RECT
{
public int left;
public int top;
public int right;
public int bottom;
}
[DllImport("user32")]
private static extern int GetDisplayConfigBufferSizes(QDC flags, out int numPathArrayElements, out int numModeInfoArrayElements);
[DllImport("user32")]
private static extern int QueryDisplayConfig(QDC flags, ref int numPathArrayElements, [In, Out] DISPLAYCONFIG_PATH_INFO[] pathArray, ref int numModeInfoArrayElements, [In, Out] DISPLAYCONFIG_MODE_INFO[] modeInfoArray, out DISPLAYCONFIG_TOPOLOGY_ID currentTopologyId);
[DllImport("user32")]
private static extern int QueryDisplayConfig(QDC flags, ref int numPathArrayElements, [In, Out] DISPLAYCONFIG_PATH_INFO[] pathArray, ref int numModeInfoArrayElements, [In, Out] DISPLAYCONFIG_MODE_INFO[] modeInfoArray, IntPtr currentTopologyId);
[DllImport("user32")]
private static extern int DisplayConfigGetDeviceInfo(ref DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO requestPacket);
[DllImport("user32")]
private static extern int DisplayConfigGetDeviceInfo(ref DISPLAYCONFIG_SOURCE_DEVICE_NAME requestPacket);
[DllImport("user32")]
private static extern int DisplayConfigGetDeviceInfo(ref DISPLAYCONFIG_TARGET_DEVICE_NAME requestPacket);
}
}

View File

@@ -4,12 +4,15 @@ namespace GHelper.Display
{
public class ScreenControl
{
public const int MAX_REFRESH = 1000;
public void AutoScreen(bool force = false)
{
if (force || AppConfig.Is("screen_auto"))
{
if (SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online)
SetScreen(1000, 1);
SetScreen(MAX_REFRESH, 1);
else
SetScreen(60, 0);
}
@@ -21,21 +24,20 @@ namespace GHelper.Display
public void SetScreen(int frequency = -1, int overdrive = -1, int miniled = -1)
{
var laptopScreen = ScreenNative.FindLaptopScreen(true);
if (ScreenNative.GetRefreshRate() < 0) // Laptop screen not detected or has unknown refresh rate
{
InitScreen();
return;
}
if (laptopScreen is null) return;
if (frequency >= 1000)
if (ScreenNative.GetRefreshRate(laptopScreen) < 0) return;
if (frequency >= MAX_REFRESH)
{
frequency = ScreenNative.GetRefreshRate(true);
frequency = ScreenNative.GetMaxRefreshRate(laptopScreen);
}
if (frequency > 0)
{
ScreenNative.SetRefreshRate(frequency);
ScreenNative.SetRefreshRate(laptopScreen, frequency);
}
if (overdrive >= 0)
@@ -57,15 +59,17 @@ namespace GHelper.Display
public void ToogleMiniled()
{
int miniled = (AppConfig.Get("miniled") == 1) ? 0 : 1;
int miniled = (Program.acpi.DeviceGet(AsusACPI.ScreenMiniled) == 1) ? 0 : 1;
AppConfig.Set("miniled", miniled);
SetScreen(-1, -1, miniled);
}
public void InitScreen()
{
int frequency = ScreenNative.GetRefreshRate();
int maxFrequency = ScreenNative.GetRefreshRate(true);
var laptopScreen = ScreenNative.FindLaptopScreen();
int frequency = ScreenNative.GetRefreshRate(laptopScreen);
int maxFrequency = ScreenNative.GetMaxRefreshRate(laptopScreen);
bool screenAuto = AppConfig.Is("screen_auto");
bool overdriveSetting = !AppConfig.Is("no_overdrive");
@@ -73,8 +77,13 @@ namespace GHelper.Display
int overdrive = Program.acpi.DeviceGet(AsusACPI.ScreenOverdrive);
int miniled = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled);
bool hdr = false;
if (miniled >= 0)
{
AppConfig.Set("miniled", miniled);
hdr = ScreenCCD.GetHDRStatus();
}
bool screenEnabled = (frequency >= 0);
@@ -90,7 +99,8 @@ namespace GHelper.Display
maxFrequency: maxFrequency,
overdrive: overdrive,
overdriveSetting: overdriveSetting,
miniled: miniled
miniled: miniled,
hdr: hdr
);
});

View File

@@ -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++;
}
}
}
}

View File

@@ -1,8 +1,35 @@
using System.Runtime.InteropServices;
using System.Collections;
using System.Runtime.InteropServices;
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)]
@@ -116,17 +143,14 @@ namespace GHelper.Display
public const int ENUM_CURRENT_SETTINGS = -1;
public const string defaultDevice = "\\\\.\\DISPLAY1";
public const string defaultDevice = @"\\.\DISPLAY1";
public static string? FindLaptopScreen()
private static string? FindInternalName(bool log = false)
{
string? laptopScreen = null;
try
{
var devices = GetAllDevices().ToArray();
int count = 0, displayNum = -1;
string internalName = AppConfig.GetString("internal_display");
foreach (var device in devices)
@@ -135,94 +159,123 @@ 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("#");
if (names.Length > 1) return names[1];
else return "";
}
count++;
//Logger.WriteLine(device.monitorFriendlyDeviceName + ":" + device.outputTechnology.ToString());
}
var screens = Screen.AllScreens;
if (screens.Length != count) return null;
count = 0;
foreach (var screen in screens)
{
if (count == displayNum)
{
laptopScreen = screen.DeviceName;
}
//Logger.WriteLine(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;
}
public static int GetRefreshRate(bool max = false)
{
DEVMODE dm = CreateDevmode();
string? laptopScreen = FindLaptopScreen();
public static int GetMaxRefreshRate(string? laptopScreen)
{
if (laptopScreen is null) return -1;
DEVMODE dm = CreateDevmode();
int frequency = -1;
if (laptopScreen is null)
return -1;
if (max)
int i = 0;
while (0 != EnumDisplaySettingsEx(laptopScreen, i, ref dm))
{
int i = 0;
while (0 != EnumDisplaySettingsEx(laptopScreen, i, ref dm))
{
if (dm.dmDisplayFrequency > frequency) frequency = dm.dmDisplayFrequency;
i++;
}
}
else
{
if (0 != EnumDisplaySettingsEx(laptopScreen, ENUM_CURRENT_SETTINGS, ref dm))
{
frequency = dm.dmDisplayFrequency;
}
if (dm.dmDisplayFrequency > frequency) frequency = dm.dmDisplayFrequency;
i++;
}
if (frequency > 0) AppConfig.Set("screen_max", frequency);
else frequency = AppConfig.Get("screen_max");
return frequency;
}
public static int GetRefreshRate(string? laptopScreen)
{
if (laptopScreen is null) return -1;
DEVMODE dm = CreateDevmode();
int frequency = -1;
if (0 != EnumDisplaySettingsEx(laptopScreen, ENUM_CURRENT_SETTINGS, ref dm))
{
frequency = dm.dmDisplayFrequency;
}
return frequency;
}
public static int SetRefreshRate(int frequency = 120)
public static int SetRefreshRate(string laptopScreen, int frequency = 120)
{
DEVMODE dm = CreateDevmode();
string? laptopScreen = FindLaptopScreen();
if (laptopScreen is null)
return -1;
if (0 != EnumDisplaySettingsEx(laptopScreen, ENUM_CURRENT_SETTINGS, ref dm))
{
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(300);
iRet = ChangeDisplaySettingsEx(laptopScreen, ref dm, IntPtr.Zero, DisplaySettingsFlags.CDS_UPDATEREGISTRY, IntPtr.Zero);
Logger.WriteLine("Screen = " + frequency.ToString() + "Hz : " + (iRet == 0 ? "OK" : iRet));
}
return iRet;
}

537
app/Extra.Designer.cs generated

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,9 @@
using GHelper.Gpu.AMD;
using GHelper.Helpers;
using GHelper.Input;
using GHelper.Mode;
using GHelper.UI;
using GHelper.USB;
using System.Diagnostics;
namespace GHelper
@@ -11,26 +13,37 @@ namespace GHelper
{
ScreenControl screenControl = new ScreenControl();
ClamshellModeControl clamshellControl = new ClamshellModeControl();
const string EMPTY = "--------------";
Dictionary<string, string> customActions = new Dictionary<string, string>
{
{"","--------------" },
{"mute", Properties.Strings.VolumeMute},
{"screenshot", Properties.Strings.PrintScreen},
{"play", Properties.Strings.PlayPause},
{"aura", Properties.Strings.ToggleAura},
{"performance", Properties.Strings.PerformanceMode},
{"screen", Properties.Strings.ToggleScreen},
{"miniled", Properties.Strings.ToggleMiniled},
{"fnlock", Properties.Strings.ToggleFnLock},
{"brightness_down", Properties.Strings.BrightnessDown},
{"brightness_up", Properties.Strings.BrightnessUp},
{"custom", Properties.Strings.Custom}
};
private void SetKeyCombo(ComboBox combo, TextBox txbox, string name)
{
Dictionary<string, string> customActions = new Dictionary<string, string>
{
{"", EMPTY},
{"mute", Properties.Strings.VolumeMute},
{"screenshot", Properties.Strings.PrintScreen},
{"play", Properties.Strings.PlayPause},
{"aura", Properties.Strings.ToggleAura},
{"performance", Properties.Strings.PerformanceMode},
{"screen", Properties.Strings.ToggleScreen},
{"miniled", Properties.Strings.ToggleMiniled},
{"fnlock", Properties.Strings.ToggleFnLock},
{"brightness_down", Properties.Strings.BrightnessDown},
{"brightness_up", Properties.Strings.BrightnessUp},
{"ghelper", Properties.Strings.OpenGHelper},
{"custom", Properties.Strings.Custom}
};
if (AppConfig.IsDUO())
{
customActions.Add("screenpad_down", Properties.Strings.ScreenPadDown);
customActions.Add("screenpad_up", Properties.Strings.ScreenPadUp);
}
switch (name)
{
case "m1":
@@ -44,6 +57,7 @@ namespace GHelper
break;
case "m4":
customActions[""] = Properties.Strings.OpenGHelper;
customActions.Remove("ghelper");
break;
case "fnf4":
customActions[""] = Properties.Strings.ToggleAura;
@@ -53,6 +67,15 @@ namespace GHelper
customActions[""] = Properties.Strings.ToggleFnLock;
customActions.Remove("fnlock");
break;
case "fne":
customActions[""] = "Calculator";
break;
case "paddle":
customActions[""] = EMPTY;
break;
case "cc":
customActions[""] = EMPTY;
break;
}
combo.DropDownStyle = ComboBoxStyle.DropDownList;
@@ -94,18 +117,18 @@ namespace GHelper
checkSleep.Text = Properties.Strings.Sleep;
checkBoot.Text = Properties.Strings.Boot;
checkShutdown.Text = Properties.Strings.Shutdown;
checkBootSound.Text = Properties.Strings.BootSound;
labelSpeed.Text = Properties.Strings.AnimationSpeed;
//labelBrightness.Text = Properties.Strings.Brightness;
labelBacklightTimeout.Text = Properties.Strings.BacklightTimeout;
labelBacklightTimeoutPlugged.Text = Properties.Strings.BacklightTimeoutPlugged;
//labelBacklightTimeoutPlugged.Text = Properties.Strings.BacklightTimeoutPlugged;
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;
labelBacklightBar.Text = Properties.Strings.Lightbar;
@@ -113,50 +136,118 @@ namespace GHelper
labelBacklightLogo.Text = Properties.Strings.Logo;
checkGpuApps.Text = Properties.Strings.KillGpuApps;
labelHibernateAfter.Text = Properties.Strings.HibernateAfter;
Text = Properties.Strings.ExtraSettings;
if (AppConfig.IsARCNM())
{
labelM3.Text = "FN+F6";
labelM1.Visible = comboM1.Visible = textM1.Visible = false;
labelM2.Visible = comboM2.Visible = textM2.Visible = false;
labelM4.Visible = comboM4.Visible = textM4.Visible = false;
labelFNF4.Visible = comboFNF4.Visible = textFNF4.Visible = false;
}
if (AppConfig.NoMKeys())
{
labelM1.Text = "FN+F2";
labelM2.Text = "FN+F3";
labelM3.Text = "FN+F4";
labelM4.Visible = comboM4.Visible = textM4.Visible = AppConfig.IsDUO();
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;
comboKeyboardSpeed.DataSource = new BindingSource(AsusUSB.GetSpeeds(), null);
comboKeyboardSpeed.DataSource = new BindingSource(Aura.GetSpeeds(), null);
comboKeyboardSpeed.DisplayMember = "Value";
comboKeyboardSpeed.ValueMember = "Key";
comboKeyboardSpeed.SelectedValue = AsusUSB.Speed;
comboKeyboardSpeed.SelectedValue = Aura.Speed;
comboKeyboardSpeed.SelectedValueChanged += ComboKeyboardSpeed_SelectedValueChanged;
// Keyboard
checkAwake.Checked = !(AppConfig.Get("keyboard_awake") == 0);
checkBoot.Checked = !(AppConfig.Get("keyboard_boot") == 0);
checkSleep.Checked = !(AppConfig.Get("keyboard_sleep") == 0);
checkShutdown.Checked = !(AppConfig.Get("keyboard_shutdown") == 0);
checkAwake.Checked = AppConfig.IsNotFalse("keyboard_awake");
checkBoot.Checked = AppConfig.IsNotFalse("keyboard_boot");
checkSleep.Checked = AppConfig.IsNotFalse("keyboard_sleep");
checkShutdown.Checked = AppConfig.IsNotFalse("keyboard_shutdown");
// Lightbar
checkAwakeBar.Checked = !(AppConfig.Get("keyboard_awake_bar") == 0);
checkBootBar.Checked = !(AppConfig.Get("keyboard_boot_bar") == 0);
checkSleepBar.Checked = !(AppConfig.Get("keyboard_sleep_bar") == 0);
checkShutdownBar.Checked = !(AppConfig.Get("keyboard_shutdown_bar") == 0);
checkAwakeBar.Checked = AppConfig.IsNotFalse("keyboard_awake_bar");
checkBootBar.Checked = AppConfig.IsNotFalse("keyboard_boot_bar");
checkSleepBar.Checked = AppConfig.IsNotFalse("keyboard_sleep_bar");
checkShutdownBar.Checked = AppConfig.IsNotFalse("keyboard_shutdown_bar");
// Lid
checkAwakeLid.Checked = !(AppConfig.Get("keyboard_awake_lid") == 0);
checkBootLid.Checked = !(AppConfig.Get("keyboard_boot_lid") == 0);
checkSleepLid.Checked = !(AppConfig.Get("keyboard_sleep_lid") == 0);
checkShutdownLid.Checked = !(AppConfig.Get("keyboard_shutdown_lid") == 0);
checkAwakeLid.Checked = AppConfig.IsNotFalse("keyboard_awake_lid");
checkBootLid.Checked = AppConfig.IsNotFalse("keyboard_boot_lid");
checkSleepLid.Checked = AppConfig.IsNotFalse("keyboard_sleep_lid");
checkShutdownLid.Checked = AppConfig.IsNotFalse("keyboard_shutdown_lid");
// Logo
checkAwakeLogo.Checked = !(AppConfig.Get("keyboard_awake_logo") == 0);
checkBootLogo.Checked = !(AppConfig.Get("keyboard_boot_logo") == 0);
checkSleepLogo.Checked = !(AppConfig.Get("keyboard_sleep_logo") == 0);
checkShutdownLogo.Checked = !(AppConfig.Get("keyboard_shutdown_logo") == 0);
checkAwakeLogo.Checked = AppConfig.IsNotFalse("keyboard_awake_logo");
checkBootLogo.Checked = AppConfig.IsNotFalse("keyboard_boot_logo");
checkSleepLogo.Checked = AppConfig.IsNotFalse("keyboard_sleep_logo");
checkShutdownLogo.Checked = AppConfig.IsNotFalse("keyboard_shutdown_logo");
checkAwake.CheckedChanged += CheckPower_CheckedChanged;
checkBoot.CheckedChanged += CheckPower_CheckedChanged;
@@ -178,7 +269,7 @@ namespace GHelper
checkSleepLogo.CheckedChanged += CheckPower_CheckedChanged;
checkShutdownLogo.CheckedChanged += CheckPower_CheckedChanged;
if (!AppConfig.ContainsModel("Strix"))
if (!AppConfig.IsStrix())
{
labelBacklightBar.Visible = false;
checkAwakeBar.Visible = false;
@@ -186,24 +277,33 @@ namespace GHelper
checkSleepBar.Visible = false;
checkShutdownBar.Visible = false;
if (!AppConfig.ContainsModel("Z13"))
{
labelBacklightLid.Visible = false;
checkAwakeLid.Visible = false;
checkBootLid.Visible = false;
checkSleepLid.Visible = false;
checkShutdownLid.Visible = false;
labelBacklightLogo.Visible = false;
checkAwakeLogo.Visible = false;
checkBootLogo.Visible = false;
checkSleepLogo.Visible = false;
checkShutdownLogo.Visible = false;
labelBacklightKeyboard.Visible = false;
}
}
if ((!AppConfig.IsStrix() && !AppConfig.IsZ13()) || AppConfig.IsStrixLimitedRGB())
{
labelBacklightLid.Visible = false;
checkAwakeLid.Visible = false;
checkBootLid.Visible = false;
checkSleepLid.Visible = false;
checkShutdownLid.Visible = false;
labelBacklightLogo.Visible = false;
checkAwakeLogo.Visible = false;
checkBootLogo.Visible = false;
checkSleepLogo.Visible = false;
checkShutdownLogo.Visible = false;
}
if (!AppConfig.IsStrix() && !AppConfig.IsZ13())
{
labelBacklightKeyboard.Visible = false;
}
//checkAutoToggleClamshellMode.Visible = clamshellControl.IsExternalDisplayConnected();
checkAutoToggleClamshellMode.Checked = AppConfig.Is("toggle_clamshell_mode");
checkAutoToggleClamshellMode.CheckedChanged += checkAutoToggleClamshellMode_CheckedChanged;
checkTopmost.Checked = AppConfig.Is("topmost");
checkTopmost.CheckedChanged += CheckTopmost_CheckedChanged; ;
@@ -213,9 +313,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;
@@ -232,17 +329,56 @@ namespace GHelper
checkGpuApps.Checked = AppConfig.Is("kill_gpu_apps");
checkGpuApps.CheckedChanged += CheckGpuApps_CheckedChanged;
checkFnLock.Checked = AppConfig.Is("fn_lock");
checkFnLock.CheckedChanged += CheckFnLock_CheckedChanged; ;
checkBootSound.Checked = (Program.acpi.DeviceGet(AsusACPI.BootSound) == 1);
checkBootSound.CheckedChanged += CheckBootSound_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 CheckBootSound_CheckedChanged(object? sender, EventArgs e)
{
Program.acpi.DeviceSet(AsusACPI.BootSound, (checkBootSound.Checked ? 1 : 0), "BootSound");
}
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)
@@ -258,17 +394,33 @@ namespace GHelper
private void SliderBrightness_ValueChanged(object? sender, EventArgs e)
{
AppConfig.Set("keyboard_brightness", sliderBrightness.Value);
AppConfig.Set("keyboard_brightness_ac", sliderBrightness.Value);
AsusUSB.ApplyBrightness(sliderBrightness.Value, "Slider");
bool onBattery = SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online;
if (onBattery)
AppConfig.Set("keyboard_brightness_ac", sliderBrightness.Value);
else
AppConfig.Set("keyboard_brightness", sliderBrightness.Value);
Aura.ApplyBrightness(sliderBrightness.Value, "Slider");
}
private void InitServices()
{
if (OptimizationService.IsRunning()) buttonServices.Text = Properties.Strings.Stop;
else buttonServices.Text = Properties.Strings.Start;
labelServices.Text = Properties.Strings.AsusServicesRunning + ": " + OptimizationService.GetRunningCount();
int servicesCount = OptimizationService.GetRunningCount();
if (servicesCount > 0)
{
buttonServices.Text = Properties.Strings.Stop;
labelServices.ForeColor = colorTurbo;
}
else
{
buttonServices.Text = Properties.Strings.Start;
labelServices.ForeColor = colorStandard;
}
labelServices.Text = Properties.Strings.AsusServicesRunning + ": " + servicesCount;
buttonServices.Enabled = true;
}
@@ -277,7 +429,7 @@ namespace GHelper
{
buttonServices.Enabled = false;
if (OptimizationService.IsRunning())
if (OptimizationService.GetRunningCount() > 0)
{
labelServices.Text = Properties.Strings.StoppingServices + " ...";
Task.Run(() =>
@@ -316,6 +468,7 @@ namespace GHelper
{
try
{
using (var amdControl = new AmdGpuControl())
{
int variBrightSupported = 0, VariBrightEnabled;
@@ -348,15 +501,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));
@@ -372,7 +516,7 @@ namespace GHelper
private void CheckXMG_CheckedChanged(object? sender, EventArgs e)
{
AppConfig.Set("xmg_light", (checkXMG.Checked ? 1 : 0));
AsusUSB.ApplyXGMLight(checkXMG.Checked);
XGM.Light(checkXMG.Checked);
}
private void CheckUSBC_CheckedChanged(object? sender, EventArgs e)
@@ -420,36 +564,14 @@ namespace GHelper
AppConfig.Set("keyboard_sleep_logo", (checkSleepLogo.Checked ? 1 : 0));
AppConfig.Set("keyboard_shutdown_logo", (checkShutdownLogo.Checked ? 1 : 0));
List<AuraDev19b6> flags = new List<AuraDev19b6>();
if (checkAwake.Checked) flags.Add(AuraDev19b6.AwakeKeyb);
if (checkBoot.Checked) flags.Add(AuraDev19b6.BootKeyb);
if (checkSleep.Checked) flags.Add(AuraDev19b6.SleepKeyb);
if (checkShutdown.Checked) flags.Add(AuraDev19b6.ShutdownKeyb);
if (checkAwakeBar.Checked) flags.Add(AuraDev19b6.AwakeBar);
if (checkBootBar.Checked) flags.Add(AuraDev19b6.BootBar);
if (checkSleepBar.Checked) flags.Add(AuraDev19b6.SleepBar);
if (checkShutdownBar.Checked) flags.Add(AuraDev19b6.ShutdownBar);
if (checkAwakeLid.Checked) flags.Add(AuraDev19b6.AwakeLid);
if (checkBootLid.Checked) flags.Add(AuraDev19b6.BootLid);
if (checkSleepLid.Checked) flags.Add(AuraDev19b6.SleepLid);
if (checkShutdownLid.Checked) flags.Add(AuraDev19b6.ShutdownLid);
if (checkAwakeLogo.Checked) flags.Add(AuraDev19b6.AwakeLogo);
if (checkBootLogo.Checked) flags.Add(AuraDev19b6.BootLogo);
if (checkSleepLogo.Checked) flags.Add(AuraDev19b6.SleepLogo);
if (checkShutdownLogo.Checked) flags.Add(AuraDev19b6.ShutdownLogo);
AsusUSB.ApplyAuraPower(flags);
Aura.ApplyPower();
}
private void ComboKeyboardSpeed_SelectedValueChanged(object? sender, EventArgs e)
{
AppConfig.Set("aura_speed", (int)comboKeyboardSpeed.SelectedValue);
Program.settingsForm.SetAura();
Aura.ApplyAura();
}
@@ -467,9 +589,20 @@ namespace GHelper
Left = Program.settingsForm.Left - Width - 5;
}
private void checkAutoApplyWindowsPowerMode_CheckedChanged(object? sender, EventArgs e)
private void checkAutoToggleClamshellMode_CheckedChanged(object? sender, EventArgs e)
{
AppConfig.Set("auto_apply_power_plan", checkAutoApplyWindowsPowerMode.Checked ? 1 : 0);
AppConfig.Set("toggle_clamshell_mode", checkAutoToggleClamshellMode.Checked ? 1 : 0);
if (checkAutoToggleClamshellMode.Checked)
{
clamshellControl.ToggleLidAction();
}
else
{
ClamshellModeControl.DisableClamshellMode();
}
}
}
}

View File

@@ -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>

185
app/Fan/FanSensorControl.cs Normal file
View File

@@ -0,0 +1,185 @@
using GHelper.Mode;
namespace GHelper.Fan
{
public class FanSensorControl
{
public const int DEFAULT_FAN_MIN = 18;
public const int DEFAULT_FAN_MAX = 58;
public const int XGM_FAN_MAX = 72;
public const int INADEQUATE_MAX = 92;
const int FAN_COUNT = 3;
Fans fansForm;
ModeControl modeControl = Program.modeControl;
static int[] measuredMax;
static int sameCount = 0;
static System.Timers.Timer timer = default!;
static int[] _fanMax = InitFanMax();
static bool _fanRpm = AppConfig.IsNotFalse("fan_rpm");
public FanSensorControl(Fans fansForm)
{
this.fansForm = fansForm;
timer = new System.Timers.Timer(1000);
timer.Elapsed += Timer_Elapsed;
}
static int[] InitFanMax()
{
int[] defaultMax = GetDefaultMax();
return new int[3] {
AppConfig.Get("fan_max_" + (int)AsusFan.CPU, defaultMax[(int)AsusFan.CPU]),
AppConfig.Get("fan_max_" + (int)AsusFan.GPU, defaultMax[(int)AsusFan.GPU]),
AppConfig.Get("fan_max_" + (int)AsusFan.Mid, defaultMax[(int)AsusFan.Mid])
};
}
static int[] GetDefaultMax()
{
if (AppConfig.ContainsModel("GA401I")) return new int[3] { 78, 76, DEFAULT_FAN_MAX };
if (AppConfig.ContainsModel("GA401")) return new int[3] { 71, 73, DEFAULT_FAN_MAX };
if (AppConfig.ContainsModel("GA402")) return new int[3] { 55, 56, DEFAULT_FAN_MAX };
if (AppConfig.ContainsModel("G513R")) return new int[3] { 58, 60, DEFAULT_FAN_MAX };
if (AppConfig.ContainsModel("G513Q")) return new int[3] { 69, 69, DEFAULT_FAN_MAX };
if (AppConfig.ContainsModel("GA503")) return new int[3] { 64, 64, DEFAULT_FAN_MAX };
if (AppConfig.ContainsModel("GU603")) return new int[3] { 62, 64, DEFAULT_FAN_MAX };
if (AppConfig.ContainsModel("FA507R")) return new int[3] { 63, 57, DEFAULT_FAN_MAX };
if (AppConfig.ContainsModel("FA507X")) return new int[3] { 63, 68, DEFAULT_FAN_MAX };
if (AppConfig.ContainsModel("GX650")) return new int[3] { 62, 62, DEFAULT_FAN_MAX };
if (AppConfig.ContainsModel("G732")) return new int[3] { 61, 60, DEFAULT_FAN_MAX };
if (AppConfig.ContainsModel("G713")) return new int[3] { 56, 60, DEFAULT_FAN_MAX };
if (AppConfig.ContainsModel("Z301")) return new int[3] { 72, 64, DEFAULT_FAN_MAX };
if (AppConfig.ContainsModel("GV601")) return new int[3] { 78, 59, 85 };
return new int[3] { DEFAULT_FAN_MAX, DEFAULT_FAN_MAX, DEFAULT_FAN_MAX };
}
public static int GetFanMax(AsusFan device)
{
if (device == AsusFan.XGM) return XGM_FAN_MAX;
if (_fanMax[(int)device] < 0 || _fanMax[(int)device] > INADEQUATE_MAX)
SetFanMax(device, DEFAULT_FAN_MAX);
return _fanMax[(int)device];
}
public static void SetFanMax(AsusFan device, int value)
{
_fanMax[(int)device] = value;
AppConfig.Set("fan_max_" + (int)device, value);
}
public static bool fanRpm
{
get
{
return _fanRpm;
}
set
{
AppConfig.Set("fan_rpm", value ? 1 : 0);
_fanRpm = value;
}
}
public static string FormatFan(AsusFan device, int value)
{
if (value < 0) return null;
if (value > GetFanMax(device) && value <= INADEQUATE_MAX) SetFanMax(device, value);
if (fanRpm)
return Properties.Strings.FanSpeed + ": " + (value * 100).ToString() + "RPM";
else
return Properties.Strings.FanSpeed + ": " + Math.Min(Math.Round((float)value / GetFanMax(device) * 100), 100).ToString() + "%"; // relatively to max RPM
}
public void StartCalibration()
{
measuredMax = new int[] { 0, 0, 0 };
timer.Enabled = true;
for (int i = 0; i < FAN_COUNT; i++)
AppConfig.Remove("fan_max_" + i);
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AsusACPI.PerformanceTurbo, "ModeCalibration");
for (int i = 0; i < FAN_COUNT; i++)
Program.acpi.SetFanCurve((AsusFan)i, new byte[] { 20, 30, 40, 50, 60, 70, 80, 90, 100, 100, 100, 100, 100, 100, 100, 100 });
}
private void Timer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
{
int fan;
bool same = true;
for (int i = 0; i < FAN_COUNT; i++)
{
fan = Program.acpi.GetFan((AsusFan)i);
if (fan > measuredMax[i])
{
measuredMax[i] = fan;
same = false;
}
}
if (same) sameCount++;
else sameCount = 0;
string label = "Measuring Max Speed - CPU: " + measuredMax[(int)AsusFan.CPU] * 100 + ", GPU: " + measuredMax[(int)AsusFan.GPU] * 100;
if (measuredMax[(int)AsusFan.Mid] > 10) label = label + ", Mid: " + measuredMax[(int)AsusFan.Mid] * 100;
label = label + " (" + sameCount + "s)";
fansForm.LabelFansResult(label);
if (sameCount >= 15)
{
for (int i = 0; i < FAN_COUNT; i++)
{
if (measuredMax[i] > 30 && measuredMax[i] < INADEQUATE_MAX) SetFanMax((AsusFan)i, measuredMax[i]);
}
sameCount = 0;
FinishCalibration();
}
}
private void FinishCalibration()
{
timer.Enabled = false;
modeControl.SetPerformanceMode();
string label = "Measured - CPU: " + AppConfig.Get("fan_max_" + (int)AsusFan.CPU) * 100;
if (AppConfig.Get("fan_max_" + (int)AsusFan.GPU) > 0)
label = label + ", GPU: " + AppConfig.Get("fan_max_" + (int)AsusFan.GPU) * 100;
if (AppConfig.Get("fan_max_" + (int)AsusFan.Mid) > 0)
label = label + ", Mid: " + AppConfig.Get("fan_max_" + (int)AsusFan.Mid) * 100;
fansForm.LabelFansResult(label);
fansForm.InitAxis();
}
}
}

284
app/Fans.Designer.cs generated
View File

@@ -55,14 +55,16 @@ namespace GHelper
picturePerf = new PictureBox();
labelFans = new Label();
panelApplyFans = new Panel();
buttonCalibrate = new RButton();
labelFansResult = new Label();
checkApplyFans = new RCheckBox();
buttonReset = new RButton();
comboBoost = new RComboBox();
panelSliders = new Panel();
panelAdvanced = new Panel();
panelAdvancedApply = new Panel();
panelAdvancedAlways = new Panel();
checkApplyUV = new RCheckBox();
panelAdvancedApply = new Panel();
buttonApplyAdvanced = new RButton();
labelRisky = new Label();
panelUViGPU = new Panel();
@@ -105,6 +107,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();
@@ -122,6 +129,10 @@ namespace GHelper
labelGPUCore = new Label();
trackGPUCore = new TrackBar();
labelGPUCoreTitle = new Label();
panelGPUClockLimit = new Panel();
labelGPUClockLimit = new Label();
trackGPUClockLimit = new TrackBar();
labelGPUClockLimitTitle = new Label();
panelTitleGPU = new Panel();
pictureGPU = new PictureBox();
labelGPU = new Label();
@@ -141,6 +152,7 @@ namespace GHelper
panelApplyFans.SuspendLayout();
panelSliders.SuspendLayout();
panelAdvanced.SuspendLayout();
panelAdvancedAlways.SuspendLayout();
panelAdvancedApply.SuspendLayout();
panelUViGPU.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackUViGPU).BeginInit();
@@ -165,6 +177,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();
@@ -174,6 +189,8 @@ namespace GHelper
((System.ComponentModel.ISupportInitialize)trackGPUMemory).BeginInit();
panelGPUCore.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackGPUCore).BeginInit();
panelGPUClockLimit.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackGPUClockLimit).BeginInit();
panelTitleGPU.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureGPU).BeginInit();
panelNav.SuspendLayout();
@@ -223,7 +240,7 @@ namespace GHelper
tableFanCharts.Location = new Point(0, 66);
tableFanCharts.Margin = new Padding(4);
tableFanCharts.Name = "tableFanCharts";
tableFanCharts.Padding = new Padding(10, 0, 10, 10);
tableFanCharts.Padding = new Padding(10, 0, 10, 5);
tableFanCharts.RowCount = 2;
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Percent, 25F));
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Percent, 25F));
@@ -237,10 +254,10 @@ namespace GHelper
chartArea1.Name = "ChartArea1";
chartGPU.ChartAreas.Add(chartArea1);
chartGPU.Dock = DockStyle.Fill;
chartGPU.Location = new Point(12, 491);
chartGPU.Location = new Point(12, 493);
chartGPU.Margin = new Padding(2, 10, 2, 10);
chartGPU.Name = "chartGPU";
chartGPU.Size = new Size(782, 461);
chartGPU.Size = new Size(782, 463);
chartGPU.TabIndex = 17;
chartGPU.Text = "chartGPU";
title1.Name = "Title1";
@@ -254,7 +271,7 @@ namespace GHelper
chartCPU.Location = new Point(12, 10);
chartCPU.Margin = new Padding(2, 10, 2, 10);
chartCPU.Name = "chartCPU";
chartCPU.Size = new Size(782, 461);
chartCPU.Size = new Size(782, 463);
chartCPU.TabIndex = 14;
chartCPU.Text = "chartCPU";
title2.Name = "Title1";
@@ -265,10 +282,10 @@ namespace GHelper
chartArea3.Name = "ChartAreaXGM";
chartXGM.ChartAreas.Add(chartArea3);
chartXGM.Dock = DockStyle.Fill;
chartXGM.Location = new Point(12, 1453);
chartXGM.Location = new Point(12, 1459);
chartXGM.Margin = new Padding(2, 10, 2, 10);
chartXGM.Name = "chartXGM";
chartXGM.Size = new Size(782, 464);
chartXGM.Size = new Size(782, 463);
chartXGM.TabIndex = 14;
chartXGM.Text = "chartXGM";
title3.Name = "Title4";
@@ -280,10 +297,10 @@ namespace GHelper
chartArea4.Name = "ChartArea3";
chartMid.ChartAreas.Add(chartArea4);
chartMid.Dock = DockStyle.Fill;
chartMid.Location = new Point(12, 972);
chartMid.Location = new Point(12, 976);
chartMid.Margin = new Padding(2, 10, 2, 10);
chartMid.Name = "chartMid";
chartMid.Size = new Size(782, 461);
chartMid.Size = new Size(782, 463);
chartMid.TabIndex = 14;
chartMid.Text = "chartMid";
title4.Name = "Title3";
@@ -394,6 +411,7 @@ namespace GHelper
//
// panelApplyFans
//
panelApplyFans.Controls.Add(buttonCalibrate);
panelApplyFans.Controls.Add(labelFansResult);
panelApplyFans.Controls.Add(checkApplyFans);
panelApplyFans.Controls.Add(buttonReset);
@@ -404,16 +422,32 @@ namespace GHelper
panelApplyFans.Size = new Size(806, 116);
panelApplyFans.TabIndex = 43;
//
// buttonCalibrate
//
buttonCalibrate.Activated = false;
buttonCalibrate.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
buttonCalibrate.BackColor = SystemColors.ControlLight;
buttonCalibrate.BorderColor = Color.Transparent;
buttonCalibrate.BorderRadius = 2;
buttonCalibrate.FlatStyle = FlatStyle.Flat;
buttonCalibrate.Location = new Point(275, 40);
buttonCalibrate.Margin = new Padding(4, 2, 4, 2);
buttonCalibrate.Name = "buttonCalibrate";
buttonCalibrate.Secondary = true;
buttonCalibrate.Size = new Size(141, 50);
buttonCalibrate.TabIndex = 43;
buttonCalibrate.Text = "Calibrate";
buttonCalibrate.UseVisualStyleBackColor = false;
//
// labelFansResult
//
labelFansResult.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
labelFansResult.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
labelFansResult.ForeColor = Color.Red;
labelFansResult.Location = new Point(24, 4);
labelFansResult.Location = new Point(18, 2);
labelFansResult.Margin = new Padding(4, 0, 4, 0);
labelFansResult.Name = "labelFansResult";
labelFansResult.Size = new Size(762, 32);
labelFansResult.Size = new Size(771, 32);
labelFansResult.TabIndex = 42;
labelFansResult.TextAlign = ContentAlignment.TopRight;
labelFansResult.Visible = false;
//
// checkApplyFans
@@ -442,7 +476,7 @@ namespace GHelper
buttonReset.Margin = new Padding(4, 2, 4, 2);
buttonReset.Name = "buttonReset";
buttonReset.Secondary = true;
buttonReset.Size = new Size(274, 50);
buttonReset.Size = new Size(252, 50);
buttonReset.TabIndex = 18;
buttonReset.Text = Properties.Strings.FactoryDefaults;
buttonReset.UseVisualStyleBackColor = false;
@@ -480,6 +514,7 @@ namespace GHelper
//
panelAdvanced.AutoSize = true;
panelAdvanced.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelAdvanced.Controls.Add(panelAdvancedAlways);
panelAdvanced.Controls.Add(panelAdvancedApply);
panelAdvanced.Controls.Add(labelRisky);
panelAdvanced.Controls.Add(panelUViGPU);
@@ -488,48 +523,62 @@ namespace GHelper
panelAdvanced.Controls.Add(panelTemperature);
panelAdvanced.Controls.Add(panelTitleTemp);
panelAdvanced.Dock = DockStyle.Top;
panelAdvanced.Location = new Point(10, 1266);
panelAdvanced.Location = new Point(10, 1520);
panelAdvanced.Name = "panelAdvanced";
panelAdvanced.Size = new Size(520, 840);
panelAdvanced.Size = new Size(520, 888);
panelAdvanced.TabIndex = 14;
panelAdvanced.Visible = false;
//
// panelAdvancedApply
// panelAdvancedAlways
//
panelAdvancedApply.Controls.Add(checkApplyUV);
panelAdvancedApply.Controls.Add(buttonApplyAdvanced);
panelAdvancedApply.Dock = DockStyle.Top;
panelAdvancedApply.Location = new Point(0, 764);
panelAdvancedApply.Name = "panelAdvancedApply";
panelAdvancedApply.Size = new Size(520, 76);
panelAdvancedApply.TabIndex = 47;
panelAdvancedAlways.AutoSize = true;
panelAdvancedAlways.Controls.Add(checkApplyUV);
panelAdvancedAlways.Dock = DockStyle.Top;
panelAdvancedAlways.Location = new Point(0, 827);
panelAdvancedAlways.Name = "panelAdvancedAlways";
panelAdvancedAlways.Padding = new Padding(16, 0, 16, 15);
panelAdvancedAlways.Size = new Size(520, 61);
panelAdvancedAlways.TabIndex = 46;
//
// checkApplyUV
//
checkApplyUV.BackColor = SystemColors.ControlLight;
checkApplyUV.Dock = DockStyle.Top;
checkApplyUV.Enabled = false;
checkApplyUV.Location = new Point(255, 16);
checkApplyUV.Margin = new Padding(0);
checkApplyUV.Location = new Point(16, 0);
checkApplyUV.Margin = new Padding(15, 15, 0, 0);
checkApplyUV.Name = "checkApplyUV";
checkApplyUV.Padding = new Padding(16, 6, 16, 6);
checkApplyUV.Size = new Size(246, 46);
checkApplyUV.TabIndex = 50;
checkApplyUV.Size = new Size(488, 46);
checkApplyUV.TabIndex = 51;
checkApplyUV.Text = "Auto Apply";
checkApplyUV.TextAlign = ContentAlignment.MiddleCenter;
checkApplyUV.UseVisualStyleBackColor = false;
//
// panelAdvancedApply
//
panelAdvancedApply.AutoSize = true;
panelAdvancedApply.Controls.Add(buttonApplyAdvanced);
panelAdvancedApply.Dock = DockStyle.Top;
panelAdvancedApply.Location = new Point(0, 747);
panelAdvancedApply.Name = "panelAdvancedApply";
panelAdvancedApply.Padding = new Padding(15);
panelAdvancedApply.Size = new Size(520, 80);
panelAdvancedApply.TabIndex = 47;
//
// buttonApplyAdvanced
//
buttonApplyAdvanced.Activated = false;
buttonApplyAdvanced.BackColor = SystemColors.ControlLight;
buttonApplyAdvanced.BorderColor = Color.Transparent;
buttonApplyAdvanced.BorderRadius = 2;
buttonApplyAdvanced.Dock = DockStyle.Top;
buttonApplyAdvanced.FlatStyle = FlatStyle.Flat;
buttonApplyAdvanced.Location = new Point(10, 13);
buttonApplyAdvanced.Margin = new Padding(4, 2, 4, 2);
buttonApplyAdvanced.Location = new Point(15, 15);
buttonApplyAdvanced.Margin = new Padding(4, 2, 15, 15);
buttonApplyAdvanced.Name = "buttonApplyAdvanced";
buttonApplyAdvanced.Secondary = true;
buttonApplyAdvanced.Size = new Size(224, 50);
buttonApplyAdvanced.Size = new Size(490, 50);
buttonApplyAdvanced.TabIndex = 49;
buttonApplyAdvanced.Text = "Apply";
buttonApplyAdvanced.TextImageRelation = TextImageRelation.ImageBeforeText;
@@ -544,7 +593,7 @@ namespace GHelper
labelRisky.Margin = new Padding(0);
labelRisky.Name = "labelRisky";
labelRisky.Padding = new Padding(10, 10, 10, 5);
labelRisky.Size = new Size(520, 260);
labelRisky.Size = new Size(520, 243);
labelRisky.TabIndex = 46;
labelRisky.Text = resources.GetString("labelRisky.Text");
//
@@ -769,30 +818,35 @@ 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, 626);
panelPower.Size = new Size(520, 756);
panelPower.TabIndex = 43;
//
// panelApplyPower
//
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.Size = new Size(520, 70);
panelApplyPower.Padding = new Padding(15);
panelApplyPower.Size = new Size(520, 76);
panelApplyPower.TabIndex = 47;
//
// checkApplyPower
//
checkApplyPower.BackColor = SystemColors.ControlLight;
checkApplyPower.Location = new Point(13, 13);
checkApplyPower.Dock = DockStyle.Top;
checkApplyPower.Location = new Point(15, 15);
checkApplyPower.Margin = new Padding(0);
checkApplyPower.Name = "checkApplyPower";
checkApplyPower.Padding = new Padding(16, 6, 16, 6);
checkApplyPower.Size = new Size(489, 46);
checkApplyPower.Size = new Size(490, 46);
checkApplyPower.TabIndex = 45;
checkApplyPower.Text = "Apply Power Limits";
checkApplyPower.UseVisualStyleBackColor = false;
@@ -805,7 +859,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";
@@ -854,7 +908,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";
@@ -903,7 +957,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";
@@ -951,7 +1005,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);
@@ -984,7 +1038,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);
@@ -997,7 +1051,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);
@@ -1026,6 +1080,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;
@@ -1033,13 +1147,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;
//
@@ -1051,7 +1166,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";
@@ -1100,7 +1215,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";
@@ -1149,7 +1264,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";
@@ -1198,7 +1313,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";
@@ -1240,6 +1355,56 @@ namespace GHelper
labelGPUCoreTitle.TabIndex = 17;
labelGPUCoreTitle.Text = "Core Clock Offset";
//
// 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";
//
// panelTitleGPU
//
panelTitleGPU.AutoSize = true;
@@ -1396,6 +1561,7 @@ namespace GHelper
panelSliders.PerformLayout();
panelAdvanced.ResumeLayout(false);
panelAdvanced.PerformLayout();
panelAdvancedAlways.ResumeLayout(false);
panelAdvancedApply.ResumeLayout(false);
panelUViGPU.ResumeLayout(false);
panelUViGPU.PerformLayout();
@@ -1431,6 +1597,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);
@@ -1445,6 +1615,9 @@ namespace GHelper
panelGPUCore.ResumeLayout(false);
panelGPUCore.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackGPUCore).EndInit();
panelGPUClockLimit.ResumeLayout(false);
panelGPUClockLimit.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackGPUClockLimit).EndInit();
panelTitleGPU.ResumeLayout(false);
panelTitleGPU.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureGPU).EndInit();
@@ -1502,7 +1675,6 @@ namespace GHelper
private RCheckBox checkApplyFans;
private RButton buttonReset;
private Label labelBoost;
private RCheckBox checkApplyUV;
private RComboBox comboBoost;
private PictureBox picturePerf;
private Label labelFans;
@@ -1546,5 +1718,17 @@ namespace GHelper
private Label labelTemp;
private Label labelLeftTemp;
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;
private RButton buttonCalibrate;
}
}

View File

@@ -1,6 +1,8 @@
using GHelper.Gpu.NVidia;
using GHelper.Fan;
using GHelper.Gpu.NVidia;
using GHelper.Mode;
using GHelper.UI;
using GHelper.USB;
using Ryzen;
using System.Diagnostics;
using System.Windows.Forms.DataVisualization.Charting;
@@ -18,20 +20,23 @@ namespace GHelper
Series seriesMid;
Series seriesXGM;
static int MinRPM, MaxRPM;
static bool gpuVisible = true;
static bool fanRpm = true;
const int fansMax = 100;
NvidiaGpuControl? nvControl = null;
ModeControl modeControl = Program.modeControl;
FanSensorControl fanSensorControl;
public Fans()
{
InitializeComponent();
fanSensorControl = new FanSensorControl(this);
//float dpi = ControlHelper.GetDpiScale(this).Value;
//comboModes.Size = new Size(comboModes.Width, (int)dpi * 18);
comboModes.ClientSize = new Size(comboModes.Width, comboModes.Height - 4);
@@ -56,10 +61,10 @@ namespace GHelper
buttonApplyAdvanced.Text = Properties.Strings.Apply;
checkApplyUV.Text = Properties.Strings.AutoApply;
buttonCalibrate.Text = Properties.Strings.Calibrate;
InitTheme(true);
MinRPM = 18;
MaxRPM = HardwareControl.GetFanMax();
labelTip.Visible = false;
labelTip.BackColor = Color.Transparent;
@@ -75,17 +80,26 @@ namespace GHelper
seriesMid.Color = colorEco;
seriesXGM.Color = Color.Orange;
chartCPU.MouseMove += ChartCPU_MouseMove;
chartCPU.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.CPU);
chartCPU.MouseUp += ChartCPU_MouseUp;
chartCPU.MouseLeave += ChartCPU_MouseLeave;
chartGPU.MouseMove += ChartCPU_MouseMove;
chartGPU.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.GPU);
chartGPU.MouseUp += ChartCPU_MouseUp;
chartGPU.MouseLeave += ChartCPU_MouseLeave;
chartMid.MouseMove += ChartCPU_MouseMove;
chartMid.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.Mid);
chartMid.MouseUp += ChartCPU_MouseUp;
chartMid.MouseLeave += ChartCPU_MouseLeave;
chartXGM.MouseMove += ChartCPU_MouseMove;
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 +123,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 +138,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 +150,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 +165,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;
@@ -178,12 +204,42 @@ namespace GHelper
checkApplyUV.Click += CheckApplyUV_Click;
buttonCalibrate.Click += ButtonCalibrate_Click;
ToggleNavigation(0);
if (Program.acpi.DeviceGet(AsusACPI.DevsCPUFanCurve) < 0) buttonCalibrate.Visible = false;
FormClosed += Fans_FormClosed;
}
private void ButtonCalibrate_Click(object? sender, EventArgs e)
{
buttonCalibrate.Enabled = false;
fanSensorControl.StartCalibration();
}
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 +257,7 @@ namespace GHelper
InitMode();
InitFans();
InitPower();
InitBoost();
InitPowerPlan();
InitUV();
InitGPU();
}
@@ -285,6 +341,19 @@ namespace GHelper
private void VisualiseAdvanced()
{
if (!RyzenControl.IsSupportedUV())
{
panelTitleAdvanced.Visible = false;
labelRisky.Visible = false;
panelUV.Visible = false;
panelUViGPU.Visible = false;
}
if (!RyzenControl.IsSupportedUViGPU())
{
panelUViGPU.Visible = false;
}
labelUV.Text = trackUV.Value.ToString();
labelUViGPU.Text = trackUViGPU.Value.ToString();
labelTemp.Text = (trackTemp.Value < RyzenControl.MaxTemp) ? trackTemp.Value.ToString() + "°C" : "Default";
@@ -398,7 +467,7 @@ namespace GHelper
return;
}
if (HardwareControl.GpuControl is null) HardwareControl.RecreateGpuControl();
if (HardwareControl.GpuControl is null || !HardwareControl.GpuControl.IsValid) HardwareControl.RecreateGpuControl();
if (HardwareControl.GpuControl is not null && HardwareControl.GpuControl.IsNvidia)
{
@@ -416,24 +485,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;
@@ -444,6 +518,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);
@@ -469,8 +544,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)
@@ -482,6 +573,7 @@ namespace GHelper
AppConfig.SetMode("gpu_core", trackGPUCore.Value);
AppConfig.SetMode("gpu_memory", trackGPUMemory.Value);
VisualiseGPUSettings();
}
@@ -494,31 +586,52 @@ namespace GHelper
VisualiseGPUSettings();
}
static string ChartPercToRPM(int percentage, string unit = "")
static string ChartYLabel(int percentage, AsusFan device, string unit = "")
{
if (percentage == 0) return "OFF";
return (200 * Math.Round((float)(MinRPM * 100 + (MaxRPM - MinRPM) * percentage) / 200)).ToString() + unit;
int Min = FanSensorControl.DEFAULT_FAN_MIN;
int Max = FanSensorControl.GetFanMax(device);
if (fanRpm)
return (200 * Math.Round((float)(Min * 100 + (Max - Min) * 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; i += 10)
{
chart.ChartAreas[0].AxisY.CustomLabels.Add(i - 2, i + 2, ChartYLabel(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)
{
string title = "";
string scale = ", RPM/°C";
switch (device)
{
case AsusFan.CPU:
title = Properties.Strings.FanProfileCPU;
title = Properties.Strings.FanProfileCPU + scale;
break;
case AsusFan.GPU:
title = Properties.Strings.FanProfileGPU;
title = Properties.Strings.FanProfileGPU + scale;
break;
case AsusFan.Mid:
title = Properties.Strings.FanProfileMid;
title = Properties.Strings.FanProfileMid + scale;
break;
case AsusFan.XGM:
title = "XG Mobile";
title = "XG Mobile" + scale;
break;
}
@@ -538,12 +651,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));
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;
@@ -578,11 +686,33 @@ 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();
bool batterySaver = PowerNative.GetBatterySaverStatus();
comboPowerMode.Enabled = !batterySaver;
if (batterySaver)
comboPowerMode.SelectedIndex = 0;
else
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)
@@ -614,16 +744,34 @@ namespace GHelper
}
public void InitAxis()
{
if (this == null || this.Text == "") return;
Invoke(delegate
{
buttonCalibrate.Enabled = true;
SetAxis(chartCPU, AsusFan.CPU);
SetAxis(chartGPU, AsusFan.GPU);
if (chartMid.Visible) SetAxis(chartMid, AsusFan.Mid);
});
}
public void LabelFansResult(string text)
{
labelFansResult.Text = text;
labelFansResult.Visible = (text.Length > 0);
if (text.Length > 0) Logger.WriteLine(text);
if (this == null || this.Text == "") return;
Invoke(delegate
{
labelFansResult.Text = text;
labelFansResult.Visible = (text.Length > 0);
});
}
private void Fans_FormClosing(object? sender, FormClosingEventArgs e)
{
/*
if (e.CloseReason == CloseReason.UserClosing)
{
@@ -655,7 +803,11 @@ namespace GHelper
}
else
{
labelLeftA0.Text = "CPU Slow (SPL + sPPT)";
if (RyzenControl.IsAMD())
labelLeftA0.Text = "CPU Slow (SPL + sPPT)";
else
labelLeftA0.Text = "CPU (PL1 + PL2)";
labelLeftC1.Text = "CPU Fast (fPPT)";
panelC1.Visible = modeC1;
}
@@ -752,7 +904,7 @@ namespace GHelper
try
{
if (chartCount > 2)
Size = MinimumSize = new Size(0, (int)(ControlHelper.GetDpiScale(this).Value * (chartCount * 200 + 100)));
Size = MinimumSize = new Size(Size.Width, (int)(ControlHelper.GetDpiScale(this).Value * (chartCount * 200 + 100)));
}
catch (Exception ex)
{
@@ -851,18 +1003,24 @@ namespace GHelper
modeControl.ResetPerformanceMode();
if (Program.acpi.IsXGConnected()) AsusUSB.ResetXGM();
InitPowerPlan();
if (Program.acpi.IsXGConnected()) XGM.Reset();
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);
@@ -873,11 +1031,10 @@ namespace GHelper
}
private void ChartCPU_MouseUp(object? sender, MouseEventArgs e)
private void Chart_Save()
{
curPoint = null;
curIndex = -1;
labelTip.Visible = false;
SaveProfile(seriesCPU, AsusFan.CPU);
@@ -890,11 +1047,22 @@ namespace GHelper
SaveProfile(seriesXGM, AsusFan.XGM);
modeControl.AutoFans();
}
private void ChartCPU_MouseMove(object? sender, MouseEventArgs e)
private void ChartCPU_MouseUp(object? sender, MouseEventArgs e)
{
Chart_Save();
}
private void ChartCPU_MouseLeave(object? sender, EventArgs e)
{
curPoint = null;
curIndex = -1;
labelTip.Visible = false;
}
private void ChartCPU_MouseMove(object? sender, MouseEventArgs e, AsusFan device)
{
if (sender is null) return;
@@ -955,7 +1123,7 @@ namespace GHelper
tip = true;
}
labelTip.Text = Math.Round(curPoint.XValue) + "C, " + ChartPercToRPM((int)curPoint.YValues[0], " " + Properties.Strings.RPM);
labelTip.Text = Math.Round(curPoint.XValue) + "C, " + ChartYLabel((int)curPoint.YValues[0], device, " " + Properties.Strings.RPM);
labelTip.Top = e.Y + ((Control)sender).Top;
labelTip.Left = e.X - 50;

View File

@@ -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>

View File

@@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net7.0-windows8.0</TargetFramework>
<TargetFramework>net7.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>True</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
@@ -11,12 +11,11 @@
<StartupObject>GHelper.Program</StartupObject>
<ApplicationIcon>favicon.ico</ApplicationIcon>
<Platforms>AnyCPU;x64</Platforms>
<SupportedOSPlatformVersion>8.0</SupportedOSPlatformVersion>
<AssemblyName>GHelper</AssemblyName>
<PlatformTarget>AnyCPU</PlatformTarget>
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<AssemblyVersion>0.96</AssemblyVersion>
<AssemblyVersion>0.131</AssemblyVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
@@ -60,7 +59,6 @@
<ItemGroup>
<PackageReference Include="FftSharp" Version="2.0.0" />
<PackageReference Include="hidlibrary" Version="3.3.40" />
<PackageReference Include="HidSharpCore" Version="1.2.1.1" />
<PackageReference Include="NAudio" Version="2.1.0" />
<PackageReference Include="NvAPIWrapper.Net" Version="0.8.1.101" />

View File

@@ -1,6 +1,7 @@
using GHelper.Display;
using GHelper.Gpu.NVidia;
using GHelper.Helpers;
using GHelper.USB;
using System.Diagnostics;
namespace GHelper.Gpu
@@ -10,6 +11,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;
@@ -20,40 +25,46 @@ namespace GHelper.Gpu
int eco = Program.acpi.DeviceGet(AsusACPI.GPUEco);
int mux = Program.acpi.DeviceGet(AsusACPI.GPUMux);
if (mux < 0) mux = Program.acpi.DeviceGet(AsusACPI.GPUMuxVivo);
Logger.WriteLine("Eco flag : " + eco);
Logger.WriteLine("Mux flag : " + mux);
int GpuMode;
settings.VisualiseGPUButtons(eco >= 0, mux >= 0);
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 suported
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 = Program.acpi.GetFan(AsusFan.GPU) >= 0;
settings.HideGPUModes((bool)gpuExists);
}
}
AppConfig.Set("gpu_mode", GpuMode);
AppConfig.Set("gpu_mode", gpuMode);
settings.VisualiseGPUMode(gpuMode);
Aura.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)
{
@@ -64,12 +75,15 @@ namespace GHelper.Gpu
var restart = false;
var changed = false;
int status;
if (CurrentGPU == AsusACPI.GPUModeUltimate)
{
DialogResult dialogResult = MessageBox.Show(Properties.Strings.AlertUltimateOff, Properties.Strings.AlertUltimateTitle, MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
Program.acpi.DeviceSet(AsusACPI.GPUMux, 1, "GPUMux");
status = Program.acpi.DeviceSet(AsusACPI.GPUMux, 1, "GPUMux");
if (status != 1) Program.acpi.DeviceSet(AsusACPI.GPUMuxVivo, 1, "GPUMuxVivo");
restart = true;
changed = true;
}
@@ -79,7 +93,13 @@ namespace GHelper.Gpu
DialogResult dialogResult = MessageBox.Show(Properties.Strings.AlertUltimateOn, Properties.Strings.AlertUltimateTitle, MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
Program.acpi.DeviceSet(AsusACPI.GPUMux, 0, "GPUMux");
if (AppConfig.NoAutoUltimate())
{
Program.acpi.SetGPUEco(0);
Thread.Sleep(100);
}
status = Program.acpi.DeviceSet(AsusACPI.GPUMux, 0, "GPUMux");
if (status != 1) Program.acpi.DeviceSet(AsusACPI.GPUMuxVivo, 0, "GPUMuxVivo");
restart = true;
changed = true;
}
@@ -125,6 +145,7 @@ namespace GHelper.Gpu
if (eco == 1)
{
/*
if (NvidiaSmi.GetDisplayActiveStatus())
{
DialogResult dialogResult = MessageBox.Show(Properties.Strings.EnableOptimusText, Properties.Strings.EnableOptimusTitle, MessageBoxButtons.YesNo);
@@ -134,6 +155,7 @@ namespace GHelper.Gpu
return;
}
}
*/
HardwareControl.KillGPUApps();
}
@@ -144,7 +166,7 @@ namespace GHelper.Gpu
if (status == 0 && eco == 1 && hardWay) RestartGPU();
await Task.Delay(TimeSpan.FromMilliseconds(100));
await Task.Delay(TimeSpan.FromMilliseconds(AppConfig.Get("refresh_delay", 500)));
settings.Invoke(delegate
{
@@ -166,10 +188,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 +203,7 @@ namespace GHelper.Gpu
{
bool GpuAuto = AppConfig.Is("gpu_auto");
bool ForceGPU = AppConfig.ContainsModel("503");
bool ForceGPU = AppConfig.IsForceSetGPUMode();
int GpuMode = AppConfig.Get("gpu_mode");
@@ -188,14 +214,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 +280,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");
XGM.Init();
}
}
public void ToggleXGM()
@@ -287,7 +299,9 @@ namespace GHelper.Gpu
if (Program.acpi.DeviceGet(AsusACPI.GPUXG) == 1)
{
XGM.Reset();
HardwareControl.KillGPUApps();
DialogResult dialogResult = MessageBox.Show("Did you close all applications running on XG Mobile?", "Disabling XG Mobile", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
@@ -297,13 +311,23 @@ namespace GHelper.Gpu
}
else
{
Program.acpi.DeviceSet(AsusACPI.GPUXG, 1, "GPU XGM");
AsusUSB.ApplyXGMLight(AppConfig.Is("xmg_light"));
if (AppConfig.Is("xgm_special"))
Program.acpi.DeviceSet(AsusACPI.GPUXG, 0x101, "GPU XGM");
else
Program.acpi.DeviceSet(AsusACPI.GPUXG, 1, "GPU XGM");
InitXGM();
XGM.Light(AppConfig.Is("xmg_light"));
await Task.Delay(TimeSpan.FromSeconds(15));
if (AppConfig.IsMode("auto_apply"))
AsusUSB.SetXGMFan(AppConfig.GetFanConfig(AsusFan.XGM));
XGM.SetFan(AppConfig.GetFanConfig(AsusFan.XGM));
HardwareControl.RecreateGpuControl();
}
settings.Invoke(delegate
@@ -321,5 +345,16 @@ namespace GHelper.Gpu
}
}
// Manually forcing standard mode on shutdown/hibernate for some exotic cases
// https://github.com/seerge/g-helper/pull/855
public void StandardModeFix()
{
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");
Program.acpi.SetGPUEco(0);
}
}
}

View File

@@ -15,8 +15,11 @@ public class NvidiaGpuControl : IGpuControl
public static int MaxCoreOffset => AppConfig.Get("max_gpu_core", 250);
public static int MaxMemoryOffset => AppConfig.Get("max_gpu_memory", 250);
public const int MinCoreOffset = -250;
public const int MinMemoryOffset = -250;
public static int MinCoreOffset = AppConfig.Get("min_gpu_core", -250);
public static int MinMemoryOffset = AppConfig.Get("min_gpu_memory", -250);
public const int MinClockLimit = 400;
public const int MaxClockLimit = 3000;
private static PhysicalGPU? _internalGpu;
@@ -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;
}

View File

@@ -1,17 +1,29 @@
using GHelper;
using GHelper.Fan;
using GHelper.Gpu;
using GHelper.Gpu.NVidia;
using GHelper.Gpu.AMD;
using GHelper.Helpers;
using System.Diagnostics;
using System.Management;
using GHelper.Battery;
public static class HardwareControl
{
public static IGpuControl? GpuControl;
public static float? cpuTemp = -1;
public static float? batteryDischarge = -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;
@@ -20,38 +32,7 @@ public static class HardwareControl
public static int? gpuUse;
public static int GetFanMax()
{
int max = 58;
int configMax = AppConfig.Get("fan_max");
if (configMax > 80) configMax = 0; // skipping inadvequate settings
if (AppConfig.ContainsModel("401")) max = 72;
else if (AppConfig.ContainsModel("503")) max = 68;
return Math.Max(max, configMax);
}
public static void SetFanMax(int fan)
{
AppConfig.Set("fan_max", fan);
}
public static string FormatFan(int fan)
{
// fix for old models
if (fan < 0)
{
fan += 65536;
if (fan <= 0 || fan > 100) return null; //nothing reasonable
}
int fanMax = GetFanMax();
if (fan > fanMax && fan < 80) SetFanMax(fan);
if (AppConfig.Is("fan_rpm"))
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
}
static long lastUpdate;
private static int GetGpuUse()
{
@@ -70,15 +51,115 @@ public static class HardwareControl
}
public static void ReadSensors()
public static void GetBatteryStatus()
{
batteryDischarge = -1;
gpuTemp = -1;
gpuUse = -1;
cpuFan = FormatFan(Program.acpi.DeviceGet(AsusACPI.CPU_Fan));
gpuFan = FormatFan(Program.acpi.DeviceGet(AsusACPI.GPU_Fan));
midFan = FormatFan(Program.acpi.DeviceGet(AsusACPI.Mid_Fan));
batteryRate = 0;
chargeCapacity = 0;
try
{
ManagementScope scope = new ManagementScope("root\\WMI");
ObjectQuery query = new ObjectQuery("SELECT * FROM BatteryStatus");
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)
batteryRate = chargeRate / 1000;
else
batteryRate = -dischargeRate / 1000;
}
}
catch (Exception ex)
{
Debug.WriteLine("Discharge Reading: " + ex.Message);
}
}
public static void ReadFullChargeCapacity()
{
if (fullCapacity > 0) return;
try
{
ManagementScope scope = new ManagementScope("root\\WMI");
ObjectQuery query = new ObjectQuery("SELECT * FROM BatteryFullChargedCapacity");
using ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
foreach (ManagementObject obj in searcher.Get().Cast<ManagementObject>())
{
fullCapacity = Convert.ToDecimal(obj["FullChargedCapacity"]);
}
}
catch (Exception ex)
{
Debug.WriteLine("Full Charge Reading: " + ex.Message);
}
}
public static void ReadDesignCapacity()
{
if (designCapacity > 0) return;
try
{
ManagementScope scope = new ManagementScope("root\\WMI");
ObjectQuery query = new ObjectQuery("SELECT * FROM BatteryStaticData");
using ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
foreach (ManagementObject obj in searcher.Get().Cast<ManagementObject>())
{
designCapacity = Convert.ToDecimal(obj["DesignedCapacity"]);
}
}
catch (Exception ex)
{
Debug.WriteLine("Design Capacity Reading: " + ex.Message);
}
}
public static void RefreshBatteryHealth()
{
batteryHealth = GetBatteryHealth() * 100;
}
public static decimal GetBatteryHealth()
{
if (designCapacity is null)
{
ReadDesignCapacity();
}
ReadFullChargeCapacity();
if (designCapacity is null || fullCapacity is null || designCapacity == 0 || fullCapacity == 0)
{
return -1;
}
decimal health = (decimal)fullCapacity / (decimal)designCapacity;
Logger.WriteLine("Design Capacity: " + designCapacity + "mWh, Full Charge Capacity: " + fullCapacity + "mWh, Health: " + health + "%");
return health;
}
public static float? GetCPUTemp() {
var last = DateTimeOffset.Now.ToUnixTimeSeconds();
if (Math.Abs(last - lastUpdate) < 2) return cpuTemp;
lastUpdate = last;
cpuTemp = Program.acpi.DeviceGet(AsusACPI.Temp_CPU);
@@ -94,6 +175,23 @@ public static class HardwareControl
Debug.WriteLine("Failed reading CPU temp :" + ex.Message);
}
return cpuTemp;
}
public static void ReadSensors()
{
batteryRate = 0;
gpuTemp = -1;
gpuUse = -1;
cpuFan = FanSensorControl.FormatFan(AsusFan.CPU, Program.acpi.GetFan(AsusFan.CPU));
gpuFan = FanSensorControl.FormatFan(AsusFan.GPU, Program.acpi.GetFan(AsusFan.GPU));
midFan = FanSensorControl.FormatFan(AsusFan.Mid, Program.acpi.GetFan(AsusFan.Mid));
cpuTemp = GetCPUTemp();
try
{
gpuTemp = GpuControl?.GetCurrentTemperature();
@@ -108,17 +206,16 @@ public static class HardwareControl
if (gpuTemp is null || gpuTemp < 0)
gpuTemp = Program.acpi.DeviceGet(AsusACPI.Temp_GPU);
try
ReadFullChargeCapacity();
GetBatteryStatus();
if (fullCapacity > 0 && chargeCapacity > 0)
{
using (var cb = new PerformanceCounter("Power Meter", "Power", "Power Meter (0)", true))
{
batteryDischarge = cb.NextValue() / 1000;
}
}
catch
{
Debug.WriteLine("Failed reading Battery discharge");
batteryCapacity = Math.Min(100, ((decimal)chargeCapacity / (decimal)fullCapacity) * 100);
if (batteryCapacity > 99) BatteryControl.UnSetBatteryLimitFull();
}
}
public static bool IsUsedGPU(int threshold = 10)
@@ -172,18 +269,20 @@ public static class HardwareControl
if (_gpuControl.IsValid)
{
GpuControl = _gpuControl;
if (GpuControl.FullName.Contains("6850M")) AppConfig.Set("xgm_special", 1);
Logger.WriteLine(GpuControl.FullName);
return;
}
_gpuControl.Dispose();
Logger.WriteLine("dGPU not found");
GpuControl = null;
}
catch (Exception ex)
{
Debug.WriteLine(ex.ToString());
Debug.WriteLine("Can't connect to GPU " + ex.ToString());
}
}

View File

@@ -0,0 +1,142 @@
using GHelper.Display;
using GHelper.Mode;
using Microsoft.Win32;
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();
string internalName = AppConfig.GetString("internal_display");
foreach (var device in devices)
{
if (device.outputTechnology != ScreenInterrogatory.DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL &&
device.outputTechnology != ScreenInterrogatory.DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED
&& device.monitorFriendlyDeviceName != internalName)
{
Logger.WriteLine("Found external screen: " + device.monitorFriendlyDeviceName + ":" + device.outputTechnology.ToString());
//Already found one, we do not have to check whether there are more
return true;
}
}
return false;
}
public bool IsClamshellEnabled()
{
return AppConfig.Is("toggle_clamshell_mode");
}
public bool IsChargerConnected()
{
return SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online;
}
public bool IsClamshellReady()
{
return IsExternalDisplayConnected() && IsChargerConnected();
}
public void ToggleLidAction()
{
if (!IsClamshellEnabled())
{
return;
}
if (IsClamshellReady())
{
EnableClamshellMode();
}
else
{
DisableClamshellMode();
}
}
public static void DisableClamshellMode()
{
PowerNative.SetLidAction(GetDefaultLidAction(), true);
Logger.WriteLine("Disengaging Clamshell Mode");
}
public static void EnableClamshellMode()
{
PowerNative.SetLidAction(0, true);
Logger.WriteLine("Engaging Clamshell Mode");
}
public void UnregisterDisplayEvents()
{
SystemEvents.DisplaySettingsChanged -= SystemEvents_DisplaySettingsChanged;
}
public void RegisterDisplayEvents()
{
SystemEvents.DisplaySettingsChanged += SystemEvents_DisplaySettingsChanged;
}
private void SystemEvents_DisplaySettingsChanged(object? sender, EventArgs e)
{
Logger.WriteLine("Display configuration changed.");
if (IsClamshellEnabled())
ToggleLidAction();
if (Program.settingsForm.Visible)
Program.screenControl.InitScreen();
}
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;
}
}
}

View File

@@ -0,0 +1,21 @@
namespace GHelper.Helpers
{
public class ColorUtilities
{
// Method to get the weighted average between two colors
public static Color GetWeightedAverage(Color color1, Color color2, float weight)
{
int red = (int)Math.Round(color1.R * (1 - weight) + color2.R * weight);
int green = (int)Math.Round(color1.G * (1 - weight) + color2.G * weight);
int blue = (int)Math.Round(color1.B * (1 - weight) + color2.B * weight);
red = Math.Min(255, Math.Max(0, red));
green = Math.Min(255, Math.Max(0, green));
blue = Math.Min(255, Math.Max(0, blue));
return Color.FromArgb(red, green, blue);
}
}
}

View File

@@ -9,6 +9,8 @@ namespace GHelper.Helpers
{
static List<string> services = new() {
"ArmouryCrateControlInterface",
"ASUSOptimization",
"AsusAppService",
"ASUSLinkNear",
"ASUSLinkRemote",
@@ -16,9 +18,7 @@ namespace GHelper.Helpers
"ASUSSwitch",
"ASUSSystemAnalysis",
"ASUSSystemDiagnosis",
"ArmouryCrateControlInterface",
"AsusCertService",
"ASUSOptimization"
"AsusCertService"
};
public static void SetChargeLimit(int newValue)
@@ -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;

View File

@@ -1,10 +1,5 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Diagnostics;
using System.Security.Principal;
using System.Text;
using System.Threading.Tasks;
namespace GHelper.Helpers
{
@@ -103,7 +98,7 @@ namespace GHelper.Helpers
{
try
{
string script = $"Set-Service -Name \"{serviceName}\" -Status stopped -StartupType disabled";
string script = $"Get-Service -Name \"{serviceName}\" | Stop-Service -Force -PassThru | Set-Service -StartupType Disabled";
Logger.WriteLine(script);
RunCMD("powershell", script);
}
@@ -137,7 +132,13 @@ namespace GHelper.Helpers
cmd.StartInfo.FileName = name;
cmd.StartInfo.Arguments = args;
cmd.Start();
Logger.WriteLine(cmd.StandardOutput.ReadToEnd());
Logger.WriteLine(args);
string result = cmd.StandardOutput.ReadToEnd().Replace(Environment.NewLine, " ").Trim(' ');
Logger.WriteLine(result);
cmd.WaitForExit();
}

View File

@@ -10,8 +10,8 @@ public class Startup
public static bool IsScheduled()
{
TaskService taskService = new TaskService();
return (taskService.RootFolder.AllTasks.Any(t => t.Name == taskName));
using (TaskService taskService = new TaskService())
return (taskService.RootFolder.AllTasks.Any(t => t.Name == taskName));
}
public static void ReScheduleAdmin()
@@ -23,6 +23,26 @@ public class Startup
}
}
public static void StartupCheck()
{
using (TaskService taskService = new TaskService())
{
var task = taskService.RootFolder.AllTasks.FirstOrDefault(t => t.Name == taskName);
if (task != null)
{
string strExeFilePath = Application.ExecutablePath.Trim();
string action = task.Definition.Actions.FirstOrDefault()!.ToString().Trim();
if (!strExeFilePath.Equals(action, StringComparison.OrdinalIgnoreCase) && !File.Exists(action))
{
Logger.WriteLine("File doesn't exist: " + action);
Logger.WriteLine("Rescheduling to: " + strExeFilePath);
UnSchedule();
Schedule();
}
}
}
}
public static void Schedule()
{

View File

@@ -132,6 +132,9 @@ namespace GHelper.Helpers
public void RunToast(string text, ToastIcon? icon = null)
{
if (AppConfig.Is("disable_osd")) return;
Program.settingsForm.Invoke(delegate
{
//Hide();

View File

@@ -1,10 +1,11 @@
using GHelper.Display;
using GHelper.Helpers;
using GHelper.Mode;
using GHelper.USB;
using Microsoft.Win32;
using NAudio.CoreAudioApi;
using System.Diagnostics;
using System.Management;
using System.Text.RegularExpressions;
namespace GHelper.Input
{
@@ -20,6 +21,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();
@@ -57,7 +60,7 @@ namespace GHelper.Input
if (backlightActivity && iddle.TotalSeconds > kb_timeout)
{
backlightActivity = false;
AsusUSB.ApplyBrightness(0, "Timeout");
Aura.ApplyBrightness(0, "Timeout");
}
if (!backlightActivity && iddle.TotalSeconds < kb_timeout)
@@ -66,7 +69,7 @@ namespace GHelper.Input
SetBacklightAuto();
}
//Debug.WriteLine(iddle.TotalSeconds);
//Logger.WriteLine("Iddle: " + iddle.TotalSeconds);
}
public void Init()
@@ -102,39 +105,121 @@ 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);
if (!AppConfig.ContainsModel("Z13"))
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.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);
}
}
public static int[] ParseHexValues(string input)
{
string pattern = @"\b(0x[0-9A-Fa-f]{1,2}|[0-9A-Fa-f]{1,2})\b";
if (!Regex.IsMatch(input, $"^{pattern}(\\s+{pattern})*$")) return new int[0];
MatchCollection matches = Regex.Matches(input, pattern);
int[] hexValues = new int[matches.Count];
for (int i = 0; i < matches.Count; i++)
{
string hexValueStr = matches[i].Value;
int hexValue = int.Parse(hexValueStr.StartsWith("0x", StringComparison.OrdinalIgnoreCase)
? hexValueStr.Substring(2)
: hexValueStr, System.Globalization.NumberStyles.HexNumber);
hexValues[i] = hexValue;
}
return hexValues;
}
static void CustomKey(string configKey = "m3")
{
string command = AppConfig.GetString(configKey + "_custom");
int intKey;
int[] hexKeys = new int[0];
try
{
intKey = Convert.ToInt32(command, 16);
hexKeys = ParseHexValues(command);
}
catch
{
intKey = -1;
}
switch (hexKeys.Length)
{
case 1:
KeyboardHook.KeyPress((Keys)hexKeys[0]);
break;
case 2:
KeyboardHook.KeyKeyPress((Keys)hexKeys[0], (Keys)hexKeys[1]);
break;
case 3:
KeyboardHook.KeyKeyKeyPress((Keys)hexKeys[0], (Keys)hexKeys[1], (Keys)hexKeys[3]);
break;
default:
LaunchProcess(command);
break;
}
if (intKey > 0)
KeyboardHook.KeyPress((Keys)intKey);
else
LaunchProcess(command);
}
static void SetBrightness(int delta)
{
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);
}
}
@@ -145,7 +230,7 @@ namespace GHelper.Input
{
Logger.WriteLine(e.Key.ToString());
if (AppConfig.ContainsModel("Z13"))
if (AppConfig.NoMKeys())
{
switch (e.Key)
{
@@ -158,13 +243,20 @@ namespace GHelper.Input
case Keys.F4:
KeyProcess("m3");
return;
}
}
if (AppConfig.IsZ13() || AppConfig.IsDUO())
{
switch (e.Key)
{
case Keys.F11:
HandleEvent(199);
return;
}
}
if (AppConfig.ContainsModel("GA401I") && !AppConfig.ContainsModel("GA401IHR"))
if (AppConfig.NoAura())
{
switch (e.Key)
{
@@ -202,26 +294,22 @@ namespace GHelper.Input
KeyboardHook.KeyPress(Keys.Snapshot);
break;
case Keys.F7:
if (AppConfig.ContainsModel("TUF"))
Program.toast.RunToast(ScreenBrightness.Adjust(-10) + "%", ToastIcon.BrightnessDown);
HandleOptimizationEvent(16);
SetBrightness(-10);
break;
case Keys.F8:
if (AppConfig.ContainsModel("TUF"))
Program.toast.RunToast(ScreenBrightness.Adjust(+10) + "%", ToastIcon.BrightnessUp);
HandleOptimizationEvent(32);
SetBrightness(+10);
break;
case Keys.F9:
KeyboardHook.KeyWinPress(Keys.P);
KeyboardHook.KeyKeyPress(Keys.LWin, Keys.P);
break;
case Keys.F10:
HandleOptimizationEvent(107);
ToggleTouchpadEvent(true);
break;
case Keys.F11:
HandleOptimizationEvent(108);
SleepEvent();
break;
case Keys.F12:
KeyboardHook.KeyWinPress(Keys.A);
KeyboardHook.KeyKeyPress(Keys.LWin, Keys.A);
break;
case Keys.VolumeDown:
KeyProcess("m1");
@@ -229,18 +317,66 @@ 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))
{
switch (e.Key)
{
case Keys.VolumeDown:
// Screen brightness down on CTRL+VolDown
SetBrightness(-10);
break;
case Keys.VolumeUp:
// Screen brightness up on CTRL+VolUp
SetBrightness(+10);
break;
}
}
if (e.Modifier == (ModifierKeys.Shift))
{
switch (e.Key)
{
case Keys.VolumeDown:
// Keyboard backlight down on SHIFT+VolDown
SetBacklight(-1);
break;
case Keys.VolumeUp:
// Keyboard backlight up on SHIFT+VolUp
SetBacklight(1);
break;
}
}
}
@@ -260,6 +396,8 @@ namespace GHelper.Input
action = "micmute";
if (name == "fnc")
action = "fnlock";
if (name == "fne")
action = "calculator";
}
switch (action)
@@ -275,7 +413,7 @@ namespace GHelper.Input
break;
case "screen":
Logger.WriteLine("Screen off toggle");
NativeMethods.TurnOffScreen(Program.settingsForm.Handle);
NativeMethods.TurnOffScreen();
break;
case "miniled":
screenControl.ToogleMiniled();
@@ -284,13 +422,20 @@ 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
try
{
Program.SettingsToggle();
});
Program.settingsForm.BeginInvoke(delegate
{
Program.SettingsToggle();
});
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
break;
case "fnlock":
ToggleFnLock();
@@ -298,17 +443,26 @@ 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);
break;
case "screenpad_down":
SetScreenpad(-10);
break;
case "custom":
CustomKey(name);
break;
case "calculator":
LaunchProcess("calc");
break;
default:
break;
}
@@ -323,7 +477,33 @@ namespace GHelper.Input
}
}
static void ToggleFnLock()
static void ToggleTouchpadEvent(bool hotkey = false)
{
if (hotkey || !AppConfig.IsHardwareTouchpadToggle()) ToggleTouchpad();
Thread.Sleep(200);
Program.toast.RunToast(GetTouchpadState() ? "On" : "Off", ToastIcon.Touchpad);
}
static void ToggleTouchpad()
{
KeyboardHook.KeyKeyKeyPress(Keys.LWin, Keys.LControlKey, Keys.F24, 50);
}
static void SleepEvent()
{
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.KB_Sleep, "Sleep");
}
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);
@@ -333,6 +513,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);
}
@@ -345,48 +527,86 @@ namespace GHelper.Input
Logger.WriteLine("Tablet: " + tabletState + " Touchpad: " + touchpadState);
if (tabletState && touchpadState || !tabletState && !touchpadState) AsusUSB.TouchpadToggle();
if (tabletState && touchpadState || !tabletState && !touchpadState) ToggleTouchpad();
}
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
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 51: // Fn+F6 on old TUFs
case 53: // Fn+F6 on GA-502DU model
NativeMethods.TurnOffScreen();
return;
}
}
if (!OptimizationService.IsRunning())
@@ -400,21 +620,31 @@ namespace GHelper.Input
switch (EventID)
{
case 16: // FN+F7
//ScreenBrightness.Adjust(-10);
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Brightness_Down, "Brightness");
if (Control.ModifierKeys == Keys.Shift)
SetScreenpad(-10);
else
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Brightness_Down, "Brightness");
break;
case 32: // FN+F8
//ScreenBrightness.Adjust(+10);
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Brightness_Up, "Brightness");
if (Control.ModifierKeys == Keys.Shift)
SetScreenpad(10);
else
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Brightness_Up, "Brightness");
break;
case 107: // FN+F10
AsusUSB.TouchpadToggle();
Thread.Sleep(50);
Program.toast.RunToast(GetTouchpadState() ? "On" : "Off", ToastIcon.Touchpad);
ToggleTouchpadEvent();
break;
case 108: // FN+F11
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.KB_Sleep, "Sleep");
SleepEvent();
break;
case 106: // Screenpad button on DUO
if (Control.ModifierKeys == Keys.Shift)
ToggleScreenpad();
else
SetScreenpad(100);
break;
}
}
@@ -435,10 +665,8 @@ namespace GHelper.Input
public static void SetBacklightAuto(bool init = false)
{
if (init) AsusUSB.Init();
//if (!OptimizationService.IsRunning())
AsusUSB.ApplyBrightness(GetBacklight(), "Auto");
if (init) Aura.Init();
Aura.ApplyBrightness(GetBacklight(), "Auto", init);
}
public static void SetBacklight(int delta, bool force = false)
@@ -461,22 +689,80 @@ namespace GHelper.Input
if (force || !OptimizationService.IsRunning())
{
AsusUSB.ApplyBrightness(backlight, "HotKey");
Aura.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 ToggleScreenpad()
{
int toggle = AppConfig.Is("screenpad_toggle") ? 0 : 1;
Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, toggle, "ScreenpadToggle");
AppConfig.Set("screenpad_toggle", toggle);
Program.toast.RunToast($"Screen Pad " + (toggle == 1 ? "On" : "Off"), toggle > 0 ? ToastIcon.BrightnessUp : ToastIcon.BrightnessDown);
}
public static void SetScreenpad(int delta)
{
int brightness = AppConfig.Get("screenpad", 100);
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);
if (brightness >= 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, 1, "ScreenpadOn");
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);
}
static void LaunchProcess(string command = "")
{
try
{
string executable = command.Split(' ')[0];
string arguments = command.Substring(executable.Length).Trim();
Process proc = Process.Start(executable, arguments);
//string executable = command.Split(' ')[0];
//string arguments = command.Substring(executable.Length).Trim();
ProcessStartInfo startInfo = new ProcessStartInfo("cmd", "/C " + command);
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
startInfo.WorkingDirectory = Environment.CurrentDirectory;
//startInfo.Arguments = arguments;
Process proc = Process.Start(startInfo);
}
catch
{

View File

@@ -17,21 +17,35 @@ public sealed class KeyboardHook : IDisposable
public const int KEYEVENTF_EXTENDEDKEY = 1;
public const int KEYEVENTF_KEYUP = 2;
private const byte VK_LWIN = 0x5B;
private const byte VK_LCONTROL = 0xA2;
public static void KeyPress(Keys key)
{
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
}
public static void KeyWinPress(Keys key)
public static void KeyKeyPress(Keys key, Keys key2)
{
keybd_event(VK_LWIN, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
keybd_event((byte)key2, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
keybd_event((byte)key2, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
keybd_event(VK_LWIN, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
}
public static void KeyKeyKeyPress(Keys key, Keys key2, Keys key3, int sleep = 0)
{
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
keybd_event((byte)key2, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
keybd_event((byte)key3, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
keybd_event((byte)key3, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
if (sleep > 0) Thread.Sleep(sleep);
keybd_event((byte)key2, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
if (sleep > 0) Thread.Sleep(sleep);
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
}
/// <summary>
/// Represents the window that is used internally to get the messages.

View File

@@ -1,4 +1,5 @@
using HidLibrary;
using HidSharp;
using GHelper.USB;
namespace GHelper.Input
{
@@ -9,14 +10,14 @@ namespace GHelper.Input
public KeyboardListener(Action<int> KeyHandler)
{
HidDevice? input = AsusUSB.GetDevice();
HidStream? input = AsusHid.FindHidStream(AsusHid.INPUT_ID);
// Fallback
if (input == null)
{
AsusUSB.Init();
Aura.Init();
Thread.Sleep(1000);
input = AsusUSB.GetDevice();
input = input = AsusHid.FindHidStream(AsusHid.INPUT_ID);
}
if (input == null)
@@ -25,7 +26,9 @@ namespace GHelper.Input
return;
}
Logger.WriteLine($"Input: {input.DevicePath}");
input.ReadTimeout = int.MaxValue;
Logger.WriteLine($"Input: {input.Device.DevicePath}");
var task = Task.Run(() =>
{
@@ -35,14 +38,15 @@ namespace GHelper.Input
{
// Emergency break
if (input == null || !input.IsConnected)
if (input == null || !input.CanRead)
{
Logger.WriteLine("Listener terminated");
break;
}
var data = input.Read().Data;
if (data.Length > 1 && data[0] == AsusUSB.INPUT_HID_ID && data[1] > 0 && data[1] != 236)
var data = input.Read();
if (data.Length > 1 && data[0] == AsusHid.INPUT_ID && data[1] > 0 && data[1] != 236)
{
Logger.WriteLine($"Key: {data[1]}");
KeyHandler(data[1]);

304
app/Matrix.Designer.cs generated Normal file
View File

@@ -0,0 +1,304 @@
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();
panelRotation = new Panel();
comboRotation = new UI.RComboBox();
labelRotation = new Label();
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();
panelRotation.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.AutoSize = true;
panelMain.Controls.Add(panelButtons);
panelMain.Controls.Add(panelRotation);
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, 814);
panelMain.TabIndex = 5;
//
// panelButtons
//
panelButtons.Controls.Add(buttonReset);
panelButtons.Controls.Add(buttonPicture);
panelButtons.Dock = DockStyle.Top;
panelButtons.Location = new Point(0, 720);
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;
//
// panelRotation
//
panelRotation.Controls.Add(comboRotation);
panelRotation.Controls.Add(labelRotation);
panelRotation.Dock = DockStyle.Top;
panelRotation.Location = new Point(0, 642);
panelRotation.Name = "panelRotation";
panelRotation.Size = new Size(834, 78);
panelRotation.TabIndex = 8;
//
// comboRotation
//
comboRotation.BorderColor = Color.White;
comboRotation.ButtonColor = Color.FromArgb(255, 255, 255);
comboRotation.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point);
comboRotation.FormattingEnabled = true;
comboRotation.ItemHeight = 32;
comboRotation.Items.AddRange(new object[] { "Straight", "Diagonal" });
comboRotation.Location = new Point(229, 17);
comboRotation.Margin = new Padding(4, 11, 4, 8);
comboRotation.Name = "comboRotation";
comboRotation.Size = new Size(322, 40);
comboRotation.TabIndex = 17;
//
// labelRotation
//
labelRotation.AutoSize = true;
labelRotation.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelRotation.Location = new Point(16, 20);
labelRotation.Name = "labelRotation";
labelRotation.Size = new Size(190, 32);
labelRotation.TabIndex = 4;
labelRotation.Text = "Image Rotation";
//
// 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);
panelRotation.ResumeLayout(false);
panelRotation.PerformLayout();
panelScaling.ResumeLayout(false);
panelScaling.PerformLayout();
panelZoom.ResumeLayout(false);
panelZoom.PerformLayout();
ResumeLayout(false);
PerformLayout();
}
#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;
private Panel panelRotation;
private UI.RComboBox comboRotation;
private Label labelRotation;
}
}

222
app/Matrix.cs Normal file
View File

@@ -0,0 +1,222 @@
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;
comboRotation.DropDownStyle = ComboBoxStyle.DropDownList;
comboRotation.SelectedIndex = AppConfig.Get("matrix_rotation", 0);
comboRotation.SelectedValueChanged += ComboRotation_SelectedValueChanged; ;
uiScale = panelPicture.Width / matrixControl.device.MaxColumns / 3;
panelPicture.Height = (int)(matrixControl.device.MaxRows * uiScale);
}
private void ComboRotation_SelectedValueChanged(object? sender, EventArgs e)
{
AppConfig.Set("matrix_rotation", comboRotation.SelectedIndex);
SetMatrixPicture(false);
}
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
View 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>

View File

@@ -1,6 +1,6 @@
using GHelper.Battery;
using GHelper.Gpu.NVidia;
using GHelper.Gpu.NVidia;
using GHelper.Helpers;
using GHelper.USB;
using Ryzen;
namespace GHelper.Mode
@@ -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,9 +70,18 @@ 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");
if (AppConfig.Is("xgm_fan") && Program.acpi.IsXGConnected()) AsusUSB.ResetXGM();
// 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()) XGM.Reset();
if (notify)
Program.toast.RunToast(Modes.GetCurrentName(), SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online ? ToastIcon.Charger : ToastIcon.Battery);
@@ -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,7 +134,7 @@ namespace GHelper.Mode
bool xgmFan = false;
if (AppConfig.Is("xgm_fan") && Program.acpi.IsXGConnected())
{
AsusUSB.SetXGMFan(AppConfig.GetFanConfig(AsusFan.XGM));
XGM.SetFan(AppConfig.GetFanConfig(AsusFan.XGM));
xgmFan = true;
}
@@ -131,10 +148,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 +166,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,23 +182,6 @@ namespace GHelper.Mode
}
private static bool IsManualModeRequired()
{
if (!AppConfig.IsMode("auto_apply_power"))
return false;
return
AppConfig.Is("manual_mode") ||
AppConfig.ContainsModel("GU603") ||
AppConfig.ContainsModel("GU604") ||
AppConfig.ContainsModel("G733");
}
private static bool IsFanRequired()
{
return AppConfig.ContainsModel("GA402XI") || AppConfig.ContainsModel("G513");
}
public void AutoPower(int delay = 0)
{
@@ -185,17 +191,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);
}
@@ -210,7 +216,7 @@ namespace GHelper.Mode
timer.Dispose();
if (applyPower) SetPower();
Thread.Sleep(1000);
Thread.Sleep(500);
SetGPUPower();
AutoRyzen();
};
@@ -297,35 +303,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 && clock_limit == -1) return;
//if ((gpu_core > -5 && gpu_core < 5) && (gpu_memory > -5 && gpu_memory < 5)) launchAsAdmin = false;
if (Program.acpi.DeviceGet(AsusACPI.GPUEco) == 1) { Logger.WriteLine("Clocks: Eco"); return; }
if (HardwareControl.GpuControl is null) { Logger.WriteLine("Clocks: NoGPUControl"); return; }
if (!HardwareControl.GpuControl!.IsNvidia) { Logger.WriteLine("Clocks: NotNvidia"); 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("Clocks Error:" + 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()
@@ -367,6 +373,8 @@ namespace GHelper.Mode
public void SetUV(int cpuUV)
{
if (!RyzenControl.IsSupportedUV()) return;
if (cpuUV >= RyzenControl.MinCPUUV && cpuUV <= RyzenControl.MaxCPUUV)
{
var uvResult = SendCommand.set_coall(cpuUV);
@@ -377,6 +385,8 @@ namespace GHelper.Mode
public void SetUViGPU(int igpuUV)
{
if (!RyzenControl.IsSupportedUViGPU()) return;
if (igpuUV >= RyzenControl.MinIGPUUV && igpuUV <= RyzenControl.MaxIGPUUV)
{
var iGPUResult = SendCommand.set_cogfx(igpuUV);

View File

@@ -51,7 +51,8 @@
"gpu_memory",
"auto_boost",
"auto_apply",
"auto_apply_power"
"auto_apply_power",
"powermode"
};
foreach (string clean in cleanup)

View File

@@ -60,6 +60,9 @@ namespace GHelper.Mode
private static Guid GUID_SLEEP_SUBGROUP = new Guid("238c9fa8-0aad-41ed-83f4-97be242c8f20");
private static Guid GUID_HIBERNATEIDLE = new Guid("9d7815a6-7ee4-497e-8888-515a05f02364");
private static Guid GUID_SYSTEM_BUTTON_SUBGROUP = new Guid("4f971e89-eebd-4455-a8de-9e59040e7347");
private static Guid GUID_LIDACTION = new Guid("5CA83367-6E45-459F-A27B-476B1D01C936");
[DllImportAttribute("powrprof.dll", EntryPoint = "PowerGetActualOverlayScheme")]
public static extern uint PowerGetActualOverlayScheme(out Guid ActualOverlayGuid);
@@ -69,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;
@@ -119,49 +139,204 @@ 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 (GetBatterySaverStatus())
{
uint status = PowerGetEffectiveOverlayScheme(out Guid activeScheme);
if (status != 0 || activeScheme != guidScheme)
{
PowerSetActiveOverlayScheme(guidScheme);
Logger.WriteLine("Power mode: " + scheme);
}
}
else
{
PowerSetActiveScheme(IntPtr.Zero, guidScheme);
Logger.WriteLine("Power plan: " + scheme);
Logger.WriteLine("Battery Saver detected");
return;
}
if (status != 0 || activeScheme != guidScheme)
{
status = PowerSetActiveOverlayScheme(guidScheme);
Logger.WriteLine("Power Mode " + scheme + ":" + (status == 0 ? "OK" : status));
}
}
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)
{
/**
* 1: Do nothing
* 2: Seelp
* 3: Hibernate
* 4: Shutdown
*/
Guid activeSchemeGuid = GetActiveScheme();
var hrAC = PowerWriteACValueIndex(
IntPtr.Zero,
activeSchemeGuid,
GUID_SYSTEM_BUTTON_SUBGROUP,
GUID_LIDACTION,
action);
PowerSetActiveScheme(IntPtr.Zero, activeSchemeGuid);
if (!acOnly)
{
var hrDC = PowerWriteDCValueIndex(
IntPtr.Zero,
activeSchemeGuid,
GUID_SYSTEM_BUTTON_SUBGROUP,
GUID_LIDACTION,
action);
PowerSetActiveScheme(IntPtr.Zero, activeSchemeGuid);
}
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));
}
[DllImport("Kernel32")]
private static extern bool GetSystemPowerStatus(SystemPowerStatus sps);
public enum ACLineStatus : byte
{
Offline = 0, Online = 1, Unknown = 255
}
public enum BatteryFlag : byte
{
High = 1,
Low = 2,
Critical = 4,
Charging = 8,
NoSystemBattery = 128,
Unknown = 255
}
// Fields must mirror their unmanaged counterparts, in order
[StructLayout(LayoutKind.Sequential)]
public class SystemPowerStatus
{
public ACLineStatus ACLineStatus;
public BatteryFlag BatteryFlag;
public Byte BatteryLifePercent;
public Byte SystemStatusFlag;
public Int32 BatteryLifeTime;
public Int32 BatteryFullLifeTime;
}
public static bool GetBatterySaverStatus()
{
SystemPowerStatus sps = new SystemPowerStatus();
try
{
GetSystemPowerStatus(sps);
return (sps.SystemStatusFlag > 0);
} catch (Exception ex)
{
return false;
}
}
}
}

View File

@@ -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();

View File

@@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GHelper.Peripherals
{
public enum PeripheralType
{
Mouse,
Keyboard
}
public interface IPeripheral
{
public bool IsDeviceReady { get; }
public bool Wireless { get; }
public int Battery { get; }
public bool Charging { get; }
public PeripheralType DeviceType();
public string GetDisplayName();
public bool HasBattery();
public void SynchronizeDevice();
public void ReadBattery();
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,209 @@
namespace GHelper.Peripherals.Mouse.Models
{
//P704
public class Chakram : AsusMouse
{
public Chakram() : base(0x0B05, 0x18E5, "mi_00", true) {
}
protected Chakram(ushort vendorId, bool wireless) : base(0x0B05, vendorId, "mi_00", wireless)
{
}
public override int DPIProfileCount()
{
return 4;
}
public override string GetDisplayName()
{
return "ROG Chakram (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 ChakramWired : Chakram
{
public ChakramWired() : base(0x18E3, false)
{
}
public override string GetDisplayName()
{
return "ROG Chakram (Wired)";
}
}
}

View File

@@ -0,0 +1,117 @@
namespace GHelper.Peripherals.Mouse.Models
{
public class ChakramX : AsusMouse
{
public ChakramX() : base(0x0B05, 0x1A1A, "mi_00", true)
{
}
protected ChakramX(ushort vendorId, bool wireless) : base(0x0B05, vendorId, "mi_00", wireless)
{
}
public override string GetDisplayName()
{
return "ROG Chakram X (Wireless)";
}
public override PollingRate[] SupportedPollingrates()
{
return new PollingRate[] {
PollingRate.PR250Hz,
PollingRate.PR500Hz,
PollingRate.PR1000Hz
};
}
public override bool HasAngleSnapping()
{
return true;
}
public override int ProfileCount()
{
return 5;
}
public override int DPIProfileCount()
{
return 4;
}
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 HasAngleTuning()
{
return true;
}
public override bool HasLowBatteryWarning()
{
return true;
}
public override bool HasDPIColors()
{
return true;
}
}
public class ChakramXWired : ChakramX
{
public ChakramXWired() : base(0x1A18, false)
{
}
public override string GetDisplayName()
{
return "ROG Chakram X (Wired)";
}
public override PollingRate[] SupportedPollingrates()
{
return new PollingRate[] {
PollingRate.PR250Hz,
PollingRate.PR500Hz,
PollingRate.PR1000Hz,
PollingRate.PR2000Hz,
PollingRate.PR4000Hz,
PollingRate.PR8000Hz
};
}
}
}

View File

@@ -0,0 +1,91 @@
namespace GHelper.Peripherals.Mouse.Models
{
//P706_Wireless
public class GladiusIII : AsusMouse
{
public GladiusIII() : base(0x0B05, 0x197F, "mi_00", true)
{
}
protected GladiusIII(ushort vendorId, bool wireless) : base(0x0B05, vendorId, "mi_00", wireless)
{
}
public override int DPIProfileCount()
{
return 4;
}
public override string GetDisplayName()
{
return "ROG Gladius III (Wireless)";
}
public override PollingRate[] SupportedPollingrates()
{
return new PollingRate[] {
PollingRate.PR125Hz,
PollingRate.PR250Hz,
PollingRate.PR500Hz,
PollingRate.PR1000Hz
};
}
public override int ProfileCount()
{
return 5;
}
public override int MaxDPI()
{
return 26_000;
}
public override bool HasDebounceSetting()
{
return true;
}
public override bool HasLiftOffSetting()
{
return true;
}
public override bool HasRGB()
{
return true;
}
public override LightingZone[] SupportedLightingZones()
{
return new LightingZone[] { LightingZone.Logo, LightingZone.Scrollwheel, LightingZone.Underglow };
}
public override bool HasAutoPowerOff()
{
return true;
}
public override bool HasAngleSnapping()
{
return true;
}
public override bool HasLowBatteryWarning()
{
return true;
}
}
public class GladiusIIIWired : GladiusIII
{
public GladiusIIIWired() : base(0x197d, false)
{
}
public override string GetDisplayName()
{
return "ROG Gladius III (Wired)";
}
}
}

View 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)";
}
}
}

View 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;
}
}
}

View File

@@ -0,0 +1,115 @@
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 IsLightingModeSupported(LightingMode lightingMode)
{
return lightingMode == LightingMode.Static
|| lightingMode == LightingMode.Breathing
|| lightingMode == LightingMode.ColorCycle
|| lightingMode == LightingMode.BatteryState
|| lightingMode == LightingMode.React;
}
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)";
}
}
}

View 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)";
}
}
}

View 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)";
}
}
}

View File

@@ -0,0 +1,177 @@
namespace GHelper.Peripherals.Mouse.Models
{
//P506
public class StrixImpactII : AsusMouse
{
public StrixImpactII() : base(0x0B05, 0x18E1, "mi_00", false)
{
}
public override int DPIProfileCount()
{
return 4;
}
public override string GetDisplayName()
{
return "ROG Strix Impact II";
}
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 6_200;
}
public override bool HasRGB()
{
return true;
}
public override bool HasAutoPowerOff()
{
return false;
}
public override bool HasAngleSnapping()
{
return true;
}
public override bool HasAngleTuning()
{
return false;
}
public override bool HasDebounceSetting()
{
return true;
}
public override bool HasLowBatteryWarning()
{
return false;
}
public override bool HasBattery()
{
return false;
}
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;
}
public override LightingZone[] SupportedLightingZones()
{
return new LightingZone[] { LightingZone.Logo, LightingZone.Scrollwheel, LightingZone.Underglow };
}
public override int DPIIncrements()
{
return 100;
}
public override bool CanChangeDPIProfile()
{
return true;
}
public override int MaxBrightness()
{
return 4;
}
protected override byte IndexForLightingMode(LightingMode lightingMode)
{
if (lightingMode == LightingMode.React)
{
return 0x03;
}
return ((byte)lightingMode);
}
protected override LightingMode LightingModeForIndex(byte lightingMode)
{
if (lightingMode == 0x03)
{
return LightingMode.React;
}
return base.LightingModeForIndex(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
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;
}
}
}
}

View 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)";
}
}
}

View 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;
}
}
}

View 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;
}
}
}

View File

@@ -0,0 +1,170 @@
namespace GHelper.Peripherals.Mouse.Models
{
//P304
public class TUFM5 : AsusMouse
{
public TUFM5() : base(0x0B05, 0x1898, "mi_02", false)
{
}
public override int DPIProfileCount()
{
return 2;
}
public override string GetDisplayName()
{
return "TUF GAMING M5";
}
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 3;
}
public override int MaxDPI()
{
return 6_200;
}
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;
}
protected override byte[] GetUpdatePollingRatePacket(PollingRate pollingRate)
{
return new byte[] { reportId, 0x51, 0x31, 0x02, 0x00, (byte)pollingRate };
}
protected override byte[] GetUpdateAngleSnappingPacket(bool angleSnapping)
{
return new byte[] { reportId, 0x51, 0x31, 0x04, 0x00, (byte)(angleSnapping ? 0x01 : 0x00) };
}
protected override PollingRate ParsePollingRate(byte[] packet)
{
if (packet[1] == 0x12 && packet[2] == 0x04 && packet[3] == 0x00)
{
return (PollingRate)packet[9];
}
return PollingRate.PR125Hz;
}
protected override bool ParseAngleSnapping(byte[] packet)
{
if (packet[1] == 0x12 && packet[2] == 0x04 && packet[3] == 0x00)
{
return packet[13] == 0x01;
}
return false;
}
protected override byte[] GetUpdateDebouncePacket(DebounceTime debounce)
{
return new byte[] { reportId, 0x51, 0x31, 0x03, 0x00, ((byte)debounce) };
}
protected override DebounceTime ParseDebounce(byte[] packet)
{
if (packet[1] != 0x12 || packet[2] != 0x04 || packet[3] != 0x00)
{
return DebounceTime.MS12;
}
if (packet[11] < 0x02)
{
return DebounceTime.MS12;
}
if (packet[11] > 0x07)
{
return DebounceTime.MS32;
}
return (DebounceTime)packet[11];
}
}
}

View File

@@ -0,0 +1,244 @@
using GHelper.Peripherals.Mouse;
using GHelper.Peripherals.Mouse.Models;
using System.Runtime.CompilerServices;
namespace GHelper.Peripherals
{
public class PeripheralsProvider
{
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()
{
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.
public static bool IsAnyPeripheralConnect()
{
return IsMouseConnected();
}
public static List<IPeripheral> AllPeripherals()
{
List<IPeripheral> l = new List<IPeripheral>();
lock (_LOCK)
{
l.AddRange(ConnectedMice);
}
return l;
}
public static void RefreshBatteryForAllDevices()
{
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)
{
if (!m.IsDeviceReady)
{
//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);
}
}
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)
{
ConnectedMice.Add(am);
}
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)
{
if (sender is null)
{
return;
}
AsusMouse am = (AsusMouse)sender;
lock (_LOCK)
{
ConnectedMice.Remove(am);
}
Logger.WriteLine(am.GetDisplayName() + " reported disconnect. " + ConnectedMice.Count + " device are conneted.");
am.Dispose();
UpdateSettingsView();
}
private static void UpdateSettingsView()
{
Program.settingsForm.Invoke(delegate
{
Program.settingsForm.VisualizePeripherals();
});
}
[MethodImpl(MethodImplOptions.Synchronized)]
public static void DetectAllAsusMice()
{
//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 TUFM5());
DetectMouse(new KerisWirelssAimpoint());
DetectMouse(new KerisWirelssAimpointWired());
DetectMouse(new PugioII());
DetectMouse(new PugioIIWired());
DetectMouse(new StrixImpactII());
DetectMouse(new Chakram());
DetectMouse(new ChakramWired());
}
public static void DetectMouse(AsusMouse am)
{
if (am.IsDeviceConnected() && !IsDeviceConnected(am))
{
Logger.WriteLine("Detected a new" + am.GetDisplayName() + " . Connecting...");
Connect(am);
}
}
public static void RegisterForDeviceEvents()
{
HidSharp.DeviceList.Local.Changed += Device_Changed;
}
public static void UnregisterForDeviceEvents()
{
HidSharp.DeviceList.Local.Changed -= Device_Changed;
}
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");
DetectAllAsusMice();
}
}
}

View File

@@ -4,6 +4,7 @@ using GHelper.Gpu;
using GHelper.Helpers;
using GHelper.Input;
using GHelper.Mode;
using GHelper.Peripherals;
using Microsoft.Win32;
using Ryzen;
using System.Diagnostics;
@@ -28,8 +29,9 @@ namespace GHelper
public static SettingsForm settingsForm = new SettingsForm();
public static ModeControl modeControl = new ModeControl();
static GPUModeControl gpuControl = new GPUModeControl(settingsForm);
static ScreenControl screenControl = new ScreenControl();
public static GPUModeControl gpuControl = new GPUModeControl(settingsForm);
public static ScreenControl screenControl = new ScreenControl();
public static ClamshellModeControl clamshellControl = new ClamshellModeControl();
public static ToastForm toast = new ToastForm();
@@ -93,28 +95,51 @@ namespace GHelper
settingsForm.InitAura();
settingsForm.InitMatrix();
gpuControl.InitXGM();
SetAutoModes();
SetAutoModes(init : true);
// Subscribing for system power change events
SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
SystemEvents.UserPreferenceChanged += SystemEvents_UserPreferenceChanged;
SystemEvents.SessionSwitch += SystemEvents_SessionSwitch;
SystemEvents.SessionEnding += SystemEvents_SessionEnding;
clamshellControl.RegisterDisplayEvents();
clamshellControl.ToggleLidAction();
// Subscribing for monitor power on events
PowerSettingGuid settingGuid = new NativeMethods.PowerSettingGuid();
unRegPowerNotify = NativeMethods.RegisterPowerSettingNotification(settingsForm.Handle, settingGuid.ConsoleDisplayState, NativeMethods.DEVICE_NOTIFY_WINDOW_HANDLE);
Task task = Task.Run((Action)PeripheralsProvider.DetectAllAsusMice);
PeripheralsProvider.RegisterForDeviceEvents();
if (Environment.CurrentDirectory.Trim('\\') == Application.StartupPath.Trim('\\') || action.Length > 0)
{
SettingsToggle(action);
SettingsToggle(action, false);
}
Application.Run();
}
private static void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
{
gpuControl.StandardModeFix();
BatteryControl.AutoBattery();
}
private static void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
{
if (e.Reason == SessionSwitchReason.SessionLogon || e.Reason == SessionSwitchReason.SessionUnlock)
{
Logger.WriteLine("Session:" + e.Reason.ToString());
screenControl.AutoScreen();
}
}
static void SystemEvents_UserPreferenceChanged(object sender, UserPreferenceChangedEventArgs e)
{
@@ -131,22 +156,24 @@ namespace GHelper
lastTheme = DateTimeOffset.Now.ToUnixTimeMilliseconds();
}
if (settingsForm.fans is not null && settingsForm.fans.Text != "")
settingsForm.fans.InitTheme();
if (settingsForm.fansForm is not null && settingsForm.fansForm.Text != "")
settingsForm.fansForm.InitTheme();
if (settingsForm.keyb is not null && settingsForm.keyb.Text != "")
settingsForm.keyb.InitTheme();
if (settingsForm.extraForm is not null && settingsForm.extraForm.Text != "")
settingsForm.extraForm.InitTheme();
if (settingsForm.updates is not null && settingsForm.updates.Text != "")
settingsForm.updates.InitTheme();
if (settingsForm.updatesForm is not null && settingsForm.updatesForm.Text != "")
settingsForm.updatesForm.InitTheme();
if (settingsForm.matrixForm is not null && settingsForm.matrixForm.Text != "")
settingsForm.matrixForm.InitTheme();
break;
}
}
public static void SetAutoModes(bool powerChanged = false)
public static void SetAutoModes(bool powerChanged = false, bool init = false)
{
if (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastAuto) < 3000) return;
@@ -167,24 +194,40 @@ namespace GHelper
screenControl.AutoScreen();
}
BatteryControl.SetBatteryChargeLimit();
BatteryControl.AutoBattery(init);
settingsForm.AutoKeyboard();
settingsForm.matrix.SetMatrix();
settingsForm.matrixControl.SetMatrix(true);
}
private static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
{
if (e.Mode == PowerModes.Suspend)
{
Logger.WriteLine("Power Mode Changed:" + e.Mode.ToString());
gpuControl.StandardModeFix();
}
if (SystemInformation.PowerStatus.PowerLineStatus == isPlugged) return;
Logger.WriteLine("Power Mode Changed");
SetAutoModes(true);
}
public static void SettingsToggle(string action = "")
public static void SettingsToggle(string action = "", bool checkForFocus = true, bool trayClick = false)
{
if (settingsForm.Visible) settingsForm.HideAll();
if (settingsForm.Visible)
{
// If helper window is not on top, this just focuses on the app again
// Pressing the ghelper button again will hide the app
if (checkForFocus && !settingsForm.HasAnyFocus(trayClick))
{
settingsForm.ShowAll();
}
else
{
settingsForm.HideAll();
}
}
else
{
@@ -213,15 +256,18 @@ namespace GHelper
gpuControl.RestartGPU(false);
break;
case "services":
settingsForm.keyb = new Extra();
settingsForm.keyb.Show();
settingsForm.keyb.ServiesToggle();
settingsForm.extraForm = new Extra();
settingsForm.extraForm.Show();
settingsForm.extraForm.ServiesToggle();
break;
case "uv":
Startup.ReScheduleAdmin();
settingsForm.FansToggle(2);
modeControl.SetRyzen();
break;
default:
Startup.StartupCheck();
break;
}
}
}
@@ -229,7 +275,7 @@ namespace GHelper
static void TrayIcon_MouseClick(object? sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
SettingsToggle();
SettingsToggle(trayClick: true);
}
@@ -238,11 +284,12 @@ namespace GHelper
static void OnExit(object sender, EventArgs e)
{
trayIcon.Visible = false;
PeripheralsProvider.UnregisterForDeviceEvents();
clamshellControl.UnregisterDisplayEvents();
NativeMethods.UnregisterPowerSettingNotification(unRegPowerNotify);
Application.Exit();
}
}
}

View File

@@ -140,6 +140,16 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_batterie_voll_geladen_48 {
get {
object obj = ResourceManager.GetObject("icons8_batterie_voll_geladen_48", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@@ -260,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>
@@ -280,6 +300,16 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_ladende_batterie_48 {
get {
object obj = ResourceManager.GetObject("icons8_ladende_batterie_48", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@@ -320,6 +350,36 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_maus_32 {
get {
object obj = ResourceManager.GetObject("icons8_maus_32", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_maus_48 {
get {
object obj = ResourceManager.GetObject("icons8_maus_48", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_mauszeiger_50 {
get {
object obj = ResourceManager.GetObject("icons8_mauszeiger_50", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@@ -360,6 +420,16 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_quit_32 {
get {
object obj = ResourceManager.GetObject("icons8-quit-32", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@@ -440,6 +510,16 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_software_32_white {
get {
object obj = ResourceManager.GetObject("icons8-software-32-white", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@@ -500,6 +580,46 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap lighting_dot_24 {
get {
object obj = ResourceManager.GetObject("lighting_dot_24", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap lighting_dot_32 {
get {
object obj = ResourceManager.GetObject("lighting_dot_32", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap lighting_dot_48 {
get {
object obj = ResourceManager.GetObject("lighting_dot_48", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 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>

View File

@@ -118,45 +118,63 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="icons8-gauge-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-gauge-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="brightness_up" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\brightness-up.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8_temperature_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-temperature-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="backlight_down" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\backlight-down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<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>
<data name="icons8-fiat-500-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-fiat-500-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8_microphone_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-microphone-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8_voltage_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-voltage-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8-project-management-48 (1)" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-project-management-48 (1).png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<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-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>
<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>
@@ -169,26 +187,41 @@
<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>
<data name="eco" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\eco.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<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>
<data name="icons8_edit_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-edit-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<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>
@@ -205,11 +238,29 @@
<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_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 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>
<data name="icons8-keyboard-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-keyboard-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8_fan_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-fan-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8_software_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-software-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8-gauge-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-gauge-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8-leaf-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-leaf-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -217,8 +268,8 @@
<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-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 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>
@@ -226,34 +277,19 @@
<data name="icons8-settings-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-settings-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8-keyboard-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-keyboard-32.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 name="icons8_processor_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-processor-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<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-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="icons8_fan_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-fan-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8_processor_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-processor-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<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="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" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-software-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8_temperature_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-temperature-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8_voltage_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-voltage-32.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>

View File

@@ -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&apos;t connect to ASUS ACPI. Application can&apos;t function without it. Try to install Asus System Control Interface.
/// </summary>
@@ -195,6 +204,15 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Battery State.
/// </summary>
internal static string AuraBatteryState {
get {
return ResourceManager.GetString("AuraBatteryState", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Breathe.
/// </summary>
@@ -204,6 +222,15 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Clockwise.
/// </summary>
internal static string AuraClockwise {
get {
return ResourceManager.GetString("AuraClockwise", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Color Cycle.
/// </summary>
@@ -213,6 +240,24 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Comet.
/// </summary>
internal static string AuraComet {
get {
return ResourceManager.GetString("AuraComet", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Counterclockwise.
/// </summary>
internal static string AuraCounterClockwise {
get {
return ResourceManager.GetString("AuraCounterClockwise", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Fast.
/// </summary>
@@ -222,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>
@@ -240,6 +294,24 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Random.
/// </summary>
internal static string AuraRandomColor {
get {
return ResourceManager.GetString("AuraRandomColor", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to React.
/// </summary>
internal static string AuraReact {
get {
return ResourceManager.GetString("AuraReact", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Slow.
/// </summary>
@@ -267,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>
@@ -304,7 +421,7 @@ namespace GHelper.Properties {
}
/// <summary>
/// Looks up a localized string similar to Backlight timeout on battery.
/// Looks up a localized string similar to Timeout plugged / on battery (0 - ON).
/// </summary>
internal static string BacklightTimeout {
get {
@@ -312,15 +429,6 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Backlight timeout when plugged in (0 - always on).
/// </summary>
internal static string BacklightTimeoutPlugged {
get {
return ResourceManager.GetString("BacklightTimeoutPlugged", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Balanced.
/// </summary>
@@ -330,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>
@@ -339,6 +456,24 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Battery Health.
/// </summary>
internal static string BatteryHealth {
get {
return ResourceManager.GetString("BatteryHealth", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to One time charge to 100%.
/// </summary>
internal static string BatteryLimitFull {
get {
return ResourceManager.GetString("BatteryLimitFull", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to BIOS and Driver Updates.
/// </summary>
@@ -357,6 +492,15 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Boot Sound.
/// </summary>
internal static string BootSound {
get {
return ResourceManager.GetString("BootSound", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Brightness.
/// </summary>
@@ -384,6 +528,24 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Calibrate.
/// </summary>
internal static string Calibrate {
get {
return ResourceManager.GetString("Calibrate", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Charging.
/// </summary>
internal static string Charging {
get {
return ResourceManager.GetString("Charging", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Color.
/// </summary>
@@ -411,6 +573,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>
@@ -439,7 +610,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 {
@@ -494,6 +665,15 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Energy Settings.
/// </summary>
internal static string EnergySettings {
get {
return ResourceManager.GetString("EnergySettings", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Extra.
/// </summary>
@@ -576,7 +756,7 @@ namespace GHelper.Properties {
}
/// <summary>
/// Looks up a localized string similar to Fan: .
/// Looks up a localized string similar to Fan.
/// </summary>
internal static string FanSpeed {
get {
@@ -692,6 +872,24 @@ 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>
internal static string High {
get {
return ResourceManager.GetString("High", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Key Bindings.
/// </summary>
@@ -710,15 +908,6 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Lower backlight brightness on battery and back when plugged.
/// </summary>
internal static string KeyboardAuto {
get {
return ResourceManager.GetString("KeyboardAuto", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Stop all apps using GPU when switching to Eco.
/// </summary>
@@ -773,6 +962,15 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Lighting.
/// </summary>
internal static string Lighting {
get {
return ResourceManager.GetString("Lighting", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Logo.
/// </summary>
@@ -782,6 +980,15 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Low.
/// </summary>
internal static string Low {
get {
return ResourceManager.GetString("Low", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Audio Visualizer.
/// </summary>
@@ -881,6 +1088,87 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Minute.
/// </summary>
internal static string Minute {
get {
return ResourceManager.GetString("Minute", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Minutes.
/// </summary>
internal static string Minutes {
get {
return ResourceManager.GetString("Minutes", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Angle Snapping.
/// </summary>
internal static string MouseAngleSnapping {
get {
return ResourceManager.GetString("MouseAngleSnapping", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Auto Power Off After.
/// </summary>
internal static string MouseAutoPowerOff {
get {
return ResourceManager.GetString("MouseAutoPowerOff", resourceCulture);
}
}
/// <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>
internal static string MouseLiftOffDistance {
get {
return ResourceManager.GetString("MouseLiftOffDistance", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Low Battery Warning at.
/// </summary>
internal static string MouseLowBatteryWarning {
get {
return ResourceManager.GetString("MouseLowBatteryWarning", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Performance.
/// </summary>
internal static string MousePerformance {
get {
return ResourceManager.GetString("MousePerformance", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Synchronize with mouse.
/// </summary>
internal static string MouseSynchronize {
get {
return ResourceManager.GetString("MouseSynchronize", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Multizone.
/// </summary>
@@ -899,6 +1187,15 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Never.
/// </summary>
internal static string Never {
get {
return ResourceManager.GetString("Never", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to New updates.
/// </summary>
@@ -917,6 +1214,15 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Not Connected.
/// </summary>
internal static string NotConnected {
get {
return ResourceManager.GetString("NotConnected", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Open G-Helper window.
/// </summary>
@@ -980,6 +1286,15 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Peripherals.
/// </summary>
internal static string Peripherals {
get {
return ResourceManager.GetString("Peripherals", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Picture / Gif.
/// </summary>
@@ -998,6 +1313,15 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Polling Rate.
/// </summary>
internal static string PollingRate {
get {
return ResourceManager.GetString("PollingRate", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Power Limits.
/// </summary>
@@ -1025,6 +1349,15 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Profile.
/// </summary>
internal static string Profile {
get {
return ResourceManager.GetString("Profile", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Quit.
/// </summary>
@@ -1035,7 +1368,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 {
@@ -1061,6 +1394,24 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Screenpad Brightness Down.
/// </summary>
internal static string ScreenPadDown {
get {
return ResourceManager.GetString("ScreenPadDown", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Screenpad Brightness Up.
/// </summary>
internal static string ScreenPadUp {
get {
return ResourceManager.GetString("ScreenPadUp", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Shutdown.
/// </summary>
@@ -1169,6 +1520,15 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Auto Toggle Clamshell Mode.
/// </summary>
internal static string ToggleClamshellMode {
get {
return ResourceManager.GetString("ToggleClamshellMode", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Toggle Fn-Lock.
/// </summary>

View File

@@ -59,46 +59,46 @@
: 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: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: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: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: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: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: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:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
@@ -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>
@@ -127,13 +130,13 @@
<value>Eco Modus</value>
</data>
<data name="AlertUltimateOff" xml:space="preserve">
<value>Wechseln in den Ultimate Modus benötigt einen Neustart. Jetzt neustarten?</value>
<value>Deaktivieren des Ultimate Modus benötigt einen Neustart.</value>
</data>
<data name="AlertUltimateOn" xml:space="preserve">
<value>Ultimate Modus benötigt einen Neustart</value>
<value>Aktivieren des Ultimate Modus benötigt einen Neustart.</value>
</data>
<data name="AlertUltimateTitle" xml:space="preserve">
<value>Jetzt neustarten?</value>
<value>Jetzt neu starten?</value>
</data>
<data name="AnimationSpeed" xml:space="preserve">
<value>Animationsgeschwindigkeit</value>
@@ -147,11 +150,14 @@
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper läuft bereits. Bitte prüfe den Systemtray.</value>
</data>
<data name="Apply" xml:space="preserve">
<value>Anwenden</value>
</data>
<data name="ApplyFanCurve" xml:space="preserve">
<value>Lüfterkurve anweden</value>
<value>Lüfterkurve anwenden</value>
</data>
<data name="ApplyPowerLimits" xml:space="preserve">
<value>Leistunsgrenzen anwenden</value>
<value>Leistungsgrenzen anwenden</value>
</data>
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>Windows Leistungsmodus automatisch anpassen</value>
@@ -159,21 +165,42 @@
<data name="AsusServicesRunning" xml:space="preserve">
<value>ASUS Dienste laufen</value>
</data>
<data name="AuraBatteryState" xml:space="preserve">
<value>Batteriezustand</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>Atmen</value>
</data>
<data name="AuraClockwise" xml:space="preserve">
<value>Im Uhrzeigersinn</value>
</data>
<data name="AuraColorCycle" xml:space="preserve">
<value>Farbwechsel</value>
</data>
<data name="AuraComet" xml:space="preserve">
<value>Komet</value>
</data>
<data name="AuraCounterClockwise" xml:space="preserve">
<value>Gegen den Uhrzeigersinn</value>
</data>
<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>
<data name="AuraRainbow" xml:space="preserve">
<value>Regenbogen</value>
</data>
<data name="AuraRandomColor" xml:space="preserve">
<value>Zufällig</value>
</data>
<data name="AuraReact" xml:space="preserve">
<value>Reagierend</value>
</data>
<data name="AuraSlow" xml:space="preserve">
<value>Langsam</value>
</data>
@@ -183,62 +210,98 @@
<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>
<data name="AutoMode" xml:space="preserve">
<value>Auto</value>
</data>
<data name="AutoRefreshTooltip" xml:space="preserve">
<value>60Hz im Batteriebetrieb Maximal wenn eingesteckt.</value>
<value>60Hz im Batteriebetrieb. Maximal, wenn eingesteckt.</value>
</data>
<data name="Awake" xml:space="preserve">
<value>Im Betrieb</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>Tastaturbelechtung abschalten in (Sekunden)</value>
</data>
<data name="BacklightTimeoutPlBacklightTimeoutPlugged" xml:space="preserve">
<value>Tastaturbelechtung beim aufladen abschalten in (Sekunden)</value>
<value>Timeout angeschlossen / bei Akku (0 - AN)</value>
</data>
<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>
<data name="BatteryHealth" xml:space="preserve">
<value>Batteriezustand</value>
</data>
<data name="BatteryLimitFull" xml:space="preserve">
<value>Einmalig auf 100% aufladen</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>BIOS und Treiber Updates</value>
</data>
<data name="Boot" xml:space="preserve">
<value>Hochfahren</value>
</data>
<data name="BootSound" xml:space="preserve">
<value>Boot Sound</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>Helligkeit</value>
</data>
<data name="BrightnessDown" xml:space="preserve">
<value>Helligkeit erhöhen</value>
<value>Helligkeit verringern</value>
</data>
<data name="BrightnessUp" xml:space="preserve">
<value>Helligkeit verringern</value>
<value>Helligkeit erhöhen</value>
</data>
<data name="Calibrate" xml:space="preserve">
<value>Kalibrieren</value>
</data>
<data name="Charging" xml:space="preserve">
<value>Lädt</value>
</data>
<data name="Color" xml:space="preserve">
<value>Farbe</value>
</data>
<data name="CPUBoost" xml:space="preserve">
<value>CPU Boost</value>
<value>CPU-Boost</value>
</data>
<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>
<data name="DisableOverdrive" xml:space="preserve">
<value>Overdrive abschalten</value>
<value>Bildschirm: Overdrive abschalten</value>
</data>
<data name="Discharging" xml:space="preserve">
<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>
@@ -250,13 +313,16 @@
<value>Eco</value>
</data>
<data name="EnableOptimusText" xml:space="preserve">
<value>Wenn Sie die dGPU deaktivieren, indem Sie in den Eco Modus wechseln, kann zu Problemen mit der Helligkeitseinstellung führen, wenn der Anzeigemodus nicht auf Optimus eingestellt ist.
<value>Die dGPU zu deaktivieren, indem Sie in den Eco-Modus wechseln während der Anzeigemodus nicht auf Optimus eingestellt ist, kann zu Problemen mit der Helligkeitseinstellung führen.
Trotzdem fortfahren?</value>
</data>
<data name="EnableOptimusTitle" xml:space="preserve">
<value>Nvidia Anzeigemodus ist nicht auf Optimus eingestellt</value>
</data>
<data name="EnergySettings" xml:space="preserve">
<value>Energieeinstellungen</value>
</data>
<data name="Extra" xml:space="preserve">
<value>Extra</value>
</data>
@@ -285,7 +351,7 @@ Trotzdem fortfahren?</value>
<value>Lüfter und Leistung</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<value> Lüfter: </value>
<value>Lüfter</value>
</data>
<data name="FansPower" xml:space="preserve">
<value>Lüfter + Leistung</value>
@@ -323,23 +389,23 @@ 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>
<data name="KeyBindings" xml:space="preserve">
<value>Tastenbelegung</value>
</data>
<data name="Keyboard" xml:space="preserve">
<value>Tastatur</value>
</data>
<data name="KeyboardAuto" xml:space="preserve">
<value>Tastaturbeleuchtung im Batteriebetrieb abdunkeln.</value>
</data>
<data name="KeyboardBacklight" xml:space="preserve">
<value>Tastaturbeleuchtung</value>
</data>
<data name="KillGpuApps" xml:space="preserve">
<value>Alle Anwendungen auf der dGPU beim Wechsel in den Eco Modus beenden.</value>
</data>
<data name="LaptopBacklight" xml:space="preserve">
<value>Laptopbelechtung</value>
<value>Laptopbeleuchtung</value>
</data>
<data name="LaptopKeyboard" xml:space="preserve">
<value>Laptoptastatur</value>
@@ -353,14 +419,20 @@ Trotzdem fortfahren?</value>
<data name="Lightbar" xml:space="preserve">
<value>Leuchtstreifen</value>
</data>
<data name="Lighting" xml:space="preserve">
<value>Beleuchtung</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>
<data name="Low" xml:space="preserve">
<value>Niedrig</value>
</data>
<data name="MatrixAudio" xml:space="preserve">
<value>Audio Visualisierung</value>
</data>
<data name="MatrixBanner" xml:space="preserve">
<value>Binary Banner</value>
<value>Binäres Banner</value>
</data>
<data name="MatrixBright" xml:space="preserve">
<value>Hell</value>
@@ -389,17 +461,50 @@ Trotzdem fortfahren?</value>
<data name="MinRefreshTooltip" xml:space="preserve">
<value>60Hz um Strom zu sparen</value>
</data>
<data name="Minute" xml:space="preserve">
<value>Minute</value>
</data>
<data name="Minutes" xml:space="preserve">
<value>Minuten</value>
</data>
<data name="MouseAngleSnapping" xml:space="preserve">
<value>Mausglättung</value>
</data>
<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>
<data name="MouseLowBatteryWarning" xml:space="preserve">
<value>Batteriewarnung bei</value>
</data>
<data name="MousePerformance" xml:space="preserve">
<value>Leistung</value>
</data>
<data name="MouseSynchronize" xml:space="preserve">
<value>Maus synchronisieren</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>Multi-Zone</value>
</data>
<data name="MuteMic" xml:space="preserve">
<value>Mikrofon stummschalten</value>
</data>
<data name="Never" xml:space="preserve">
<value>Niemals</value>
</data>
<data name="NewUpdates" xml:space="preserve">
<value>Neue Updates:</value>
</data>
<data name="NoNewUpdates" xml:space="preserve">
<value>Keine Updates verfügbar</value>
<value>Keine Updates</value>
</data>
<data name="NotConnected" xml:space="preserve">
<value>Nicht verbunden</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>G-Helper Fenster öffnen</value>
@@ -408,10 +513,10 @@ Trotzdem fortfahren?</value>
<value>Optimiert</value>
</data>
<data name="OptimizedGPUTooltip" xml:space="preserve">
<value>Eco Modus im Batteriebetrieb, Standard wenn eingesteckt.</value>
<value>Eco-Modus im Batteriebetrieb. Standard, wenn eingesteckt.</value>
</data>
<data name="OptimizedUSBC" xml:space="preserve">
<value>GPU beim USB-C Laden im Optimierten Modus deaktiviert lassen</value>
<value>dGPU beim USB-C Laden im Optimierten Modus deaktiviert lassen</value>
</data>
<data name="Other" xml:space="preserve">
<value>Sonstiges</value>
@@ -422,12 +527,18 @@ Trotzdem fortfahren?</value>
<data name="PerformanceMode" xml:space="preserve">
<value>Leistungsmodus</value>
</data>
<data name="Peripherals" xml:space="preserve">
<value>Zubehör</value>
</data>
<data name="PictureGif" xml:space="preserve">
<value>Bild / GIF</value>
</data>
<data name="PlayPause" xml:space="preserve">
<value>Wiedergabe / Pause</value>
</data>
<data name="PollingRate" xml:space="preserve">
<value>Abfragerate</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Leistungsbegrenzung</value>
</data>
@@ -437,11 +548,14 @@ Trotzdem fortfahren?</value>
<data name="PrintScreen" xml:space="preserve">
<value>Druck</value>
</data>
<data name="Profile" xml:space="preserve">
<value>Profil</value>
</data>
<data name="Quit" xml:space="preserve">
<value>Schließen</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>Ein Prozess verhindert den Wechsel in den Eco Modus. dGPU neustarten? Fortfahren auf eigene Gefahr.</value>
<value>Ein Prozess verhindert den Wechsel in den Eco-Modus. dGPU neu starten? Fortfahren auf eigene Gefahr.</value>
</data>
<data name="RPM" xml:space="preserve">
<value>U/Min</value>
@@ -449,6 +563,12 @@ Trotzdem fortfahren?</value>
<data name="RunOnStartup" xml:space="preserve">
<value>Beim Start ausführen</value>
</data>
<data name="ScreenPadDown" xml:space="preserve">
<value>Screenpad Helligkeit verringern</value>
</data>
<data name="ScreenPadUp" xml:space="preserve">
<value>Screenpad-Helligkeit erhöhen</value>
</data>
<data name="Shutdown" xml:space="preserve">
<value>Herunterfahren</value>
</data>
@@ -485,6 +605,9 @@ Trotzdem fortfahren?</value>
<data name="ToggleAura" xml:space="preserve">
<value>Aura umschalten</value>
</data>
<data name="ToggleClamshellMode" xml:space="preserve">
<value>Clamshell Modus automatisch aktivieren</value>
</data>
<data name="ToggleFnLock" xml:space="preserve">
<value>FN Sperre umschalten</value>
</data>
@@ -507,13 +630,13 @@ Trotzdem fortfahren?</value>
<value>Verbindet den Bildschirm mit der dGPU für maximale Leistung.</value>
</data>
<data name="UltimateMode" xml:space="preserve">
<value>Ultimate</value>
<value>Ultimativ</value>
</data>
<data name="UndervoltingRisky" xml:space="preserve">
<value>Die Spannungsabsenkung (Undervolting) ist experimentell und birgt u.U. ein Risik. Wenn die Spannung zu weit abgesenkt wird, wird der Computer instabil und kann abstürzen, was zu Datenverlust führen kann. Es empfiehlt sich mit kleinen Werten anzufangen und es ausgiebig zu testen, um den idealen Wert zu finden.</value>
<value>Die Spannungsabsenkung (Undervolting) ist experimentell und birgt Risiken. Wenn die Spannung zu weit abgesenkt wird, wird der Computer instabil und kann abstürzen, was zu Datenverlust führen kann. Es empfiehlt sich mit kleinen Werten anzufangen und ausgiebig zu testen, um den idealen Wert zu finden.</value>
</data>
<data name="Updates" xml:space="preserve">
<value>Updates</value>
<value>Aktualisierungen</value>
</data>
<data name="VersionLabel" xml:space="preserve">
<value>Version</value>

File diff suppressed because it is too large Load Diff

View File

@@ -59,46 +59,46 @@
: 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: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: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: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: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: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: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:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
@@ -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>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>
<value>Connexion impossible avec ASUS ACPI. L'application ne peut fonctionner sans. Veuillez installer Asus System Control Interface</value>
</data>
<data name="AlertDGPU" xml:space="preserve">
<value>Le GPU semble être surchargé, voulez vous le désactiver ?</value>
@@ -147,6 +150,9 @@
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper est déjà en cours d'exécution. Vérifiez la barre d'état système.</value>
</data>
<data name="Apply" xml:space="preserve">
<value>Appliquer</value>
</data>
<data name="ApplyFanCurve" xml:space="preserve">
<value>Appliquer la courbe</value>
</data>
@@ -156,21 +162,45 @@
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>Ajustement auto des modes de gestion alim. Windows</value>
</data>
<data name="AsusServicesRunning" xml:space="preserve">
<value>Services Asus actifs</value>
</data>
<data name="AuraBatteryState" xml:space="preserve">
<value>État de la batterie</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>Pulsation</value>
</data>
<data name="AuraClockwise" xml:space="preserve">
<value>Sens horaire</value>
</data>
<data name="AuraColorCycle" xml:space="preserve">
<value>Cycle de couleur</value>
</data>
<data name="AuraComet" xml:space="preserve">
<value>Comète</value>
</data>
<data name="AuraCounterClockwise" xml:space="preserve">
<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>
<data name="AuraRainbow" xml:space="preserve">
<value>Arc-en-ciel</value>
</data>
<data name="AuraRandomColor" xml:space="preserve">
<value>Aléatoire</value>
</data>
<data name="AuraReact" xml:space="preserve">
<value>React</value>
</data>
<data name="AuraSlow" xml:space="preserve">
<value>Lent</value>
</data>
@@ -180,6 +210,24 @@
<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>Appliquer automatiquement</value>
</data>
<data name="AutoMode" xml:space="preserve">
<value>Automatique</value>
</data>
@@ -190,20 +238,47 @@
<value>Allumé</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>Délai (secondes) avant extinction rétroéclairage</value>
<value>Délai d'activation de la batterie (0 - ON)</value>
</data>
<data name="Balanced" xml:space="preserve">
<value>Équilibré</value>
</data>
<data name="BatteryCharge" xml:space="preserve">
<value>Charge de la batterie</value>
</data>
<data name="BatteryChargeLimit" xml:space="preserve">
<value>Limite de charge </value>
</data>
<data name="BatteryHealth" xml:space="preserve">
<value>Santé de la batterie</value>
</data>
<data name="BatteryLimitFull" xml:space="preserve">
<value>Charge unique à 100%</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>Mise à jour BIOS et pilotes</value>
</data>
<data name="Boot" xml:space="preserve">
<value>Au démarrage</value>
</data>
<data name="BootSound" xml:space="preserve">
<value>Son au démarrage</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>Luminosité</value>
</data>
<data name="BrightnessDown" xml:space="preserve">
<value>Baisser la luminosité</value>
</data>
<data name="BrightnessUp" xml:space="preserve">
<value>Augmenter la luminosité</value>
</data>
<data name="Calibrate" xml:space="preserve">
<value>Calibrer</value>
</data>
<data name="Charging" xml:space="preserve">
<value>Chargement en cours</value>
</data>
<data name="Color" xml:space="preserve">
<value>Couleur</value>
</data>
@@ -213,6 +288,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>
@@ -223,7 +301,10 @@
<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>
</data>
<data name="EcoGPUTooltip" xml:space="preserve">
<value>Désactive le dGPU pour préserver la batterie</value>
@@ -231,6 +312,17 @@
<data name="EcoMode" xml:space="preserve">
<value>Éco</value>
</data>
<data name="EnableOptimusText" xml:space="preserve">
<value>Désactiver la dGPU en passant au mode Eco pendant que le mode d'affichage dans le panneau de configuration NVIDIA n'est pas réglé sur Optimus peut causer des problèmes avec les commandes de luminosité jusqu'au prochain redémarrage.
Voulez-vous continuer ?</value>
</data>
<data name="EnableOptimusTitle" xml:space="preserve">
<value>Le mode d'affichage NVIDIA n'est pas réglé sur Optimus</value>
</data>
<data name="EnergySettings" xml:space="preserve">
<value>Paramètres d'énergie</value>
</data>
<data name="Extra" xml:space="preserve">
<value>+ d'options</value>
</data>
@@ -259,11 +351,14 @@
<value>Ventilateurs + Puissance</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<value>Vent: </value>
<value>Ventilateur</value>
</data>
<data name="FansPower" xml:space="preserve">
<value>Ventilateurs + Puissance</value>
</data>
<data name="FnLock" xml:space="preserve">
<value>Traiter les raccourcis clavier Fn+F sans Fn</value>
</data>
<data name="GPUBoost" xml:space="preserve">
<value>Dynamic Boost</value>
</data>
@@ -294,14 +389,20 @@
<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>Élevé</value>
</data>
<data name="KeyBindings" xml:space="preserve">
<value>Raccourcis clavier</value>
</data>
<data name="Keyboard" xml:space="preserve">
<value>Clavier</value>
</data>
<data name="KeyboardAuto" xml:space="preserve">
<value>Réduire rétroéclairage sur batterie et mode normal sur secteur</value>
<data name="KillGpuApps" xml:space="preserve">
<value>Arrêter toutes les applications utilisant la dGPU lors du passage au mode Eco</value>
</data>
<data name="LaptopBacklight" xml:space="preserve">
<value>Rétroéclairage de l'ordinateur</value>
@@ -318,9 +419,15 @@
<data name="Lightbar" xml:space="preserve">
<value>Barre lumineuse</value>
</data>
<data name="Lighting" xml:space="preserve">
<value>Éclairage</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>
<data name="Low" xml:space="preserve">
<value>Faible</value>
</data>
<data name="MatrixAudio" xml:space="preserve">
<value>Visualiseur Audio</value>
</data>
@@ -354,12 +461,51 @@
<data name="MinRefreshTooltip" xml:space="preserve">
<value>Rafraichîssement 60 Hz pour économiser de la batterie</value>
</data>
<data name="Minute" xml:space="preserve">
<value>Minute</value>
</data>
<data name="Minutes" xml:space="preserve">
<value>Minutes</value>
</data>
<data name="MouseAngleSnapping" xml:space="preserve">
<value>Angle Snapping</value>
</data>
<data name="MouseAutoPowerOff" xml:space="preserve">
<value>Arrêt automatique après</value>
</data>
<data name="MouseButtonResponse" xml:space="preserve">
<value>Button Response</value>
</data>
<data name="MouseLiftOffDistance" xml:space="preserve">
<value>Lift Off Distance</value>
</data>
<data name="MouseLowBatteryWarning" xml:space="preserve">
<value>Avertissement de batterie faible à</value>
</data>
<data name="MousePerformance" xml:space="preserve">
<value>Performance</value>
</data>
<data name="MouseSynchronize" xml:space="preserve">
<value>Synchroniser avec le pointeur</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>Multi-zone</value>
</data>
<data name="MuteMic" xml:space="preserve">
<value>Désactiver le micro</value>
</data>
<data name="Never" xml:space="preserve">
<value>Jamais</value>
</data>
<data name="NewUpdates" xml:space="preserve">
<value>Nouvelles mises à jour</value>
</data>
<data name="NoNewUpdates" xml:space="preserve">
<value>Aucune mise à jour disponible</value>
</data>
<data name="NotConnected" xml:space="preserve">
<value>Non connecté</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>Ouvrir G-Helper</value>
</data>
@@ -381,12 +527,18 @@
<data name="PerformanceMode" xml:space="preserve">
<value>Mode Performance</value>
</data>
<data name="Peripherals" xml:space="preserve">
<value>Périphériques</value>
</data>
<data name="PictureGif" xml:space="preserve">
<value>Image / Gif</value>
</data>
<data name="PlayPause" xml:space="preserve">
<value>Lecture / Pause</value>
</data>
<data name="PollingRate" xml:space="preserve">
<value>Polling Rate</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Limites de puissance</value>
</data>
@@ -396,11 +548,14 @@
<data name="PrintScreen" xml:space="preserve">
<value>Capture d'écran</value>
</data>
<data name="Profile" xml:space="preserve">
<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>
@@ -408,6 +563,12 @@
<data name="RunOnStartup" xml:space="preserve">
<value>Exécuter au démarrage</value>
</data>
<data name="ScreenPadDown" xml:space="preserve">
<value>Baisser la luminosité du Screenpad</value>
</data>
<data name="ScreenPadUp" xml:space="preserve">
<value>Augmenter la luminosité du Screenpad</value>
</data>
<data name="Shutdown" xml:space="preserve">
<value>Arrêter</value>
</data>
@@ -423,12 +584,33 @@
<data name="StandardMode" xml:space="preserve">
<value>Standard</value>
</data>
<data name="Start" xml:space="preserve">
<value>Démarrer</value>
</data>
<data name="StartingServices" xml:space="preserve">
<value>Démarrage des services</value>
</data>
<data name="StartupError" xml:space="preserve">
<value>Erreur au lancement</value>
</data>
<data name="Stop" xml:space="preserve">
<value>Stop</value>
</data>
<data name="StopGPUApps" xml:space="preserve">
<value>Arrêt des applications dGPU</value>
</data>
<data name="StoppingServices" xml:space="preserve">
<value>Arrêt des services</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<value>Activer Aura</value>
</data>
<data name="ToggleClamshellMode" xml:space="preserve">
<value>Basculer automatiquement en mode Clamshell</value>
</data>
<data name="ToggleFnLock" xml:space="preserve">
<value>Activer/désactiver Fn-Lock</value>
</data>
<data name="ToggleMiniled" xml:space="preserve">
<value>Activer Miniled (si supporté)</value>
</data>
@@ -450,6 +632,12 @@
<data name="UltimateMode" xml:space="preserve">
<value>Ultime</value>
</data>
<data name="UndervoltingRisky" xml:space="preserve">
<value>L'undervolting est une fonctionnalité expérimentale et risquée. Si les valeurs appliquées sont trop faibles, elles peuvent causer de l'instabilité, éteindre l'ordinateur ou causer une corruption de données. Si vous voulez essayer - commencer avec des petites valeurs, cliquez sur Appliquer et testez ce qui fonctionne pour vous.</value>
</data>
<data name="Updates" xml:space="preserve">
<value>Mises à jour</value>
</data>
<data name="VersionLabel" xml:space="preserve">
<value>Version </value>
</data>

View File

@@ -0,0 +1,656 @@
<?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>Gyorsítás</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>
<data name="AlertDGPU" xml:space="preserve">
<value>Úgy tűnik használatban van a GPU. Biztosan letiltod?</value>
</data>
<data name="AlertDGPUTitle" xml:space="preserve">
<value>Eco mód</value>
</data>
<data name="AlertUltimateOff" xml:space="preserve">
<value>Az Ultimate mód kikapcsolása után újraindítás szükséges</value>
</data>
<data name="AlertUltimateOn" xml:space="preserve">
<value>Az Ultimate mód használatához újraindítás szükséges</value>
</data>
<data name="AlertUltimateTitle" xml:space="preserve">
<value>Újraindítja most?</value>
</data>
<data name="AnimationSpeed" xml:space="preserve">
<value>Animáció sebessége</value>
</data>
<data name="AnimeMatrix" xml:space="preserve">
<value>Anime Matrix</value>
</data>
<data name="AppAlreadyRunning" xml:space="preserve">
<value>Az alkalmazás már el lett inítva</value>
</data>
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>A G-Helper már fut. A rendszertárcán megtalálod az alkalmazás ikonját.</value>
</data>
<data name="Apply" xml:space="preserve">
<value>Alkalmaz</value>
</data>
<data name="ApplyFanCurve" xml:space="preserve">
<value>Egyedi ventilátorgörbe alkalmazása</value>
</data>
<data name="ApplyPowerLimits" xml:space="preserve">
<value>Teljesítménykorlátok alkalmazása</value>
</data>
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>A Windows energiagazdálkodási módok automatikus beállítása</value>
</data>
<data name="AsusServicesRunning" xml:space="preserve">
<value>Asus szolgáltatások futnak</value>
</data>
<data name="AuraBatteryState" xml:space="preserve">
<value>Akkuállapot</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>Lélegző</value>
</data>
<data name="AuraClockwise" xml:space="preserve">
<value>Jobbra forog</value>
</data>
<data name="AuraColorCycle" xml:space="preserve">
<value>Színváltás</value>
</data>
<data name="AuraComet" xml:space="preserve">
<value>Üstökös</value>
</data>
<data name="AuraCounterClockwise" xml:space="preserve">
<value>Balra forog</value>
</data>
<data name="AuraFast" xml:space="preserve">
<value>Gyors</value>
</data>
<data name="AuraLightingMode" xml:space="preserve">
<value>Világítás típusa</value>
</data>
<data name="AuraNormal" xml:space="preserve">
<value>Normál</value>
</data>
<data name="AuraRainbow" xml:space="preserve">
<value>Szivárvány</value>
</data>
<data name="AuraRandomColor" xml:space="preserve">
<value>Véletlen</value>
</data>
<data name="AuraReact" xml:space="preserve">
<value>Reagál</value>
</data>
<data name="AuraSlow" xml:space="preserve">
<value>Lassú</value>
</data>
<data name="AuraStatic" xml:space="preserve">
<value>Állandó</value>
</data>
<data name="AuraStrobe" xml:space="preserve">
<value>Stroboszkóp</value>
</data>
<data name="AuraZoneAll" xml:space="preserve">
<value>Mindegyik</value>
</data>
<data name="AuraZoneDock" xml:space="preserve">
<value>Dokk</value>
</data>
<data name="AuraZoneLogo" xml:space="preserve">
<value>Logó</value>
</data>
<data name="AuraZoneScroll" xml:space="preserve">
<value>Görgetés</value>
</data>
<data name="AuraZoneUnderglow" xml:space="preserve">
<value>Underglow</value>
</data>
<data name="AutoApply" xml:space="preserve">
<value>Automatikus alkalmazás</value>
</data>
<data name="AutoMode" xml:space="preserve">
<value>Automata</value>
</data>
<data name="AutoRefreshTooltip" xml:space="preserve">
<value>Átállítja 60Hz-re, hogy spóroljon az akku-val, majd töltőn vissza</value>
</data>
<data name="Awake" xml:space="preserve">
<value>Ébren</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>Késleltetés töltés / akku módban (0 - BE)</value>
</data>
<data name="Balanced" xml:space="preserve">
<value>Teljesítmény</value>
</data>
<data name="BatteryCharge" xml:space="preserve">
<value>Töltés</value>
</data>
<data name="BatteryChargeLimit" xml:space="preserve">
<value>Töltési korlát</value>
</data>
<data name="BatteryHealth" xml:space="preserve">
<value>Akku állapot</value>
</data>
<data name="BatteryLimitFull" xml:space="preserve">
<value>One time charge to 100%</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>BIOS és illesztőprogram frissítések</value>
</data>
<data name="Boot" xml:space="preserve">
<value>Rendszerbetöltés</value>
</data>
<data name="BootSound" xml:space="preserve">
<value>Rendszerindítási hang</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>Fényerő</value>
</data>
<data name="BrightnessDown" xml:space="preserve">
<value>Fényerő csökkentése</value>
</data>
<data name="BrightnessUp" xml:space="preserve">
<value>Fényerő növelése</value>
</data>
<data name="Calibrate" xml:space="preserve">
<value>Kalibrálás</value>
</data>
<data name="Charging" xml:space="preserve">
<value>Töltés</value>
</data>
<data name="Color" xml:space="preserve">
<value>Szín</value>
</data>
<data name="CPUBoost" xml:space="preserve">
<value>CPU gyorsítás</value>
</data>
<data name="Custom" xml:space="preserve">
<value>Egyéni</value>
</data>
<data name="Deceleration" xml:space="preserve">
<value>Lassítás</value>
</data>
<data name="Default" xml:space="preserve">
<value>Alapért.</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Képernyőtúlhajtás letiltása</value>
</data>
<data name="Discharging" xml:space="preserve">
<value>Merülés</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>Letöltés</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Illesztőprogramok és alkalmazások</value>
</data>
<data name="EcoGPUTooltip" xml:space="preserve">
<value>Letiltja a dGPU-t, hogy spóroljon az akkuval</value>
</data>
<data name="EcoMode" xml:space="preserve">
<value>Eco</value>
</data>
<data name="EnableOptimusText" xml:space="preserve">
<value>Disabling the dGPU by going into Eco mode while Display Mode in NVIDIA Control Panel is not set to Optimus might cause problems with brightness controls until after the next reboot.
Do you still want to continue?</value>
</data>
<data name="EnableOptimusTitle" xml:space="preserve">
<value>NVIDIA kijelzőmód nincs Optimus-ra állítva</value>
</data>
<data name="EnergySettings" xml:space="preserve">
<value>Energia beállítások</value>
</data>
<data name="Extra" xml:space="preserve">
<value>Extra</value>
</data>
<data name="ExtraSettings" xml:space="preserve">
<value>Extra beállítások</value>
</data>
<data name="FactoryDefaults" xml:space="preserve">
<value>Gyári alapértékek</value>
</data>
<data name="FanCurves" xml:space="preserve">
<value>Ventilátorgörbe</value>
</data>
<data name="FanProfileCPU" xml:space="preserve">
<value>CPU ventilátor profil</value>
</data>
<data name="FanProfileGPU" xml:space="preserve">
<value>GPU ventilátor profil</value>
</data>
<data name="FanProfileMid" xml:space="preserve">
<value>Középső ventilátor profil</value>
</data>
<data name="FanProfiles" xml:space="preserve">
<value>Ventilátor profilok</value>
</data>
<data name="FansAndPower" xml:space="preserve">
<value>Ventilátor és energia</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<value>Ventilátor</value>
</data>
<data name="FansPower" xml:space="preserve">
<value>Venti + energia</value>
</data>
<data name="FnLock" xml:space="preserve">
<value>Fn + F gyorsgombok feldolgozása Fn nélkül</value>
</data>
<data name="GPUBoost" xml:space="preserve">
<value>Dinamikus gyorsítás</value>
</data>
<data name="GPUChanging" xml:space="preserve">
<value>Váltás...</value>
</data>
<data name="GPUCoreClockOffset" xml:space="preserve">
<value>Magórajel eltolás</value>
</data>
<data name="GPUMemoryClockOffset" xml:space="preserve">
<value>Memória órajel eltolás</value>
</data>
<data name="GPUMode" xml:space="preserve">
<value>GPU mód</value>
</data>
<data name="GPUModeEco" xml:space="preserve">
<value>Csak iGPU</value>
</data>
<data name="GPUModeStandard" xml:space="preserve">
<value>iGPU + dGPU</value>
</data>
<data name="GPUModeUltimate" xml:space="preserve">
<value>kizárólag dGPU</value>
</data>
<data name="GPUSettings" xml:space="preserve">
<value>GPU beállítások</value>
</data>
<data name="GPUTempTarget" xml:space="preserve">
<value>Célhőmérséklet</value>
</data>
<data name="HibernateAfter" xml:space="preserve">
<value>Akku módban az alvó módból Hibernálásig eltelt idő (0 - KI)</value>
</data>
<data name="High" xml:space="preserve">
<value>Magas</value>
</data>
<data name="KeyBindings" xml:space="preserve">
<value>Gyorsbillentyűk</value>
</data>
<data name="Keyboard" xml:space="preserve">
<value>Billentyűzet</value>
</data>
<data name="KillGpuApps" xml:space="preserve">
<value>Eco módba lépéskor minden alkalmazást leállít, ami a GPU-t használja</value>
</data>
<data name="LaptopBacklight" xml:space="preserve">
<value>Laptop háttérvilágítás</value>
</data>
<data name="LaptopKeyboard" xml:space="preserve">
<value>Laptop billentyűzet</value>
</data>
<data name="LaptopScreen" xml:space="preserve">
<value>Laptop kijelző</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Fedél</value>
</data>
<data name="Lightbar" xml:space="preserve">
<value>Fénysáv</value>
</data>
<data name="Lighting" xml:space="preserve">
<value>Világítás</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logó</value>
</data>
<data name="Low" xml:space="preserve">
<value>Alacsony</value>
</data>
<data name="MatrixAudio" xml:space="preserve">
<value>Hang vizualizáció</value>
</data>
<data name="MatrixBanner" xml:space="preserve">
<value>Bináris logó</value>
</data>
<data name="MatrixBright" xml:space="preserve">
<value>Fényes</value>
</data>
<data name="MatrixClock" xml:space="preserve">
<value>Óra</value>
</data>
<data name="MatrixDim" xml:space="preserve">
<value>Halvány</value>
</data>
<data name="MatrixLogo" xml:space="preserve">
<value>Rog logó</value>
</data>
<data name="MatrixMedium" xml:space="preserve">
<value>Közepes</value>
</data>
<data name="MatrixOff" xml:space="preserve">
<value>Ki</value>
</data>
<data name="MatrixPicture" xml:space="preserve">
<value>Kép</value>
</data>
<data name="MaxRefreshTooltip" xml:space="preserve">
<value>Max frissítési gyakoriság kevés késleltetéshez</value>
</data>
<data name="MinRefreshTooltip" xml:space="preserve">
<value>60Hz-s frissítési gyakoriság, hogy spóroljon az akkuval</value>
</data>
<data name="Minute" xml:space="preserve">
<value>perc</value>
</data>
<data name="Minutes" xml:space="preserve">
<value>perc</value>
</data>
<data name="MouseAngleSnapping" xml:space="preserve">
<value>Angle Snapping</value>
</data>
<data name="MouseAutoPowerOff" xml:space="preserve">
<value>Automatikus kikapcsolás idő múlva</value>
</data>
<data name="MouseButtonResponse" xml:space="preserve">
<value>Gomb funkciója</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>
</data>
<data name="MousePerformance" xml:space="preserve">
<value>Teljesítmény</value>
</data>
<data name="MouseSynchronize" xml:space="preserve">
<value>Szinkronizálás egérrel</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>Többzónás</value>
</data>
<data name="MuteMic" xml:space="preserve">
<value>Mikrofon némítása</value>
</data>
<data name="Never" xml:space="preserve">
<value>Soha</value>
</data>
<data name="NewUpdates" xml:space="preserve">
<value>Új frissítés</value>
</data>
<data name="NoNewUpdates" xml:space="preserve">
<value>Nincs új frissítés</value>
</data>
<data name="NotConnected" xml:space="preserve">
<value>Nincs csatlakoztatva</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>G-Helper ablak megnyitása</value>
</data>
<data name="Optimized" xml:space="preserve">
<value>Optimalizált</value>
</data>
<data name="OptimizedGPUTooltip" xml:space="preserve">
<value>Akkus módban váltson Eco módra, töltéskor pedig Standard-ra</value>
</data>
<data name="OptimizedUSBC" xml:space="preserve">
<value>Optimalizált módban USB-C-s töltés közben tartsa letiltva a GPU-t</value>
</data>
<data name="Other" xml:space="preserve">
<value>Egyéb</value>
</data>
<data name="Overdrive" xml:space="preserve">
<value>Túlhajtás</value>
</data>
<data name="PerformanceMode" xml:space="preserve">
<value>Üzemmód</value>
</data>
<data name="Peripherals" xml:space="preserve">
<value>Perifériák</value>
</data>
<data name="PictureGif" xml:space="preserve">
<value>Kép / Gif</value>
</data>
<data name="PlayPause" xml:space="preserve">
<value>Indít / Megállít</value>
</data>
<data name="PollingRate" xml:space="preserve">
<value>Polling Rate</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Teljesítménykorlátok</value>
</data>
<data name="PPTExperimental" xml:space="preserve">
<value>A Teljesítménykorlát egy kísérleti funkció. Használja körültekintően és saját felelősségére!</value>
</data>
<data name="PrintScreen" xml:space="preserve">
<value>PrintScreen</value>
</data>
<data name="Profile" xml:space="preserve">
<value>Profil</value>
</data>
<data name="Quit" xml:space="preserve">
<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. Próbálja meg a G-Helper újraindítani a dGPU-t az eszközkezelőben? (Kérjük, saját felelősségére folytassa)</value>
</data>
<data name="RPM" xml:space="preserve">
<value>Fordulatszám</value>
</data>
<data name="RunOnStartup" xml:space="preserve">
<value>Indítás a rendszerrel</value>
</data>
<data name="ScreenPadDown" xml:space="preserve">
<value>Screenpad Brightness Down</value>
</data>
<data name="ScreenPadUp" xml:space="preserve">
<value>Screenpad Brightness Up</value>
</data>
<data name="Shutdown" xml:space="preserve">
<value>Leállítás</value>
</data>
<data name="Silent" xml:space="preserve">
<value>Csendes</value>
</data>
<data name="Sleep" xml:space="preserve">
<value>Alvás</value>
</data>
<data name="StandardGPUTooltip" xml:space="preserve">
<value>Általános használathoz engedélyezi a dGPU-t</value>
</data>
<data name="StandardMode" xml:space="preserve">
<value>Standard</value>
</data>
<data name="Start" xml:space="preserve">
<value>Indítás</value>
</data>
<data name="StartingServices" xml:space="preserve">
<value>Szolgáltatások elindítása</value>
</data>
<data name="StartupError" xml:space="preserve">
<value>Indítási hiba</value>
</data>
<data name="Stop" xml:space="preserve">
<value>Leállít</value>
</data>
<data name="StopGPUApps" xml:space="preserve">
<value>GPU alkalmazások leállítása</value>
</data>
<data name="StoppingServices" xml:space="preserve">
<value>Szolgáltatások leállítása</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<value>AURA ki-/bekapcsolása</value>
</data>
<data name="ToggleClamshellMode" xml:space="preserve">
<value>Auto Toggle Clamshell Mode</value>
</data>
<data name="ToggleFnLock" xml:space="preserve">
<value>Fn-Lock ki-/bekapcsolása</value>
</data>
<data name="ToggleMiniled" xml:space="preserve">
<value>MiniLED ki-/bekapcsolása (ha támogatott)</value>
</data>
<data name="ToggleScreen" xml:space="preserve">
<value>Képernyő ki-/bekapcsolása</value>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbó</value>
</data>
<data name="TurnedOff" xml:space="preserve">
<value>Kikapcsolva</value>
</data>
<data name="TurnOffOnBattery" xml:space="preserve">
<value>Akkus üzemmódban kikapcsol</value>
</data>
<data name="UltimateGPUTooltip" xml:space="preserve">
<value>A jobb FPS érdekében a laptop kijelzőt közvetlenül a GPU-n keresztül működteti</value>
</data>
<data name="UltimateMode" xml:space="preserve">
<value>Ultimate</value>
</data>
<data name="UndervoltingRisky" xml:space="preserve">
<value>Undervolting is an experimental and risky feature. If applied values are too low for your hardware, it can become unstable, shut down or cause data corruption. If you want to try - start from small values first, click Apply and test what works for you.</value>
</data>
<data name="Updates" xml:space="preserve">
<value>Frissítések</value>
</data>
<data name="VersionLabel" xml:space="preserve">
<value>Verzió</value>
</data>
<data name="VolumeDown" xml:space="preserve">
<value>Lehalkítás</value>
</data>
<data name="VolumeMute" xml:space="preserve">
<value>Némítás</value>
</data>
<data name="VolumeUp" xml:space="preserve">
<value>Hangosítás</value>
</data>
<data name="WindowTop" xml:space="preserve">
<value>Alkalmazás maradjon mindig felül</value>
</data>
</root>

View File

@@ -0,0 +1,656 @@
<?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>Akselerasi</value>
</data>
<data name="ACPIError" xml:space="preserve">
<value>Tidak dapat terhubung ke ASUS ACPI. tanpanya aplikasi tidak dapat berfungsi. Cobalah untuk menginstal Asus System Control Interface</value>
</data>
<data name="AlertDGPU" xml:space="preserve">
<value>Tampaknya GPU sedang digunakan intensif, nonaktifkan?</value>
</data>
<data name="AlertDGPUTitle" xml:space="preserve">
<value>Mode Eco</value>
</data>
<data name="AlertUltimateOff" xml:space="preserve">
<value>Mematikan Mode Ultimate memerlukan restart.</value>
</data>
<data name="AlertUltimateOn" xml:space="preserve">
<value>Mode Ultimate memerlukan restart</value>
</data>
<data name="AlertUltimateTitle" xml:space="preserve">
<value>Mulai ulang sekarang?</value>
</data>
<data name="AnimationSpeed" xml:space="preserve">
<value>Kecepatan Animasi</value>
</data>
<data name="AnimeMatrix" xml:space="preserve">
<value>Anime Matrix</value>
</data>
<data name="AppAlreadyRunning" xml:space="preserve">
<value>Aplikasi sudah berjalan</value>
</data>
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper sudah berjalan. Periksa system tray untuk menemukan ikonnya.</value>
</data>
<data name="Apply" xml:space="preserve">
<value>Terapkan</value>
</data>
<data name="ApplyFanCurve" xml:space="preserve">
<value>Terapkan Custom Fan Curve</value>
</data>
<data name="ApplyPowerLimits" xml:space="preserve">
<value>Terapkan Batas Daya</value>
</data>
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>Otomatis sesuaikan Mode Daya Windows</value>
</data>
<data name="AsusServicesRunning" xml:space="preserve">
<value>Layanan Asus Berjalan</value>
</data>
<data name="AuraBatteryState" xml:space="preserve">
<value>Status Baterai</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>Bernapas</value>
</data>
<data name="AuraClockwise" xml:space="preserve">
<value>Searah Jarum Jam</value>
</data>
<data name="AuraColorCycle" xml:space="preserve">
<value>Siklus Warna</value>
</data>
<data name="AuraComet" xml:space="preserve">
<value>Komet</value>
</data>
<data name="AuraCounterClockwise" xml:space="preserve">
<value>Berlawanan Jarum Jam</value>
</data>
<data name="AuraFast" xml:space="preserve">
<value>Cepat</value>
</data>
<data name="AuraLightingMode" xml:space="preserve">
<value>Mode Pencahayaan</value>
</data>
<data name="AuraNormal" xml:space="preserve">
<value>Normal</value>
</data>
<data name="AuraRainbow" xml:space="preserve">
<value>Pelangi</value>
</data>
<data name="AuraRandomColor" xml:space="preserve">
<value>Acak</value>
</data>
<data name="AuraReact" xml:space="preserve">
<value>Reaksi</value>
</data>
<data name="AuraSlow" xml:space="preserve">
<value>Pelan</value>
</data>
<data name="AuraStatic" xml:space="preserve">
<value>Statis</value>
</data>
<data name="AuraStrobe" xml:space="preserve">
<value>Berkedip</value>
</data>
<data name="AuraZoneAll" xml:space="preserve">
<value>Semua</value>
</data>
<data name="AuraZoneDock" xml:space="preserve">
<value>Dok</value>
</data>
<data name="AuraZoneLogo" xml:space="preserve">
<value>Logo</value>
</data>
<data name="AuraZoneScroll" xml:space="preserve">
<value>Roda Gulir</value>
</data>
<data name="AuraZoneUnderglow" xml:space="preserve">
<value>Cahaya Bawah</value>
</data>
<data name="AutoApply" xml:space="preserve">
<value>Terapkan Secara Otomatis</value>
</data>
<data name="AutoMode" xml:space="preserve">
<value>Otomatis</value>
</data>
<data name="AutoRefreshTooltip" xml:space="preserve">
<value>Atur ke 60Hz untuk menghemat baterai, dan kembalikan saat mengisi daya</value>
</data>
<data name="Awake" xml:space="preserve">
<value>Bangun</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>Waktu tunggu dicolokan / menggunakan baterai (0 - Hidup)</value>
</data>
<data name="Balanced" xml:space="preserve">
<value>Seimbang</value>
</data>
<data name="BatteryCharge" xml:space="preserve">
<value>Baterai</value>
</data>
<data name="BatteryChargeLimit" xml:space="preserve">
<value>Batas Pengisian Baterai</value>
</data>
<data name="BatteryHealth" xml:space="preserve">
<value>Kesehatan Baterai</value>
</data>
<data name="BatteryLimitFull" xml:space="preserve">
<value>Isi daya sekali hingga mencapai 100%</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>Pembaruan BIOS dan Driver</value>
</data>
<data name="Boot" xml:space="preserve">
<value>Boot</value>
</data>
<data name="BootSound" xml:space="preserve">
<value>Suara Boot</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>Kecerahan</value>
</data>
<data name="BrightnessDown" xml:space="preserve">
<value>Kurangi Kecerahan</value>
</data>
<data name="BrightnessUp" xml:space="preserve">
<value>Tingkatkan Kecerahan</value>
</data>
<data name="Calibrate" xml:space="preserve">
<value>Kalibrasi</value>
</data>
<data name="Charging" xml:space="preserve">
<value>Mengisi Daya</value>
</data>
<data name="Color" xml:space="preserve">
<value>Warna</value>
</data>
<data name="CPUBoost" xml:space="preserve">
<value>CPU Boost</value>
</data>
<data name="Custom" xml:space="preserve">
<value>Kustom</value>
</data>
<data name="Deceleration" xml:space="preserve">
<value>Perlambatan</value>
</data>
<data name="Default" xml:space="preserve">
<value>Standar</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Nonaktifkan screen overdrive</value>
</data>
<data name="Discharging" xml:space="preserve">
<value>Discharging</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>Unduh</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Driver dan Software</value>
</data>
<data name="EcoGPUTooltip" xml:space="preserve">
<value>Menonaktikan dGPU untuk menghemat baterai</value>
</data>
<data name="EcoMode" xml:space="preserve">
<value>Eco</value>
</data>
<data name="EnableOptimusText" xml:space="preserve">
<value>Menonaktikan dGPU dengan masuk ke mode Eco saat Mode Tampilan di Panel Kontrol NVIDIA tidak diatur ke Optimus mungkin dapat menyebabkan masalah dengan kontrol kecerahan hingga mulai ulang berikutnya.
Apakah Anda masih ingin melanjutkan?</value>
</data>
<data name="EnableOptimusTitle" xml:space="preserve">
<value>Mode Tampilan NVIDIA tidak diatur ke Optimus</value>
</data>
<data name="EnergySettings" xml:space="preserve">
<value>Pengaturan Energi</value>
</data>
<data name="Extra" xml:space="preserve">
<value>Ekstra</value>
</data>
<data name="ExtraSettings" xml:space="preserve">
<value>Pengaturan Ekstra</value>
</data>
<data name="FactoryDefaults" xml:space="preserve">
<value>Setelan Pabrik</value>
</data>
<data name="FanCurves" xml:space="preserve">
<value>Kurva Kipas</value>
</data>
<data name="FanProfileCPU" xml:space="preserve">
<value>Profil Kipas CPU</value>
</data>
<data name="FanProfileGPU" xml:space="preserve">
<value>Profil Kipas GPU</value>
</data>
<data name="FanProfileMid" xml:space="preserve">
<value>Profil Kipas Sedang</value>
</data>
<data name="FanProfiles" xml:space="preserve">
<value>Profil Kipas</value>
</data>
<data name="FansAndPower" xml:space="preserve">
<value>Kipas dan Daya</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<value>Kipas</value>
</data>
<data name="FansPower" xml:space="preserve">
<value>Kipas + Daya</value>
</data>
<data name="FnLock" xml:space="preserve">
<value>Proses tombol pintas Fn+F tanpa Fn</value>
</data>
<data name="GPUBoost" xml:space="preserve">
<value>Dynamic Boost</value>
</data>
<data name="GPUChanging" xml:space="preserve">
<value>Mengubah</value>
</data>
<data name="GPUCoreClockOffset" xml:space="preserve">
<value>Core Clock Offset</value>
</data>
<data name="GPUMemoryClockOffset" xml:space="preserve">
<value>Memory Clock Offset</value>
</data>
<data name="GPUMode" xml:space="preserve">
<value>Mode GPU</value>
</data>
<data name="GPUModeEco" xml:space="preserve">
<value>Hanya iGPU</value>
</data>
<data name="GPUModeStandard" xml:space="preserve">
<value>iGPU + dGPU</value>
</data>
<data name="GPUModeUltimate" xml:space="preserve">
<value>dGPU eksklusif</value>
</data>
<data name="GPUSettings" xml:space="preserve">
<value>Pengaturan GPU</value>
</data>
<data name="GPUTempTarget" xml:space="preserve">
<value>Target Suhu</value>
</data>
<data name="HibernateAfter" xml:space="preserve">
<value>Menit hingga Hibernasi dalam mode tidur saat menggunakan baterai (0 - Mati)</value>
</data>
<data name="High" xml:space="preserve">
<value>Tinggi</value>
</data>
<data name="KeyBindings" xml:space="preserve">
<value>Pintasan Keyboard</value>
</data>
<data name="Keyboard" xml:space="preserve">
<value>Keyboard</value>
</data>
<data name="KillGpuApps" xml:space="preserve">
<value>Hentikan semua aplikasi yang menggunakan GPU saat beralih ke mode Eco</value>
</data>
<data name="LaptopBacklight" xml:space="preserve">
<value>Laptop Backlight</value>
</data>
<data name="LaptopKeyboard" xml:space="preserve">
<value>Laptop Keyboard</value>
</data>
<data name="LaptopScreen" xml:space="preserve">
<value>Layar Laptop</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Lid</value>
</data>
<data name="Lightbar" xml:space="preserve">
<value>Lightbar</value>
</data>
<data name="Lighting" xml:space="preserve">
<value>Lighting</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>
<data name="Low" xml:space="preserve">
<value>Rendah</value>
</data>
<data name="MatrixAudio" xml:space="preserve">
<value>Visualisasi Audio</value>
</data>
<data name="MatrixBanner" xml:space="preserve">
<value>Binary Banner</value>
</data>
<data name="MatrixBright" xml:space="preserve">
<value>Terang</value>
</data>
<data name="MatrixClock" xml:space="preserve">
<value>Jam</value>
</data>
<data name="MatrixDim" xml:space="preserve">
<value>Redup</value>
</data>
<data name="MatrixLogo" xml:space="preserve">
<value>Logo Rog</value>
</data>
<data name="MatrixMedium" xml:space="preserve">
<value>Sedang</value>
</data>
<data name="MatrixOff" xml:space="preserve">
<value>Mati</value>
</data>
<data name="MatrixPicture" xml:space="preserve">
<value>Gambar</value>
</data>
<data name="MaxRefreshTooltip" xml:space="preserve">
<value>Maks refresh rate untuk mengurangi latensi</value>
</data>
<data name="MinRefreshTooltip" xml:space="preserve">
<value>60Hz refresh rate untuk menghemat baterai</value>
</data>
<data name="Minute" xml:space="preserve">
<value>Menit</value>
</data>
<data name="Minutes" xml:space="preserve">
<value>Menit</value>
</data>
<data name="MouseAngleSnapping" xml:space="preserve">
<value>Angle Snapping</value>
</data>
<data name="MouseAutoPowerOff" xml:space="preserve">
<value>Mati Otomatis Setelah</value>
</data>
<data name="MouseButtonResponse" xml:space="preserve">
<value>Respon Tombol</value>
</data>
<data name="MouseLiftOffDistance" xml:space="preserve">
<value>Jarak Angkat</value>
</data>
<data name="MouseLowBatteryWarning" xml:space="preserve">
<value>Peringatan Baterai Rendah pada</value>
</data>
<data name="MousePerformance" xml:space="preserve">
<value>Performa</value>
</data>
<data name="MouseSynchronize" xml:space="preserve">
<value>Sinkronkan dengan mouse</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>Multizona</value>
</data>
<data name="MuteMic" xml:space="preserve">
<value>Bisukan Mic</value>
</data>
<data name="Never" xml:space="preserve">
<value>Jangan Pernah</value>
</data>
<data name="NewUpdates" xml:space="preserve">
<value>Pembaruan Terbaru</value>
</data>
<data name="NoNewUpdates" xml:space="preserve">
<value>Tidak ada pembaruan</value>
</data>
<data name="NotConnected" xml:space="preserve">
<value>Tidak Tersambung</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>Buka Jendela G-Helper</value>
</data>
<data name="Optimized" xml:space="preserve">
<value>Dioptimalkan</value>
</data>
<data name="OptimizedGPUTooltip" xml:space="preserve">
<value>Beralih ke Mode Eco saat menggunakan baterai dan ke Mode Standar saat mengisi daya.</value>
</data>
<data name="OptimizedUSBC" xml:space="preserve">
<value>Tetap matikan GPU pada pengisi daya USB-C dalam mode Dioptimalkan</value>
</data>
<data name="Other" xml:space="preserve">
<value>Lainnya</value>
</data>
<data name="Overdrive" xml:space="preserve">
<value>Overdrive</value>
</data>
<data name="PerformanceMode" xml:space="preserve">
<value>Mode</value>
</data>
<data name="Peripherals" xml:space="preserve">
<value>Periferal</value>
</data>
<data name="PictureGif" xml:space="preserve">
<value>Gambar / Gif</value>
</data>
<data name="PlayPause" xml:space="preserve">
<value>Putar / Jeda</value>
</data>
<data name="PollingRate" xml:space="preserve">
<value>Polling Rate</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Batas Daya</value>
</data>
<data name="PPTExperimental" xml:space="preserve">
<value>Batas Daya adalah fitur eksperimental. Gunakan dengan hati-hati dan atas risiko Anda sendiri!</value>
</data>
<data name="PrintScreen" xml:space="preserve">
<value>PrintScreen</value>
</data>
<data name="Profile" xml:space="preserve">
<value>Profil</value>
</data>
<data name="Quit" xml:space="preserve">
<value>Keluar</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>Ada yang menggunakan dGPU dan mencegah mode Eco. Biarkan G-Helper mencoba memulai ulang dGPU di pengelola perangkat? (Silakan lanjutkan dengan risiko Anda sendiri)</value>
</data>
<data name="RPM" xml:space="preserve">
<value>RPM</value>
</data>
<data name="RunOnStartup" xml:space="preserve">
<value>Jalankan di Startup</value>
</data>
<data name="ScreenPadDown" xml:space="preserve">
<value>Kurangi Kecerahan Screenpad</value>
</data>
<data name="ScreenPadUp" xml:space="preserve">
<value>Tingkatkan Kecerahan Screenpad</value>
</data>
<data name="Shutdown" xml:space="preserve">
<value>Matikan</value>
</data>
<data name="Silent" xml:space="preserve">
<value>Diam</value>
</data>
<data name="Sleep" xml:space="preserve">
<value>Tidur</value>
</data>
<data name="StandardGPUTooltip" xml:space="preserve">
<value>Mengaktifkan dGPU untuk penggunaan standar</value>
</data>
<data name="StandardMode" xml:space="preserve">
<value>Standar</value>
</data>
<data name="Start" xml:space="preserve">
<value>Mulai</value>
</data>
<data name="StartingServices" xml:space="preserve">
<value>Memulai Services</value>
</data>
<data name="StartupError" xml:space="preserve">
<value>Startup Error</value>
</data>
<data name="Stop" xml:space="preserve">
<value>Berhenti</value>
</data>
<data name="StopGPUApps" xml:space="preserve">
<value>Hentikan Aplikasi GPU</value>
</data>
<data name="StoppingServices" xml:space="preserve">
<value>Menghentikan Services</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<value>Hidupkan/Matikan Aura</value>
</data>
<data name="ToggleClamshellMode" xml:space="preserve">
<value>Otomatis Hidupkan/Matikan Mode Clamshell</value>
</data>
<data name="ToggleFnLock" xml:space="preserve">
<value>Hidupkan/Matikan Fn-Lock</value>
</data>
<data name="ToggleMiniled" xml:space="preserve">
<value>Toggle Miniled (jika didukung)</value>
</data>
<data name="ToggleScreen" xml:space="preserve">
<value>Hidupkan/Matikan Layar</value>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>
<data name="TurnedOff" xml:space="preserve">
<value>Dimatikan</value>
</data>
<data name="TurnOffOnBattery" xml:space="preserve">
<value>Matikan saat menggunakan baterai</value>
</data>
<data name="UltimateGPUTooltip" xml:space="preserve">
<value>Merutekan layar laptop ke dGPU, memaksimalkan FPS</value>
</data>
<data name="UltimateMode" xml:space="preserve">
<value>Ultimate</value>
</data>
<data name="UndervoltingRisky" xml:space="preserve">
<value>Undervolting adalah fitur eksperimental dan berisiko. Jika nilai yang diterapkan terlalu rendah untuk perangkat keras Anda, ini dapat menjadi tidak stabil, mati mendadak, atau menyebabkan kerusakan data. Jika Anda ingin mencobanya, mulailah dengan nilai kecil terlebih dahulu, klik Terapkan, dan uji apa yang cocok untuk Anda.</value>
</data>
<data name="Updates" xml:space="preserve">
<value>Pembaruan</value>
</data>
<data name="VersionLabel" xml:space="preserve">
<value>Versi</value>
</data>
<data name="VolumeDown" xml:space="preserve">
<value>Volume Turun</value>
</data>
<data name="VolumeMute" xml:space="preserve">
<value>Volume Bisu</value>
</data>
<data name="VolumeUp" xml:space="preserve">
<value>Volume Naik</value>
</data>
<data name="WindowTop" xml:space="preserve">
<value>Jaga agar jendela aplikasi selalu di atas</value>
</data>
</root>

View File

@@ -59,46 +59,46 @@
: 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: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: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: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: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: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: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:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
@@ -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, l'applicazione non può funzionare. Prova ad installare Asus System Control Interface</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>
@@ -127,10 +130,10 @@
<value>Modalità Eco</value>
</data>
<data name="AlertUltimateOff" xml:space="preserve">
<value>Per disattivare la modalità Estremo è necessario riavviare</value>
<value>Per disattivare la modalità Estrema è necessario riavviare</value>
</data>
<data name="AlertUltimateOn" xml:space="preserve">
<value>Per attivare la modalità Estremo è necessario riavviare</value>
<value>Per attivare la modalità Estrema è necessario riavviare</value>
</data>
<data name="AlertUltimateTitle" xml:space="preserve">
<value>Riavviare ora?</value>
@@ -145,34 +148,58 @@
<value>App già in esecuzione</value>
</data>
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper è già in esecuzione. Controlla il system tray per una icona.</value>
<value>G-Helper è già in esecuzione. Controlla l'icona nel system tray.</value>
</data>
<data name="Apply" xml:space="preserve">
<value>Applica</value>
</data>
<data name="ApplyFanCurve" xml:space="preserve">
<value>Applica una Curva Ventola</value>
<value>Applica Curve Ventola</value>
</data>
<data name="ApplyPowerLimits" xml:space="preserve">
<value>Applica limiti di alimentazione</value>
<value>Applica Limiti di Potenza</value>
</data>
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>Regolazione automatica del Risparmio Energetico</value>
<value>Regola Piano Energetico di Windows in automatico</value>
</data>
<data name="AsusServicesRunning" xml:space="preserve">
<value>Servizi Asus in Esecuzione</value>
</data>
<data name="AuraBatteryState" xml:space="preserve">
<value>Stato Batteria</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>Respiro</value>
</data>
<data name="AuraClockwise" xml:space="preserve">
<value>Senso Orario</value>
</data>
<data name="AuraColorCycle" xml:space="preserve">
<value>Ciclo Colori</value>
</data>
<data name="AuraComet" xml:space="preserve">
<value>Cometa</value>
</data>
<data name="AuraCounterClockwise" xml:space="preserve">
<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>
<data name="AuraRainbow" xml:space="preserve">
<value>Onda Arcobaleno</value>
<value>Arcobaleno</value>
</data>
<data name="AuraRandomColor" xml:space="preserve">
<value>Casuale</value>
</data>
<data name="AuraReact" xml:space="preserve">
<value>Reazione</value>
</data>
<data name="AuraSlow" xml:space="preserve">
<value>Lenta</value>
@@ -183,79 +210,118 @@
<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>
<data name="AutoMode" xml:space="preserve">
<value>Auto</value>
</data>
<data name="AutoRefreshTooltip" xml:space="preserve">
<value>Imposta i 60Hz per risparmiare batteria, quando in carica si disattiva</value>
<value>Imposta 60Hz per risparmiare batteria, reimposta quando in carica</value>
</data>
<data name="Awake" xml:space="preserve">
<value>In uso</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>Timeout retroilluminazione quando non in carica</value>
</data>
<data name="BacklightTimeoutPlugged" xml:space="preserve">
<value>Timeout retroilluminazione quando in carica (0 - accesa)</value>
<value>Timeout in carica / a batteria (0 - ACCESO)</value>
</data>
<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>
<data name="BatteryHealth" xml:space="preserve">
<value>Salute Batteria</value>
</data>
<data name="BatteryLimitFull" xml:space="preserve">
<value>One time charge to 100%</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>Aggiornamenti Driver e BIOS</value>
</data>
<data name="Boot" xml:space="preserve">
<value>Avvio</value>
</data>
<data name="BootSound" xml:space="preserve">
<value>Boot Sound</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>Luminosità</value>
</data>
<data name="BrightnessDown" xml:space="preserve">
<value>Riduci luminosità</value>
<value>Riduci Luminosità</value>
</data>
<data name="BrightnessUp" xml:space="preserve">
<value>Aumenta luminosità</value>
<value>Aumenta Luminosità</value>
</data>
<data name="Calibrate" xml:space="preserve">
<value>Calibrate</value>
</data>
<data name="Charging" xml:space="preserve">
<value>In carica</value>
</data>
<data name="Color" xml:space="preserve">
<value>Colore</value>
</data>
<data name="CPUBoost" xml:space="preserve">
<value>CPU Boost</value>
<value>Boost CPU</value>
</data>
<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>
<data name="DisableOverdrive" xml:space="preserve">
<value>Disabilita l'overdrive dello schermo</value>
<value>Disabilita Overdrive Schermo</value>
</data>
<data name="Discharging" xml:space="preserve">
<value>Non in carica</value>
<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>
</data>
<data name="EcoGPUTooltip" xml:space="preserve">
<value>Disabilità dGPU per il risparmio energetico</value>
<value>Disabilita dGPU per risparmiare energia</value>
</data>
<data name="EcoMode" xml:space="preserve">
<value>Eco</value>
</data>
<data name="EnableOptimusText" xml:space="preserve">
<value>Disabilitare la dGPU impostando la modalità Eco mentre non è attivata la modalità schermo ad Optimus nel Panello di Controllo NVIDIA non è impostata Optimus può causare problemi ai controlli luminosità, fino al prossimo riavvio.
<value>Disabilitare la dGPU impostando la modalità Eco quando non è attiva la modalità schermo Optimus nel Pannello di Controllo NVIDIA può causare problemi al controllo della luminosità fino al prossimo riavvio.
Sei sicuro di voler continuare?</value>
</data>
<data name="EnableOptimusTitle" xml:space="preserve">
<value>Modalità schermo NVIDIA non impostata ad Optimus</value>
<value>Modalità schermo NVIDIA non impostata su Optimus</value>
</data>
<data name="EnergySettings" xml:space="preserve">
<value>Risparmio Energia</value>
</data>
<data name="Extra" xml:space="preserve">
<value>Extra</value>
@@ -264,7 +330,7 @@ Sei sicuro di voler continuare?</value>
<value>Impostazioni aggiuntive</value>
</data>
<data name="FactoryDefaults" xml:space="preserve">
<value>Predefinite</value>
<value>Valori Predefiniti</value>
</data>
<data name="FanCurves" xml:space="preserve">
<value>Curve Ventola</value>
@@ -285,19 +351,19 @@ Sei sicuro di voler continuare?</value>
<value>Alimentazione e Ventole</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<value>Ventola: </value>
<value>Ventola</value>
</data>
<data name="FansPower" xml:space="preserve">
<value>Ventole + Alimentazione</value>
</data>
<data name="FnLock" xml:space="preserve">
<value>Utilizza i tasti Fn+F direttamente senza Fn</value>
<value>Elabora i tasti Fn+F direttamente senza Fn</value>
</data>
<data name="GPUBoost" xml:space="preserve">
<value>Boost Dinamico</value>
</data>
<data name="GPUChanging" xml:space="preserve">
<value>Cambio</value>
<value>Impostando</value>
</data>
<data name="GPUCoreClockOffset" xml:space="preserve">
<value>Offset Clock Core</value>
@@ -315,7 +381,7 @@ Sei sicuro di voler continuare?</value>
<value>iGPU + dGPU</value>
</data>
<data name="GPUModeUltimate" xml:space="preserve">
<value>Esclusivamente dGPU</value>
<value>Solo dGPU</value>
</data>
<data name="GPUSettings" xml:space="preserve">
<value>Impostazioni GPU</value>
@@ -323,17 +389,20 @@ 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>Elevato</value>
</data>
<data name="KeyBindings" xml:space="preserve">
<value>Associazione tasti</value>
<value>Associazione Tasti</value>
</data>
<data name="Keyboard" xml:space="preserve">
<value>Tastiera</value>
</data>
<data name="KeyboardAuto" xml:space="preserve">
<value>Retroilluminazione tastiera ridotta quando non in carica</value>
</data>
<data name="KillGpuApps" xml:space="preserve">
<value>Arrestta tutte le app che usano la GPU passando ad Eco</value>
<value>Arresta tutte le app che usano la GPU passando ad Eco</value>
</data>
<data name="LaptopBacklight" xml:space="preserve">
<value>Retroilluminazione Laptop</value>
@@ -348,11 +417,17 @@ Sei sicuro di voler continuare?</value>
<value>Lid</value>
</data>
<data name="Lightbar" xml:space="preserve">
<value>Barra Luce</value>
<value>Barra Luminosa</value>
</data>
<data name="Lighting" xml:space="preserve">
<value>Illuminazione</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>
<data name="Low" xml:space="preserve">
<value>Basso</value>
</data>
<data name="MatrixAudio" xml:space="preserve">
<value>Visualizzatore Audio</value>
</data>
@@ -366,7 +441,7 @@ Sei sicuro di voler continuare?</value>
<value>Orologio</value>
</data>
<data name="MatrixDim" xml:space="preserve">
<value>Fioco</value>
<value>Tenue</value>
</data>
<data name="MatrixLogo" xml:space="preserve">
<value>Logo ROG</value>
@@ -381,34 +456,67 @@ Sei sicuro di voler continuare?</value>
<value>Immagine</value>
</data>
<data name="MaxRefreshTooltip" xml:space="preserve">
<value>Massimo refresh rate per latenza minore</value>
<value>Massimo refresh rate per latenza ridotta</value>
</data>
<data name="MinRefreshTooltip" xml:space="preserve">
<value>60Hz refresh rate per rispamiare batteria</value>
<value>60Hz refresh rate per risparmiare batteria</value>
</data>
<data name="Minute" xml:space="preserve">
<value>Minuto</value>
</data>
<data name="Minutes" xml:space="preserve">
<value>Minuti</value>
</data>
<data name="MouseAngleSnapping" xml:space="preserve">
<value>Angle Snapping</value>
</data>
<data name="MouseAutoPowerOff" xml:space="preserve">
<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>Avviso Batteria Mouse in Esaurimento</value>
</data>
<data name="MousePerformance" xml:space="preserve">
<value>Prestazioni</value>
</data>
<data name="MouseSynchronize" xml:space="preserve">
<value>Sincronizza con Mouse</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>Multizona</value>
</data>
<data name="MuteMic" xml:space="preserve">
<value>Muta microfono</value>
<value>Silenzia microfono</value>
</data>
<data name="Never" xml:space="preserve">
<value>Mai</value>
</data>
<data name="NewUpdates" xml:space="preserve">
<value>Nuovi aggiornamenti</value>
</data>
<data name="NoNewUpdates" xml:space="preserve">
<value>Non ci sono nuovi aggiornamenti</value>
<value>Sistema aggiornato</value>
</data>
<data name="NotConnected" xml:space="preserve">
<value>Non Connesso</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>Apri G-Helper</value>
</data>
<data name="Optimized" xml:space="preserve">
<value>Ottimizzato</value>
<value>Ottimizzata</value>
</data>
<data name="OptimizedGPUTooltip" xml:space="preserve">
<value>Passa ad Eco quando non in carica e a Standard quando in carica</value>
<value>Passa ad Eco se alimentato a batteria e a Standard quando in carica</value>
</data>
<data name="OptimizedUSBC" xml:space="preserve">
<value>Lascia la GPU disabilitata sulla porta USB-C in modalità Ottimizzata</value>
<value>Disabilita GPU durante ricarica tramite USB-C in modalità Ottimizzata</value>
</data>
<data name="Other" xml:space="preserve">
<value>Altro</value>
@@ -417,7 +525,10 @@ Sei sicuro di voler continuare?</value>
<value>Overdrive</value>
</data>
<data name="PerformanceMode" xml:space="preserve">
<value>Modalità</value>
<value>Profilo</value>
</data>
<data name="Peripherals" xml:space="preserve">
<value>Periferiche</value>
</data>
<data name="PictureGif" xml:space="preserve">
<value>Immagine / Gif</value>
@@ -425,20 +536,26 @@ Sei sicuro di voler continuare?</value>
<data name="PlayPause" xml:space="preserve">
<value>Riproduci / Pausa</value>
</data>
<data name="PollingRate" xml:space="preserve">
<value>Polling Rate</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Limiti d'Alimentazione</value>
<value>Limiti di Potenza</value>
</data>
<data name="PPTExperimental" xml:space="preserve">
<value>Limiti d'Alimentazione sono una funzione sperimentale. Usare con cautela e a proprio rischio!</value>
<value>I Limiti di Potenza sono una funzione sperimentale. Usare con cautela e a proprio rischio!</value>
</data>
<data name="PrintScreen" xml:space="preserve">
<value>PrintScreen</value>
</data>
<data name="Profile" xml:space="preserve">
<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 prevenendo 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>
@@ -446,6 +563,12 @@ Sei sicuro di voler continuare?</value>
<data name="RunOnStartup" xml:space="preserve">
<value>Esegui all'Avvio</value>
</data>
<data name="ScreenPadDown" xml:space="preserve">
<value>Riduci luminosità Screenpad</value>
</data>
<data name="ScreenPadUp" xml:space="preserve">
<value>Aumenta luminosità Screenpad</value>
</data>
<data name="Shutdown" xml:space="preserve">
<value>Spegnimento</value>
</data>
@@ -456,7 +579,7 @@ Sei sicuro di voler continuare?</value>
<value>Sospensione</value>
</data>
<data name="StandardGPUTooltip" xml:space="preserve">
<value>Abilita dGPU per uso standard</value>
<value>Abilita la dGPU solo quando richiesto da app e giochi</value>
</data>
<data name="StandardMode" xml:space="preserve">
<value>Standard</value>
@@ -482,6 +605,9 @@ Sei sicuro di voler continuare?</value>
<data name="ToggleAura" xml:space="preserve">
<value>Alterna Aura</value>
</data>
<data name="ToggleClamshellMode" xml:space="preserve">
<value>Attiva automaticamente la modalità a conchiglia</value>
</data>
<data name="ToggleFnLock" xml:space="preserve">
<value>Alterna Blocco-Fn</value>
</data>
@@ -498,33 +624,33 @@ Sei sicuro di voler continuare?</value>
<value>Spento</value>
</data>
<data name="TurnOffOnBattery" xml:space="preserve">
<value>Spegni quando non in carica</value>
<value>Disattiva quando alimentato a batteria</value>
</data>
<data name="UltimateGPUTooltip" xml:space="preserve">
<value>Dedica la dGPU allo schermo del Laptop, massimizzando gli FPS</value>
<value>Utilizza la dGPU in modalità esclusiva, massimizzando gli FPS</value>
</data>
<data name="UltimateMode" xml:space="preserve">
<value>Estremo</value>
<value>Estrema</value>
</data>
<data name="UndervoltingRisky" xml:space="preserve">
<value>Undervoltare è una funzione sperimentale e rischiosa. Se i valori applicati sono troppo bassi per il tuo dispositivo, può diventare instabile, spegnersi o causare corruzioni. Se vuoi provare - inizia prima con valori ridotti, clicca Applica e verifica se funziona tutto correttamente.</value>
<value>L'undervolting è una funzione sperimentale e rischiosa. Se i valori applicati sono troppo bassi per il tuo dispositivo, esso potrebbe diventare instabile, spegnersi o perdere dati. Se vuoi provare - inizia dapprima con valori contenuti, clicca Applica e verifica se funziona tutto correttamente.</value>
</data>
<data name="Updates" xml:space="preserve">
<value>Updates</value>
<value>Aggiornamenti</value>
</data>
<data name="VersionLabel" xml:space="preserve">
<value>Versione</value>
</data>
<data name="VolumeDown" xml:space="preserve">
<value>Decrem. Volume</value>
<value>Diminuisci Volume</value>
</data>
<data name="VolumeMute" xml:space="preserve">
<value>Muta Volume</value>
<value>Azzera Volume</value>
</data>
<data name="VolumeUp" xml:space="preserve">
<value>Increm. Volume</value>
<value>Aumenta Volume</value>
</data>
<data name="WindowTop" xml:space="preserve">
<value>Tiene l'applicazione sempre in primo piano</value>
<value>Mantieni applicazione sempre in primo piano</value>
</data>
</root>

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
@@ -59,46 +59,46 @@
: 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: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: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: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: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: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: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:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
@@ -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>
@@ -147,6 +150,9 @@
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper가 이미 실행중입니다. 시스템 트레이에서 아이콘을 확인하십시오.</value>
</data>
<data name="Apply" xml:space="preserve">
<value>적용</value>
</data>
<data name="ApplyFanCurve" xml:space="preserve">
<value>사용자 설정 팬 커브 적용</value>
</data>
@@ -159,29 +165,68 @@
<data name="AsusServicesRunning" xml:space="preserve">
<value>실행중인 Asus 서비스</value>
</data>
<data name="AuraBatteryState" xml:space="preserve">
<value>배터리 상태</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>Breathe</value>
<value>숨쉬기</value>
</data>
<data name="AuraClockwise" xml:space="preserve">
<value>시계 방향</value>
</data>
<data name="AuraColorCycle" xml:space="preserve">
<value>Color Cycle</value>
<value>색 순환</value>
</data>
<data name="AuraComet" xml:space="preserve">
<value>혜성</value>
</data>
<data name="AuraCounterClockwise" xml:space="preserve">
<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>랜덤</value>
</data>
<data name="AuraReact" xml:space="preserve">
<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>
</data>
<data name="AutoMode" xml:space="preserve">
<value>자동</value>
@@ -190,25 +235,34 @@
<value>배터리 사용 중에만 60Hz 설정</value>
</data>
<data name="Awake" xml:space="preserve">
<value>Awake</value>
<value>절전 모드 해제</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>배터리 사용 중 백라이트 자동 꺼짐</value>
</data>
<data name="BacklightTimeoutPlugged" 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>배터리 수명</value>
</data>
<data name="BatteryLimitFull" xml:space="preserve">
<value>One time charge to 100%</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="BootSound" xml:space="preserve">
<value>Boot Sound</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>밝기</value>
@@ -219,6 +273,12 @@
<data name="BrightnessUp" xml:space="preserve">
<value>밝기 증가</value>
</data>
<data name="Calibrate" xml:space="preserve">
<value>Calibrate</value>
</data>
<data name="Charging" xml:space="preserve">
<value>충전 중</value>
</data>
<data name="Color" xml:space="preserve">
<value>색상</value>
</data>
@@ -228,6 +288,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>
@@ -238,7 +301,7 @@
<value>방전 중</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>업데이트 다운로드</value>
<value>다운로드</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>드라이버와 소프트웨어</value>
@@ -249,6 +312,17 @@
<data name="EcoMode" xml:space="preserve">
<value>Eco</value>
</data>
<data name="EnableOptimusText" xml:space="preserve">
<value>NVIDIA 디스플레이 모드가 Optimus로 설정되어 있지 않을 때 Eco 모드로 전환하여 dGPU를 비활성화하면 다시 시작하기 전까지 밝기 조절 문제가 생길 수 있습니다.
계속하시겠습니까?</value>
</data>
<data name="EnableOptimusTitle" xml:space="preserve">
<value>NVIDIA 디스플레이 모드가 Optimus로 설정되어 있지 않습니다.</value>
</data>
<data name="EnergySettings" xml:space="preserve">
<value>Energy Settings</value>
</data>
<data name="Extra" xml:space="preserve">
<value>추가 설정</value>
</data>
@@ -277,7 +351,7 @@
<value>팬 속도/전력</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<value>팬: </value>
<value>팬</value>
</data>
<data name="FansPower" xml:space="preserve">
<value>팬 + 전력</value>
@@ -315,15 +389,18 @@
<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>높게</value>
</data>
<data name="KeyBindings" xml:space="preserve">
<value>키 설정</value>
</data>
<data name="Keyboard" xml:space="preserve">
<value>키보드</value>
</data>
<data name="KeyboardAuto" xml:space="preserve">
<value>배터리 사용 중에만 백라이트 밝기 낮추기</value>
</data>
<data name="KillGpuApps" xml:space="preserve">
<value>Eco 모드로 전환 시 GPU를 사용하는 모든 앱 중지</value>
</data>
@@ -342,9 +419,15 @@
<data name="Lightbar" xml:space="preserve">
<value>라이트바</value>
</data>
<data name="Lighting" xml:space="preserve">
<value>조명</value>
</data>
<data name="Logo" xml:space="preserve">
<value>로고</value>
</data>
<data name="Low" xml:space="preserve">
<value>낮게</value>
</data>
<data name="MatrixAudio" xml:space="preserve">
<value>오디오 비주얼라이저</value>
</data>
@@ -378,12 +461,51 @@
<data name="MinRefreshTooltip" xml:space="preserve">
<value>60Hz 주사율 설정</value>
</data>
<data name="Minute" xml:space="preserve">
<value>분 후</value>
</data>
<data name="Minutes" xml:space="preserve">
<value>분 후</value>
</data>
<data name="MouseAngleSnapping" xml:space="preserve">
<value>직선 보정</value>
</data>
<data name="MouseAutoPowerOff" xml:space="preserve">
<value>자동 전원 꺼짐</value>
</data>
<data name="MouseButtonResponse" xml:space="preserve">
<value>버튼 응답</value>
</data>
<data name="MouseLiftOffDistance" xml:space="preserve">
<value>들어올림 거리</value>
</data>
<data name="MouseLowBatteryWarning" xml:space="preserve">
<value>배터리 부족 경고 알림</value>
</data>
<data name="MousePerformance" xml:space="preserve">
<value>성능</value>
</data>
<data name="MouseSynchronize" xml:space="preserve">
<value>마우스와 동기화</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>멀티존</value>
</data>
<data name="MuteMic" xml:space="preserve">
<value>마이크 음소거</value>
</data>
<data name="Never" xml:space="preserve">
<value>사용 안함</value>
</data>
<data name="NewUpdates" xml:space="preserve">
<value>새 업데이트</value>
</data>
<data name="NoNewUpdates" xml:space="preserve">
<value>새 업데이트 없음</value>
</data>
<data name="NotConnected" xml:space="preserve">
<value>연결되지 않음</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>G-Helper 열기</value>
</data>
@@ -405,21 +527,30 @@
<data name="PerformanceMode" xml:space="preserve">
<value>성능 모드</value>
</data>
<data name="Peripherals" xml:space="preserve">
<value>주변 장치</value>
</data>
<data name="PictureGif" xml:space="preserve">
<value>사진 / Gif</value>
</data>
<data name="PlayPause" xml:space="preserve">
<value>재생 / 정지</value>
</data>
<data name="PollingRate" xml:space="preserve">
<value>폴링레이트</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>전력 제한</value>
</data>
<data name="PPTExperimental" xml:space="preserve">
<value>전력 제한 은 실험적인 기능입니다. 주의하여 사용하세요!</value>
<value>전력 제한은 실험적인 기능입니다. 주의하여 사용하세요!</value>
</data>
<data name="PrintScreen" xml:space="preserve">
<value>PrintScreen</value>
</data>
<data name="Profile" xml:space="preserve">
<value>프로필</value>
</data>
<data name="Quit" xml:space="preserve">
<value>종료</value>
</data>
@@ -432,14 +563,20 @@
<data name="RunOnStartup" xml:space="preserve">
<value>시스템 시작 시 실행</value>
</data>
<data name="ScreenPadDown" xml:space="preserve">
<value>Screenpad 밝기 감소</value>
</data>
<data name="ScreenPadUp" xml:space="preserve">
<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>
@@ -459,20 +596,26 @@
<data name="Stop" xml:space="preserve">
<value>중지</value>
</data>
<data name="StopGPUApps" xml:space="preserve">
<value>GPU를 사용하는 앱 중지</value>
</data>
<data name="StoppingServices" xml:space="preserve">
<value>서비스 중지 중</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<value>Aura 토글 키</value>
<value>Aura 전환 키</value>
</data>
<data name="ToggleClamshellMode" xml:space="preserve">
<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>
@@ -489,6 +632,9 @@
<data name="UltimateMode" xml:space="preserve">
<value>Ultimate</value>
</data>
<data name="UndervoltingRisky" xml:space="preserve">
<value>언더볼팅은 실험적이며 위험한 기능입니다. 적용 값이 너무 낮은 경우 시스템이 불안정해지고, 강제 종료되거나 데이터 손상을 유발할 수 있습니다. 낮은 값부터 적용하여 잘 작동하는지 확인해 보십시오.</value>
</data>
<data name="Updates" xml:space="preserve">
<value>업데이트</value>
</data>

View File

@@ -0,0 +1,656 @@
<?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>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>
<data name="AlertDGPU" xml:space="preserve">
<value>Panašu, kad jūsų GPU yra intensyviai naudojamas. Išjungti jį?</value>
</data>
<data name="AlertDGPUTitle" xml:space="preserve">
<value>Ekonomiškas režimas</value>
</data>
<data name="AlertUltimateOff" xml:space="preserve">
<value>Maksimalaus režimo išjungimas reikalauja paleidimo iš naujo</value>
</data>
<data name="AlertUltimateOn" xml:space="preserve">
<value>Maksimalus režimas reikalauja paleidimo iš naujo</value>
</data>
<data name="AlertUltimateTitle" xml:space="preserve">
<value>Paleisti iš naujo dabar?</value>
</data>
<data name="AnimationSpeed" xml:space="preserve">
<value>Animacijos greitis</value>
</data>
<data name="AnimeMatrix" xml:space="preserve">
<value>Anime matrica</value>
</data>
<data name="AppAlreadyRunning" xml:space="preserve">
<value>Programėlė jau paleista</value>
</data>
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper jau paleistas. Patikrinkite, ar sistemos juostelėje nėra piktogramos.</value>
</data>
<data name="Apply" xml:space="preserve">
<value>Taikyti</value>
</data>
<data name="ApplyFanCurve" xml:space="preserve">
<value>Taikyti tinkintą aušintuvo kreivę</value>
</data>
<data name="ApplyPowerLimits" xml:space="preserve">
<value>Taikyti galios ribas</value>
</data>
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>Automatiškai derinti Windows energijos režimus</value>
</data>
<data name="AsusServicesRunning" xml:space="preserve">
<value>Veikiančios Asus tarnybos</value>
</data>
<data name="AuraBatteryState" xml:space="preserve">
<value>Būsena</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>Kvėpavimas</value>
</data>
<data name="AuraClockwise" xml:space="preserve">
<value>Pagal laikrodžio rodyklę</value>
</data>
<data name="AuraColorCycle" xml:space="preserve">
<value>Spalvų ciklas</value>
</data>
<data name="AuraComet" xml:space="preserve">
<value>Comet</value>
</data>
<data name="AuraCounterClockwise" xml:space="preserve">
<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>
<data name="AuraRainbow" xml:space="preserve">
<value>Vaivorykštė</value>
</data>
<data name="AuraRandomColor" xml:space="preserve">
<value>Atsitiktinė</value>
</data>
<data name="AuraReact" xml:space="preserve">
<value>React</value>
</data>
<data name="AuraSlow" xml:space="preserve">
<value>Lėtas</value>
</data>
<data name="AuraStatic" xml:space="preserve">
<value>Statinis</value>
</data>
<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>
<data name="AutoMode" xml:space="preserve">
<value>Automatinis</value>
</data>
<data name="AutoRefreshTooltip" xml:space="preserve">
<value>Nustato 60Hz, kad taupytų energiją, ir atgal, kai įjungtas į lizdą</value>
</data>
<data name="Awake" xml:space="preserve">
<value>Pabudęs</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>Laiko riba su lizdu / akumuliatoriumi (0 ĮJUNGTA)</value>
</data>
<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>
<data name="BatteryHealth" xml:space="preserve">
<value>Sveikata</value>
</data>
<data name="BatteryLimitFull" xml:space="preserve">
<value>Vienkartinė įkrova iki 100%</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>BIOS ir tvarkyklių naujinimai</value>
</data>
<data name="Boot" xml:space="preserve">
<value>Paleidimas</value>
</data>
<data name="BootSound" xml:space="preserve">
<value>Paleidimo garsas</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>Ryškumas</value>
</data>
<data name="BrightnessDown" xml:space="preserve">
<value>Ryškumo mažinimas</value>
</data>
<data name="BrightnessUp" xml:space="preserve">
<value>Ryškumo didinimas</value>
</data>
<data name="Calibrate" xml:space="preserve">
<value>Kalibruoti</value>
</data>
<data name="Charging" xml:space="preserve">
<value>Įkrovimas</value>
</data>
<data name="Color" xml:space="preserve">
<value>Spalva</value>
</data>
<data name="CPUBoost" xml:space="preserve">
<value>CPU spartinimas</value>
</data>
<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>
<data name="DisableOverdrive" xml:space="preserve">
<value>Išjungti ekrano pikselių spartinimą</value>
</data>
<data name="Discharging" xml:space="preserve">
<value>Iškrovimas</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<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 taupytų energiją</value>
</data>
<data name="EcoMode" xml:space="preserve">
<value>Ekonomiškas</value>
</data>
<data name="EnableOptimusText" xml:space="preserve">
<value>Jei ekrano režimas NVIDIA valdymo skyde yra nenustatytas į Optimus, kai dGPU yra išjungtas perjungus į ekonominį režimą, gali kilti problemų su ryškumo valdymu iki kito paleidimo iš naujo.
Vis tiek norite tęsti?</value>
</data>
<data name="EnableOptimusTitle" xml:space="preserve">
<value>NVIDIA ekrano režimas nenustatytas į Optimus</value>
</data>
<data name="EnergySettings" xml:space="preserve">
<value>Energijos nustatymai</value>
</data>
<data name="Extra" xml:space="preserve">
<value>Išplėstiniai</value>
</data>
<data name="ExtraSettings" xml:space="preserve">
<value>Išplėstiniai nustatymai</value>
</data>
<data name="FactoryDefaults" xml:space="preserve">
<value>Numatytieji</value>
</data>
<data name="FanCurves" xml:space="preserve">
<value>Aušintuvų kreivės</value>
</data>
<data name="FanProfileCPU" xml:space="preserve">
<value>CPU aušintuvo profilis</value>
</data>
<data name="FanProfileGPU" xml:space="preserve">
<value>GPU aušintuvo profilis</value>
</data>
<data name="FanProfileMid" xml:space="preserve">
<value>Vidurinio aušintuvo profilis</value>
</data>
<data name="FanProfiles" xml:space="preserve">
<value>Aušintuvų profiliai</value>
</data>
<data name="FansAndPower" xml:space="preserve">
<value>Aušintuvai ir galia</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<value>Aušintuvas</value>
</data>
<data name="FansPower" xml:space="preserve">
<value>Aušintuvai + galia</value>
</data>
<data name="FnLock" xml:space="preserve">
<value>Apdoroti Fn+F sparčiuosius klavišus be Fn</value>
</data>
<data name="GPUBoost" xml:space="preserve">
<value>Dinaminis spartinimas</value>
</data>
<data name="GPUChanging" xml:space="preserve">
<value>Keičiamas</value>
</data>
<data name="GPUCoreClockOffset" xml:space="preserve">
<value>Branduolių taktų poslinkis</value>
</data>
<data name="GPUMemoryClockOffset" xml:space="preserve">
<value>Atminties taktų poslinkis</value>
</data>
<data name="GPUMode" xml:space="preserve">
<value>GPU režimas</value>
</data>
<data name="GPUModeEco" xml:space="preserve">
<value>Tik iGPU</value>
</data>
<data name="GPUModeStandard" xml:space="preserve">
<value>iGPU + dGPU</value>
</data>
<data name="GPUModeUltimate" xml:space="preserve">
<value>Tik dGPU</value>
</data>
<data name="GPUSettings" xml:space="preserve">
<value>GPU nustatymai</value>
</data>
<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>Aukštas</value>
</data>
<data name="KeyBindings" xml:space="preserve">
<value>Klavišų priskyrimas</value>
</data>
<data name="Keyboard" xml:space="preserve">
<value>Klaviatūra</value>
</data>
<data name="KillGpuApps" xml:space="preserve">
<value>Sustabdyti visas GPU naudojančias programėles, kai perjungiama į ekonomišką režimą</value>
</data>
<data name="LaptopBacklight" xml:space="preserve">
<value>Apšvietimas</value>
</data>
<data name="LaptopKeyboard" xml:space="preserve">
<value>Klaviatūra</value>
</data>
<data name="LaptopScreen" xml:space="preserve">
<value>Ekranas</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Dangtis</value>
</data>
<data name="Lightbar" xml:space="preserve">
<value>Šviesos juosta</value>
</data>
<data name="Lighting" xml:space="preserve">
<value>Apšvietimas</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logotipas</value>
</data>
<data name="Low" xml:space="preserve">
<value>Žemas</value>
</data>
<data name="MatrixAudio" xml:space="preserve">
<value>Garso vizualizatorius</value>
</data>
<data name="MatrixBanner" xml:space="preserve">
<value>Dvejetainė vėliava</value>
</data>
<data name="MatrixBright" xml:space="preserve">
<value>Šviesi</value>
</data>
<data name="MatrixClock" xml:space="preserve">
<value>Laikrodis</value>
</data>
<data name="MatrixDim" xml:space="preserve">
<value>Temdymas</value>
</data>
<data name="MatrixLogo" xml:space="preserve">
<value>Rog logotipas</value>
</data>
<data name="MatrixMedium" xml:space="preserve">
<value>Vidutinis</value>
</data>
<data name="MatrixOff" xml:space="preserve">
<value>Išjungta</value>
</data>
<data name="MatrixPicture" xml:space="preserve">
<value>Paveikslėlis</value>
</data>
<data name="MaxRefreshTooltip" xml:space="preserve">
<value>Maksimalus kadrų dažnis už mažesnę delsą</value>
</data>
<data name="MinRefreshTooltip" xml:space="preserve">
<value>60Hz kadrų dažnis, kad taupytumėte energiją</value>
</data>
<data name="Minute" xml:space="preserve">
<value>min.</value>
</data>
<data name="Minutes" xml:space="preserve">
<value>min.</value>
</data>
<data name="MouseAngleSnapping" xml:space="preserve">
<value>Angle Snapping</value>
</data>
<data name="MouseAutoPowerOff" xml:space="preserve">
<value>Automatiškai išjungti po</value>
</data>
<data name="MouseButtonResponse" xml:space="preserve">
<value>Klavišo atsakas</value>
</data>
<data name="MouseLiftOffDistance" xml:space="preserve">
<value>Pakilimo atstumas</value>
</data>
<data name="MouseLowBatteryWarning" xml:space="preserve">
<value>Senkančio akumuliatoriaus įspėjimas</value>
</data>
<data name="MousePerformance" xml:space="preserve">
<value>Našumas</value>
</data>
<data name="MouseSynchronize" xml:space="preserve">
<value>Sinchronizuoti su pele</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>Daugiazonis</value>
</data>
<data name="MuteMic" xml:space="preserve">
<value>Mikrofono nutildymas</value>
</data>
<data name="Never" xml:space="preserve">
<value>Niekada</value>
</data>
<data name="NewUpdates" xml:space="preserve">
<value>Naujinimai</value>
</data>
<data name="NoNewUpdates" xml:space="preserve">
<value>Nėra naujinimų</value>
</data>
<data name="NotConnected" xml:space="preserve">
<value>Neprijungta</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>Atidaryti G-Helper langą</value>
</data>
<data name="Optimized" xml:space="preserve">
<value>Optimizuotas</value>
</data>
<data name="OptimizedGPUTooltip" xml:space="preserve">
<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>
</data>
<data name="Other" xml:space="preserve">
<value>Kita</value>
</data>
<data name="Overdrive" xml:space="preserve">
<value>Pikselių spartinimas</value>
</data>
<data name="PerformanceMode" xml:space="preserve">
<value>Režimas</value>
</data>
<data name="Peripherals" xml:space="preserve">
<value>Išoriniai įrenginiai</value>
</data>
<data name="PictureGif" xml:space="preserve">
<value>Paveikslėlis / GIF</value>
</data>
<data name="PlayPause" xml:space="preserve">
<value>Paleisti / Pristabdyti</value>
</data>
<data name="PollingRate" xml:space="preserve">
<value>Iškvietų dažnis</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Galios ribos</value>
</data>
<data name="PPTExperimental" xml:space="preserve">
<value>Galios ribos yra eksperimentinė funkcija. Naudokitės atsargiai!</value>
</data>
<data name="PrintScreen" xml:space="preserve">
<value>Ekrano kopija</value>
</data>
<data name="Profile" xml:space="preserve">
<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 į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>
</data>
<data name="RunOnStartup" xml:space="preserve">
<value>Paleisti įjungus sistemą</value>
</data>
<data name="ScreenPadDown" xml:space="preserve">
<value>Ekrano skydelio ryškumo mažinimas</value>
</data>
<data name="ScreenPadUp" xml:space="preserve">
<value>Ekrano skydelio ryškumo didinimas</value>
</data>
<data name="Shutdown" xml:space="preserve">
<value>Išjungimas</value>
</data>
<data name="Silent" xml:space="preserve">
<value>Tylus</value>
</data>
<data name="Sleep" xml:space="preserve">
<value>Miegas</value>
</data>
<data name="StandardGPUTooltip" xml:space="preserve">
<value>Įjungia dGPU įprastam naudojimui</value>
</data>
<data name="StandardMode" xml:space="preserve">
<value>Įprastas</value>
</data>
<data name="Start" xml:space="preserve">
<value>Paleisti</value>
</data>
<data name="StartingServices" xml:space="preserve">
<value>Paleidžiamos tarnybos</value>
</data>
<data name="StartupError" xml:space="preserve">
<value>Paleidimo klaida</value>
</data>
<data name="Stop" xml:space="preserve">
<value>Stabdyti</value>
</data>
<data name="StopGPUApps" xml:space="preserve">
<value>Stabdyti GPU programėles</value>
</data>
<data name="StoppingServices" xml:space="preserve">
<value>Stabdomos tarnybos</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<value>Perjungti Aura</value>
</data>
<data name="ToggleClamshellMode" xml:space="preserve">
<value>Automatiškai perjungti Clamshell režimą</value>
</data>
<data name="ToggleFnLock" xml:space="preserve">
<value>Perjungti Fn-Lock</value>
</data>
<data name="ToggleMiniled" xml:space="preserve">
<value>Perjungti Miniled (jei palaikoma)</value>
</data>
<data name="ToggleScreen" xml:space="preserve">
<value>Perjungti ekraną</value>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>
<data name="TurnedOff" xml:space="preserve">
<value>Išjungta</value>
</data>
<data name="TurnOffOnBattery" xml:space="preserve">
<value>Išjungti naudojant akumuliatorių</value>
</data>
<data name="UltimateGPUTooltip" xml:space="preserve">
<value>Nukreipia ekraną į dGPU, kad maksimizuotų kadrų dažnį</value>
</data>
<data name="UltimateMode" xml:space="preserve">
<value>Maksimalus</value>
</data>
<data name="UndervoltingRisky" xml:space="preserve">
<value>Įtampos mažinimas yra eksperimentinė ir pavojinga funkcija. Jei pritaikytos reikšmės yra per mažos jūsų aparatinei įrangai, ji gali tapti nestabili, išsijungti arba pažeisti duomenų vientisumą. Jei norite pabandyti, iš pirmo pradėkite nuo mažų reikšmių, spustelėkite „Taikyti“ ir išbandykite, kas jums tinka.</value>
</data>
<data name="Updates" xml:space="preserve">
<value>Naujinimai</value>
</data>
<data name="VersionLabel" xml:space="preserve">
<value>Versija</value>
</data>
<data name="VolumeDown" xml:space="preserve">
<value>Garsumo mažinimas</value>
</data>
<data name="VolumeMute" xml:space="preserve">
<value>Garsumo nutildymas</value>
</data>
<data name="VolumeUp" xml:space="preserve">
<value>Garsumo didinimas</value>
</data>
<data name="WindowTop" xml:space="preserve">
<value>Visada rodyti programėlės langą viršuje</value>
</data>
</root>

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
@@ -59,46 +59,46 @@
: 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: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: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: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: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: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: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:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
@@ -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>
@@ -147,6 +150,9 @@
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper jest już uruchomiony. Sprawdź obszar powiadomień na pasku zadań.</value>
</data>
<data name="Apply" xml:space="preserve">
<value>Zastosuj</value>
</data>
<data name="ApplyFanCurve" xml:space="preserve">
<value>Zastosuj krzywe</value>
</data>
@@ -154,23 +160,47 @@
<value>Zastosuj limity</value>
</data>
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>Automatycznie dostosuj Plan Zasilania Windows</value>
<value>Dostosuj systemowy Tryb Zasilania</value>
</data>
<data name="AsusServicesRunning" xml:space="preserve">
<value>Uruchomione usługi Asus</value>
</data>
<data name="AuraBatteryState" xml:space="preserve">
<value>Stan baterii</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>Oddychanie</value>
</data>
<data name="AuraClockwise" xml:space="preserve">
<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>Kometa</value>
</data>
<data name="AuraCounterClockwise" xml:space="preserve">
<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>
<data name="AuraRainbow" xml:space="preserve">
<value>Tęcza</value>
</data>
<data name="AuraRandomColor" xml:space="preserve">
<value>Losowo</value>
</data>
<data name="AuraReact" xml:space="preserve">
<value>Tryb reaktywny</value>
</data>
<data name="AuraSlow" xml:space="preserve">
<value>Powolna</value>
</data>
@@ -180,6 +210,24 @@
<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>
<data name="AutoMode" xml:space="preserve">
<value>Auto</value>
</data>
@@ -187,35 +235,62 @@
<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>Wyłączenie podświetlenia na baterii</value>
</data>
<data name="BacklightTimeoutPlugged" xml:space="preserve">
<value>Wyłączenie podświetlenia po podłączeniu (0 - nigdy)</value>
<value>Limit czasu podłączonego / na baterii (0 - Włączony)</value>
</data>
<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>
<data name="BatteryHealth" xml:space="preserve">
<value>Stan baterii</value>
</data>
<data name="BatteryLimitFull" xml:space="preserve">
<value>Jednorazowo naładuj do 100%</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>Aktualizacje BIOS i sterowników</value>
</data>
<data name="Boot" xml:space="preserve">
<value>Podczas uruchamiania</value>
<value>Uruchamianie</value>
</data>
<data name="BootSound" xml:space="preserve">
<value>Dźwięk podczas rozruchu</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>Jasność</value>
</data>
<data name="BrightnessDown" xml:space="preserve">
<value>Zmniejsz jasność</value>
</data>
<data name="BrightnessUp" xml:space="preserve">
<value>Zwiększ jasność</value>
</data>
<data name="Calibrate" xml:space="preserve">
<value>Kalibruj</value>
</data>
<data name="Charging" xml:space="preserve">
<value>Ładowanie</value>
</data>
<data name="Color" xml:space="preserve">
<value>Kolor</value>
</data>
<data name="CPUBoost" xml:space="preserve">
<value>CPU Boost</value>
<value>Zwiększenie taktowania CPU</value>
</data>
<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>
@@ -226,7 +301,10 @@
<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>
</data>
<data name="EcoGPUTooltip" xml:space="preserve">
<value>Wyłącza dedykowane GPU aby oszczędzić baterię</value>
@@ -234,6 +312,17 @@
<data name="EcoMode" xml:space="preserve">
<value>Eco</value>
</data>
<data name="EnableOptimusText" xml:space="preserve">
<value>Wyłączenie dGPU przez przejście do trybu Eco, podczas gdy tryb wyświetlania w Panelu sterowania NVIDIA nie jest ustawiony na Optimus, może powodować problemy z regulacją jasności do czasu następnego restartu systemu.
Nadal chcesz kontynuować?</value>
</data>
<data name="EnableOptimusTitle" xml:space="preserve">
<value>Tryb wyświetlania NVIDIA nie jest ustawiony na Optimus</value>
</data>
<data name="EnergySettings" xml:space="preserve">
<value>Ustawienia zasilania</value>
</data>
<data name="Extra" xml:space="preserve">
<value>Ustawienia</value>
</data>
@@ -262,11 +351,14 @@
<value>Wentylatory i moc</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<value>Obroty: </value>
<value>Went</value>
</data>
<data name="FansPower" xml:space="preserve">
<value>Dostosuj</value>
</data>
<data name="FnLock" xml:space="preserve">
<value>Używaj klawiszy funkcyjnych bez przycisku Fn</value>
</data>
<data name="GPUBoost" xml:space="preserve">
<value>Dynamic Boost</value>
</data>
@@ -297,14 +389,20 @@
<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>Wysoka</value>
</data>
<data name="KeyBindings" xml:space="preserve">
<value>Ustawienia klawiszy skrótów</value>
</data>
<data name="Keyboard" xml:space="preserve">
<value>Klawiatura</value>
</data>
<data name="KeyboardAuto" xml:space="preserve">
<value>Automatycznie zmniejsz jasność w czasie pracy na baterii</value>
<data name="KillGpuApps" xml:space="preserve">
<value>Zatrzymaj wszystkie aplikacje używające GPU podczas przełączania na Eco</value>
</data>
<data name="LaptopBacklight" xml:space="preserve">
<value>Podświetlenie</value>
@@ -321,9 +419,15 @@
<data name="Lightbar" xml:space="preserve">
<value>Lightbar</value>
</data>
<data name="Lighting" xml:space="preserve">
<value>Oświetlenie</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>
<data name="Low" xml:space="preserve">
<value>Niska</value>
</data>
<data name="MatrixAudio" xml:space="preserve">
<value>Wizualizer muzyki</value>
</data>
@@ -334,7 +438,7 @@
<value>Jasny</value>
</data>
<data name="MatrixClock" xml:space="preserve">
<value>Clock</value>
<value>Zegar</value>
</data>
<data name="MatrixDim" xml:space="preserve">
<value>Ciemny</value>
@@ -357,12 +461,51 @@
<data name="MinRefreshTooltip" xml:space="preserve">
<value>Częstotliwość odświeżania 60 Hz dla oszczędzania baterii</value>
</data>
<data name="Minute" xml:space="preserve">
<value>min.</value>
</data>
<data name="Minutes" xml:space="preserve">
<value>min.</value>
</data>
<data name="MouseAngleSnapping" xml:space="preserve">
<value>Korekcja kąta ruchu</value>
</data>
<data name="MouseAutoPowerOff" xml:space="preserve">
<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>Wysokość reakcji sensora</value>
</data>
<data name="MouseLowBatteryWarning" xml:space="preserve">
<value>Ostrzeżenie o niskim poziomie baterii</value>
</data>
<data name="MousePerformance" xml:space="preserve">
<value>Wydajność</value>
</data>
<data name="MouseSynchronize" xml:space="preserve">
<value>Synchronizuj z myszką</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>Multizone</value>
</data>
<data name="MuteMic" xml:space="preserve">
<value>Wyciszenie mikrofonu</value>
</data>
<data name="Never" xml:space="preserve">
<value>Nigdy</value>
</data>
<data name="NewUpdates" xml:space="preserve">
<value>Nowe aktualizacje</value>
</data>
<data name="NoNewUpdates" xml:space="preserve">
<value>Brak aktualizacji</value>
</data>
<data name="NotConnected" xml:space="preserve">
<value>Nie połączono</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>Otwórz okno G-Helper</value>
</data>
@@ -384,12 +527,18 @@
<data name="PerformanceMode" xml:space="preserve">
<value>Tryb zasilania</value>
</data>
<data name="Peripherals" xml:space="preserve">
<value>Urządzenia peryferyjne</value>
</data>
<data name="PictureGif" xml:space="preserve">
<value>Obraz / GIF</value>
</data>
<data name="PlayPause" xml:space="preserve">
<value>Odtwórz / Pauza</value>
</data>
<data name="PollingRate" xml:space="preserve">
<value>Częstotliwość raportowania</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Limit mocy</value>
</data>
@@ -399,17 +548,26 @@
<data name="PrintScreen" xml:space="preserve">
<value>Zrzut ekranu</value>
</data>
<data name="Profile" xml:space="preserve">
<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>
</data>
<data name="ScreenPadUp" xml:space="preserve">
<value>Zwiększ jasność ScreenPad</value>
</data>
<data name="Shutdown" xml:space="preserve">
<value>Zamknij</value>
@@ -421,17 +579,38 @@
<value>Uśpij</value>
</data>
<data name="StandardGPUTooltip" xml:space="preserve">
<value>Enables dGPU for standard use</value>
<value>Włącza dGPU dla standardowego użycia</value>
</data>
<data name="StandardMode" xml:space="preserve">
<value>Standard</value>
</data>
<data name="Start" xml:space="preserve">
<value>Start</value>
</data>
<data name="StartingServices" xml:space="preserve">
<value>Uruchamianie usług</value>
</data>
<data name="StartupError" xml:space="preserve">
<value>Błąd uruchamiania</value>
</data>
<data name="Stop" xml:space="preserve">
<value>Stop</value>
</data>
<data name="StopGPUApps" xml:space="preserve">
<value>Zatrzymaj aplikacje używające GPU</value>
</data>
<data name="StoppingServices" xml:space="preserve">
<value>Zatrzymywanie usług</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<value>Przełącz Aura</value>
</data>
<data name="ToggleClamshellMode" xml:space="preserve">
<value>Automatyczny tryb pracy z zamkniętą pokrywą</value>
</data>
<data name="ToggleFnLock" xml:space="preserve">
<value>Przełącz Fn-Lock</value>
</data>
<data name="ToggleMiniled" xml:space="preserve">
<value>Przełącz MiniLED</value>
</data>
@@ -453,6 +632,12 @@
<data name="UltimateMode" xml:space="preserve">
<value>Ultimate</value>
</data>
<data name="UndervoltingRisky" xml:space="preserve">
<value>Undervolting jest funkcją eksperymentalną i ryzykowną. Jeżeli zastosowane wartości są za niskie dla Twojego urządzenia, może ono działać niestabilnie, wyłączyć się lub uszkodzić dane. Chcąc wypróbować tę funkcję, zacznij od niewielkich wartości, zastosuj je i sprawdź efekt.</value>
</data>
<data name="Updates" xml:space="preserve">
<value>Aktualizacje</value>
</data>
<data name="VersionLabel" xml:space="preserve">
<value>Wersja</value>
</data>

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
@@ -59,46 +59,46 @@
: 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: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: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: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: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: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: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:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
@@ -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>Aceleração</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>
@@ -147,6 +150,9 @@
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper já está em execução. Verifique a barra de sistema</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>
@@ -159,21 +165,42 @@
<data name="AsusServicesRunning" xml:space="preserve">
<value>Serviços da Asus em execução</value>
</data>
<data name="AuraBatteryState" xml:space="preserve">
<value>Battery State</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>Repiração</value>
</data>
<data name="AuraClockwise" xml:space="preserve">
<value>Sentido horário</value>
</data>
<data name="AuraColorCycle" xml:space="preserve">
<value>Ciclo de cores</value>
</data>
<data name="AuraComet" xml:space="preserve">
<value>Comet</value>
</data>
<data name="AuraCounterClockwise" xml:space="preserve">
<value>Sentido anti-horário</value>
</data>
<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>
<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>React</value>
</data>
<data name="AuraSlow" xml:space="preserve">
<value>Lento</value>
</data>
@@ -183,6 +210,24 @@
<data name="AuraStrobe" xml:space="preserve">
<value>Estroboscópio</value>
</data>
<data name="AuraZoneAll" xml:space="preserve">
<value>Tudo</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>Aplicar automaticamente</value>
</data>
<data name="AutoMode" xml:space="preserve">
<value>Automático</value>
</data>
@@ -193,23 +238,47 @@
<value>Acordado</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>Tempo limite da iluminação na bateria (em segundos)</value>
</data>
<data name="BacklightTimeoutPlugged" xml:space="preserve">
<value>Tempo limite da iluminação carregando (0 - sempre ligado)</value>
<value>Tempo limite plugado / na bateria (0 - ligado)</value>
</data>
<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>
<data name="BatteryHealth" xml:space="preserve">
<value>Saúde da bateria</value>
</data>
<data name="BatteryLimitFull" xml:space="preserve">
<value>One time charge to 100%</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>BIOS and Driver Updates</value>
</data>
<data name="Boot" xml:space="preserve">
<value>Ao ligar</value>
</data>
<data name="BootSound" xml:space="preserve">
<value>Som de inicialização</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>Nível do brilho</value>
</data>
<data name="BrightnessDown" xml:space="preserve">
<value>Brightness Down</value>
</data>
<data name="BrightnessUp" xml:space="preserve">
<value>Brightness Up</value>
</data>
<data name="Calibrate" xml:space="preserve">
<value>Calibrate</value>
</data>
<data name="Charging" xml:space="preserve">
<value>Charging</value>
</data>
<data name="Color" xml:space="preserve">
<value>Cor</value>
</data>
@@ -219,6 +288,9 @@
<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>
@@ -229,7 +301,10 @@
<value>Descarregando</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>Baixar a atualização</value>
<value>Baixar</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Drivers and Software</value>
</data>
<data name="EcoGPUTooltip" xml:space="preserve">
<value>Desativar o dGPU para economisar a energía</value>
@@ -237,6 +312,17 @@
<data name="EcoMode" xml:space="preserve">
<value>Econômico</value>
</data>
<data name="EnableOptimusText" xml:space="preserve">
<value>Disabling the dGPU by going into Eco mode while Display Mode in NVIDIA Control Panel is not set to Optimus might cause problems with brightness controls until after the next reboot.
Do you still want to continue?</value>
</data>
<data name="EnableOptimusTitle" xml:space="preserve">
<value>NVIDIA Display Mode is not set to Optimus</value>
</data>
<data name="EnergySettings" xml:space="preserve">
<value>Energy Settings</value>
</data>
<data name="Extra" xml:space="preserve">
<value>Adicional</value>
</data>
@@ -265,7 +351,7 @@
<value>Ventiladores e Energía</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<value>Vent</value>
<value>Fan</value>
</data>
<data name="FansPower" xml:space="preserve">
<value>Ventiladores + Energía</value>
@@ -279,6 +365,12 @@
<data name="GPUChanging" xml:space="preserve">
<value>Carregando</value>
</data>
<data name="GPUCoreClockOffset" xml:space="preserve">
<value>Aumento da frequência básica</value>
</data>
<data name="GPUMemoryClockOffset" xml:space="preserve">
<value>Aumento da frequência da memória</value>
</data>
<data name="GPUMode" xml:space="preserve">
<value>Modo de GPU</value>
</data>
@@ -297,15 +389,18 @@
<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>
<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="KeyboardAuto" xml:space="preserve">
<value>Abaixar a luz de fundo na bateria e voltar quando carregando</value>
</data>
<data name="KeyboardBacklight" xml:space="preserve">
<value>Luz de fundo do teclado</value>
</data>
<data name="KillGpuApps" xml:space="preserve">
<value>Parar todos os aplicativos que usam a GPU ao alternar para o modo Eco</value>
</data>
@@ -321,9 +416,21 @@
<data name="Lid" xml:space="preserve">
<value>Tampa</value>
</data>
<data name="Lightbar" xml:space="preserve">
<value>Lightbar</value>
</data>
<data name="Lighting" xml:space="preserve">
<value>Lighting</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>
<data name="Low" xml:space="preserve">
<value>Low</value>
</data>
<data name="MatrixAudio" xml:space="preserve">
<value>Audio Visualizer</value>
</data>
<data name="MatrixBanner" xml:space="preserve">
<value>Bandeira Binária</value>
</data>
@@ -354,12 +461,51 @@
<data name="MinRefreshTooltip" xml:space="preserve">
<value>Taxa de atualização à 60Hz para economizar bateria</value>
</data>
<data name="Minute" xml:space="preserve">
<value>Minute</value>
</data>
<data name="Minutes" xml:space="preserve">
<value>Minutes</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>
</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>
</data>
<data name="MousePerformance" xml:space="preserve">
<value>Performance</value>
</data>
<data name="MouseSynchronize" xml:space="preserve">
<value>Synchronize with mouse</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>Multizona</value>
</data>
<data name="MuteMic" xml:space="preserve">
<data name="MuteMic" xml:space="preserve">
<value>Desligar microfone</value>
</data>
<data name="Never" xml:space="preserve">
<value>Never</value>
</data>
<data name="NewUpdates" xml:space="preserve">
<value>New updates</value>
</data>
<data name="NoNewUpdates" xml:space="preserve">
<value>No new updates</value>
</data>
<data name="NotConnected" xml:space="preserve">
<value>Not Connected</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>Abrir G-Helper</value>
</data>
@@ -381,12 +527,18 @@
<data name="PerformanceMode" xml:space="preserve">
<value>Modo</value>
</data>
<data name="Peripherals" xml:space="preserve">
<value>Peripherals</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>Limitações de Energia</value>
</data>
@@ -396,27 +548,27 @@
<data name="PrintScreen" xml:space="preserve">
<value>Captura de tela</value>
</data>
<data name="Profile" xml:space="preserve">
<value>Profile</value>
</data>
<data name="Quit" xml:space="preserve">
<value>Sair</value>
</data>
<data name="GPUCoreClockOffset" xml:space="preserve">
<value>Aumento da frequência básica</value>
</data>
<data name="GPUMemoryClockOffset" xml:space="preserve">
<value>Aumento da frequência da memória</value>
</data>
<data name="KeyBindings" xml:space="preserve">
<value>Combinações de teclas</value>
<data name="RestartGPU" xml:space="preserve">
<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>
</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>
</data>
<data name="RunOnStartup" xml:space="preserve">
<value>Executar ao iniciar</value>
</data>
<data name="ScreenPadDown" xml:space="preserve">
<value>Screenpad Brightness Down</value>
</data>
<data name="ScreenPadUp" xml:space="preserve">
<value>Screenpad Brightness Up</value>
</data>
<data name="Shutdown" xml:space="preserve">
<value>Desligar</value>
</data>
@@ -432,24 +584,33 @@
<data name="StandardMode" xml:space="preserve">
<value>Padrão</value>
</data>
<data name="StartupError" xml:space="preserve">
<value>Erro de inicializaçã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>Stop GPU Applications</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>Auto Toggle Clamshell Mode</value>
</data>
<data name="ToggleFnLock" xml:space="preserve">
<value>Toggle Fn-Lock</value>
</data>
<data name="ToggleMiniled" xml:space="preserve">
<value>Alternar Miniled (se suportado) </value>
</data>
@@ -471,6 +632,9 @@
<data name="UltimateMode" xml:space="preserve">
<value>Ultimate</value>
</data>
<data name="UndervoltingRisky" xml:space="preserve">
<value>Undervolting is an experimental and risky feature. If applied values are too low for your hardware, it can become unstable, shut down or cause data corruption. If you want to try - start from small values first, click Apply and test what works for you.</value>
</data>
<data name="Updates" xml:space="preserve">
<value>Atualizações</value>
</data>
@@ -480,11 +644,11 @@
<data name="VolumeDown" xml:space="preserve">
<value>Abaixar o volume</value>
</data>
<data name="VolumeMute" xml:space="preserve">
<value>Mudo</value>
</data>
<data name="VolumeUp" xml:space="preserve">
<value>Aumentar o volume</value>
</data>
<data name="VolumeMute" xml:space="preserve">
<value>Mudo</value>
</data>
<data name="WindowTop" xml:space="preserve">
<value>Manter a janela do aplicativo sempre no topo</value>

View File

@@ -0,0 +1,656 @@
<?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="BatteryLimitFull" xml:space="preserve">
<value>One time charge to 100%</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="BootSound" xml:space="preserve">
<value>Boot Sound</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="Calibrate" xml:space="preserve">
<value>Calibrate</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>

View File

@@ -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>
@@ -162,21 +165,42 @@
<data name="AsusServicesRunning" xml:space="preserve">
<value>Asus Services Running</value>
</data>
<data name="AuraBatteryState" xml:space="preserve">
<value>Battery State</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>Breathe</value>
</data>
<data name="AuraClockwise" xml:space="preserve">
<value>Clockwise</value>
</data>
<data name="AuraColorCycle" xml:space="preserve">
<value>Color Cycle</value>
</data>
<data name="AuraComet" xml:space="preserve">
<value>Comet</value>
</data>
<data name="AuraCounterClockwise" xml:space="preserve">
<value>Counterclockwise</value>
</data>
<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>
<data name="AuraRainbow" xml:space="preserve">
<value>Rainbow</value>
</data>
<data name="AuraRandomColor" xml:space="preserve">
<value>Random</value>
</data>
<data name="AuraReact" xml:space="preserve">
<value>React</value>
</data>
<data name="AuraSlow" xml:space="preserve">
<value>Slow</value>
</data>
@@ -186,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>
@@ -199,23 +238,32 @@
<value>Awake</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>Backlight timeout on battery</value>
</data>
<data name="BacklightTimeoutPlugged" xml:space="preserve">
<value>Backlight timeout when plugged in (0 - always on)</value>
<value>Timeout plugged / on battery (0 - ON)</value>
</data>
<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>
<data name="BatteryHealth" xml:space="preserve">
<value>Battery Health</value>
</data>
<data name="BatteryLimitFull" xml:space="preserve">
<value>One time charge to 100%</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>BIOS and Driver Updates</value>
</data>
<data name="Boot" xml:space="preserve">
<value>Boot</value>
</data>
<data name="BootSound" xml:space="preserve">
<value>Boot Sound</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>Brightness</value>
</data>
@@ -225,6 +273,12 @@
<data name="BrightnessUp" xml:space="preserve">
<value>Brightness Up</value>
</data>
<data name="Calibrate" xml:space="preserve">
<value>Calibrate</value>
</data>
<data name="Charging" xml:space="preserve">
<value>Charging</value>
</data>
<data name="Color" xml:space="preserve">
<value>Color</value>
</data>
@@ -234,6 +288,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>
@@ -244,7 +301,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>
@@ -263,6 +320,9 @@ Do you still want to continue?</value>
<data name="EnableOptimusTitle" xml:space="preserve">
<value>NVIDIA Display Mode is not set to Optimus</value>
</data>
<data name="EnergySettings" xml:space="preserve">
<value>Energy Settings</value>
</data>
<data name="Extra" xml:space="preserve">
<value>Extra</value>
</data>
@@ -291,7 +351,7 @@ Do you still want to continue?</value>
<value>Fans and Power</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<value>Fan: </value>
<value>Fan</value>
</data>
<data name="FansPower" xml:space="preserve">
<value>Fans + Power</value>
@@ -329,15 +389,18 @@ 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>
<data name="KeyBindings" xml:space="preserve">
<value>Key Bindings</value>
</data>
<data name="Keyboard" xml:space="preserve">
<value>Keyboard</value>
</data>
<data name="KeyboardAuto" xml:space="preserve">
<value>Lower backlight brightness on battery and back when plugged</value>
</data>
<data name="KillGpuApps" xml:space="preserve">
<value>Stop all apps using GPU when switching to Eco</value>
</data>
@@ -356,9 +419,15 @@ Do you still want to continue?</value>
<data name="Lightbar" xml:space="preserve">
<value>Lightbar</value>
</data>
<data name="Lighting" xml:space="preserve">
<value>Lighting</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>
<data name="Low" xml:space="preserve">
<value>Low</value>
</data>
<data name="MatrixAudio" xml:space="preserve">
<value>Audio Visualizer</value>
</data>
@@ -392,18 +461,51 @@ Do you still want to continue?</value>
<data name="MinRefreshTooltip" xml:space="preserve">
<value>60Hz refresh rate to save battery</value>
</data>
<data name="Minute" xml:space="preserve">
<value>Minute</value>
</data>
<data name="Minutes" xml:space="preserve">
<value>Minutes</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>
</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>
</data>
<data name="MousePerformance" xml:space="preserve">
<value>Performance</value>
</data>
<data name="MouseSynchronize" xml:space="preserve">
<value>Synchronize with mouse</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>Multizone</value>
</data>
<data name="MuteMic" xml:space="preserve">
<value>Mute Mic</value>
</data>
<data name="Never" xml:space="preserve">
<value>Never</value>
</data>
<data name="NewUpdates" xml:space="preserve">
<value>New updates</value>
</data>
<data name="NoNewUpdates" xml:space="preserve">
<value>No new updates</value>
</data>
<data name="NotConnected" xml:space="preserve">
<value>Not Connected</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>Open G-Helper window</value>
</data>
@@ -425,12 +527,18 @@ Do you still want to continue?</value>
<data name="PerformanceMode" xml:space="preserve">
<value>Mode</value>
</data>
<data name="Peripherals" xml:space="preserve">
<value>Peripherals</value>
</data>
<data name="PictureGif" xml:space="preserve">
<value>Picture / Gif</value>
</data>
<data name="PlayPause" xml:space="preserve">
<value>Play / Pause</value>
</data>
<data name="PollingRate" xml:space="preserve">
<value>Polling Rate</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Power Limits</value>
</data>
@@ -440,11 +548,14 @@ Do you still want to continue?</value>
<data name="PrintScreen" xml:space="preserve">
<value>PrintScreen</value>
</data>
<data name="Profile" xml:space="preserve">
<value>Profile</value>
</data>
<data name="Quit" xml:space="preserve">
<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>
@@ -452,6 +563,12 @@ Do you still want to continue?</value>
<data name="RunOnStartup" xml:space="preserve">
<value>Run on Startup</value>
</data>
<data name="ScreenPadDown" xml:space="preserve">
<value>Screenpad Brightness Down</value>
</data>
<data name="ScreenPadUp" xml:space="preserve">
<value>Screenpad Brightness Up</value>
</data>
<data name="Shutdown" xml:space="preserve">
<value>Shutdown</value>
</data>
@@ -488,6 +605,9 @@ Do you still want to continue?</value>
<data name="ToggleAura" xml:space="preserve">
<value>Toggle Aura</value>
</data>
<data name="ToggleClamshellMode" xml:space="preserve">
<value>Auto Toggle Clamshell Mode</value>
</data>
<data name="ToggleFnLock" xml:space="preserve">
<value>Toggle Fn-Lock</value>
</data>

View File

@@ -0,0 +1,656 @@
<?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>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>
<data name="AlertDGPU" xml:space="preserve">
<value>Se pare că GPU-ul este folosit intens, dezactivați?</value>
</data>
<data name="AlertDGPUTitle" xml:space="preserve">
<value>Modul Eco</value>
</data>
<data name="AlertUltimateOff" xml:space="preserve">
<value>Oprirea modului Ultimate necesită o repornire de sistem</value>
</data>
<data name="AlertUltimateOn" xml:space="preserve">
<value>Modul Ultimate necesită o repornire a sistemului</value>
</data>
<data name="AlertUltimateTitle" xml:space="preserve">
<value>Reporniți acum?</value>
</data>
<data name="AnimationSpeed" xml:space="preserve">
<value>Viteza animației</value>
</data>
<data name="AnimeMatrix" xml:space="preserve">
<value>Matricea Anime</value>
</data>
<data name="AppAlreadyRunning" xml:space="preserve">
<value>Aplicația rulează deja</value>
</data>
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper deja rulează. Verificați bara de sistem pentru o iconiță.</value>
</data>
<data name="Apply" xml:space="preserve">
<value>Aplică</value>
</data>
<data name="ApplyFanCurve" xml:space="preserve">
<value>Aplicați curba personalizată</value>
</data>
<data name="ApplyPowerLimits" xml:space="preserve">
<value>Aplică limitele de putere</value>
</data>
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>Reglare automată a modului de alimentare Windows</value>
</data>
<data name="AsusServicesRunning" xml:space="preserve">
<value>Servicii Asus în derulare</value>
</data>
<data name="AuraBatteryState" xml:space="preserve">
<value>Battery State</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>Respirație</value>
</data>
<data name="AuraClockwise" xml:space="preserve">
<value>Clockwise</value>
</data>
<data name="AuraColorCycle" xml:space="preserve">
<value>Ciclu de culori</value>
</data>
<data name="AuraComet" xml:space="preserve">
<value>Comet</value>
</data>
<data name="AuraCounterClockwise" xml:space="preserve">
<value>Counterclockwise</value>
</data>
<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>
<data name="AuraRainbow" xml:space="preserve">
<value>Curcubeu</value>
</data>
<data name="AuraRandomColor" xml:space="preserve">
<value>Random</value>
</data>
<data name="AuraReact" xml:space="preserve">
<value>React</value>
</data>
<data name="AuraSlow" xml:space="preserve">
<value>Încet</value>
</data>
<data name="AuraStatic" xml:space="preserve">
<value>Static</value>
</data>
<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>
<data name="AutoMode" xml:space="preserve">
<value>Automat</value>
</data>
<data name="AutoRefreshTooltip" xml:space="preserve">
<value>Setează ecranul la 60Hz pentru a economisi bateria, și înapoi cât se încarcă</value>
</data>
<data name="Awake" xml:space="preserve">
<value>Treaz</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>Timeout conectat / folosind bateria (0 - ON)</value>
</data>
<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>
<data name="BatteryHealth" xml:space="preserve">
<value>Sănătatea bateriei</value>
</data>
<data name="BatteryLimitFull" xml:space="preserve">
<value>One time charge to 100%</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>Actualizări BIOS și Driver</value>
</data>
<data name="Boot" xml:space="preserve">
<value>Pornire</value>
</data>
<data name="BootSound" xml:space="preserve">
<value>Boot Sound</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>Luminozitate</value>
</data>
<data name="BrightnessDown" xml:space="preserve">
<value>Scăderea luminozității</value>
</data>
<data name="BrightnessUp" xml:space="preserve">
<value>Mărirea luminozității</value>
</data>
<data name="Calibrate" xml:space="preserve">
<value>Calibrate</value>
</data>
<data name="Charging" xml:space="preserve">
<value>Se încarcă</value>
</data>
<data name="Color" xml:space="preserve">
<value>Culoare</value>
</data>
<data name="CPUBoost" xml:space="preserve">
<value>Accelerare CPU</value>
</data>
<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>
<data name="DisableOverdrive" xml:space="preserve">
<value>Dezactivează screen overdrive</value>
</data>
<data name="Discharging" xml:space="preserve">
<value>Se descarcă</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>Download</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Drivers și Aplicații</value>
</data>
<data name="EcoGPUTooltip" xml:space="preserve">
<value>Dezactivează dGPU pentru a economisi bateria</value>
</data>
<data name="EcoMode" xml:space="preserve">
<value>Eco</value>
</data>
<data name="EnableOptimusText" xml:space="preserve">
<value>Dezactivarea dGPU pentru a utiliza modul Eco, în timp ce Display Mode în NVIDIA Control Panel nu este setat la modul Optimus, poate cauza probleme cu controalele de luminozitate până la următoarea repornire.
Încă mai vrei să continui?</value>
</data>
<data name="EnableOptimusTitle" xml:space="preserve">
<value>NVIDIA Display Mode nu este setat la modul Optimus</value>
</data>
<data name="EnergySettings" xml:space="preserve">
<value>Energy Settings</value>
</data>
<data name="Extra" xml:space="preserve">
<value>Extra</value>
</data>
<data name="ExtraSettings" xml:space="preserve">
<value>Setări suplimentare</value>
</data>
<data name="FactoryDefaults" xml:space="preserve">
<value>Setările implicite ale fabricii</value>
</data>
<data name="FanCurves" xml:space="preserve">
<value>Curbe ventilator</value>
</data>
<data name="FanProfileCPU" xml:space="preserve">
<value>Profil ventilator CPU</value>
</data>
<data name="FanProfileGPU" xml:space="preserve">
<value>Profil ventilator GPU</value>
</data>
<data name="FanProfileMid" xml:space="preserve">
<value>Profil mediu ventilator</value>
</data>
<data name="FanProfiles" xml:space="preserve">
<value>Profiluri ventilatoare</value>
</data>
<data name="FansAndPower" xml:space="preserve">
<value>Vent. și putere</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<value>Vent</value>
</data>
<data name="FansPower" xml:space="preserve">
<value>Fans + Power</value>
</data>
<data name="FnLock" xml:space="preserve">
<value>Procesează tastele Fn+F fără Fn</value>
</data>
<data name="GPUBoost" xml:space="preserve">
<value>Dynamic Boost</value>
</data>
<data name="GPUChanging" xml:space="preserve">
<value>Modificare</value>
</data>
<data name="GPUCoreClockOffset" xml:space="preserve">
<value>Core Clock Offset</value>
</data>
<data name="GPUMemoryClockOffset" xml:space="preserve">
<value>Memory Clock Offset</value>
</data>
<data name="GPUMode" xml:space="preserve">
<value>Modul GPU</value>
</data>
<data name="GPUModeEco" xml:space="preserve">
<value>Doar iGPU</value>
</data>
<data name="GPUModeStandard" xml:space="preserve">
<value>iGPU + dGPU</value>
</data>
<data name="GPUModeUltimate" xml:space="preserve">
<value>exclusiv dGPU</value>
</data>
<data name="GPUSettings" xml:space="preserve">
<value>Setări GPU</value>
</data>
<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>
<data name="KeyBindings" xml:space="preserve">
<value>Asocieri taste</value>
</data>
<data name="Keyboard" xml:space="preserve">
<value>Tastatură</value>
</data>
<data name="KillGpuApps" xml:space="preserve">
<value>Opriți toate aplicațiile care folosesc GPU când treceți în modul Eco</value>
</data>
<data name="LaptopBacklight" xml:space="preserve">
<value>Lumina de fundal</value>
</data>
<data name="LaptopKeyboard" xml:space="preserve">
<value>Tastatură Laptop</value>
</data>
<data name="LaptopScreen" xml:space="preserve">
<value>Ecran Laptop</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Lid</value>
</data>
<data name="Lightbar" xml:space="preserve">
<value>Lightbar</value>
</data>
<data name="Lighting" xml:space="preserve">
<value>Lighting</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo-ul</value>
</data>
<data name="Low" xml:space="preserve">
<value>Low</value>
</data>
<data name="MatrixAudio" xml:space="preserve">
<value>Vizualizator audio</value>
</data>
<data name="MatrixBanner" xml:space="preserve">
<value>Binary Banner</value>
</data>
<data name="MatrixBright" xml:space="preserve">
<value>Luminos</value>
</data>
<data name="MatrixClock" xml:space="preserve">
<value>Ceas</value>
</data>
<data name="MatrixDim" xml:space="preserve">
<value>Dim</value>
</data>
<data name="MatrixLogo" xml:space="preserve">
<value>Logo-ul ROG</value>
</data>
<data name="MatrixMedium" xml:space="preserve">
<value>Mediu</value>
</data>
<data name="MatrixOff" xml:space="preserve">
<value>Oprit</value>
</data>
<data name="MatrixPicture" xml:space="preserve">
<value>Imagine</value>
</data>
<data name="MaxRefreshTooltip" xml:space="preserve">
<value>Valoare maximă refresh rate pentru latență mai mică</value>
</data>
<data name="MinRefreshTooltip" xml:space="preserve">
<value>60Hz refresh rate pentru a economisi bateria</value>
</data>
<data name="Minute" xml:space="preserve">
<value>Minute</value>
</data>
<data name="Minutes" xml:space="preserve">
<value>Minutes</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>
</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>
</data>
<data name="MousePerformance" xml:space="preserve">
<value>Performance</value>
</data>
<data name="MouseSynchronize" xml:space="preserve">
<value>Synchronize with mouse</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>Multizone</value>
</data>
<data name="MuteMic" xml:space="preserve">
<value>Oprire microfon</value>
</data>
<data name="Never" xml:space="preserve">
<value>Never</value>
</data>
<data name="NewUpdates" xml:space="preserve">
<value>Actualizări noi</value>
</data>
<data name="NoNewUpdates" xml:space="preserve">
<value>Nu există actualizări noi</value>
</data>
<data name="NotConnected" xml:space="preserve">
<value>Not Connected</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>Deschide fereastra G-Helper</value>
</data>
<data name="Optimized" xml:space="preserve">
<value>Optimizat</value>
</data>
<data name="OptimizedGPUTooltip" xml:space="preserve">
<value>Schimbă la modul Eco pe baterie și la Standard când este conectat</value>
</data>
<data name="OptimizedUSBC" xml:space="preserve">
<value>Păstraţi GPU dezactivat când încărcătorul USB-C e folosit în modul Optimized</value>
</data>
<data name="Other" xml:space="preserve">
<value>Altele</value>
</data>
<data name="Overdrive" xml:space="preserve">
<value>Overdrive</value>
</data>
<data name="PerformanceMode" xml:space="preserve">
<value>Mod</value>
</data>
<data name="Peripherals" xml:space="preserve">
<value>Peripherals</value>
</data>
<data name="PictureGif" xml:space="preserve">
<value>Poză / Gif</value>
</data>
<data name="PlayPause" xml:space="preserve">
<value>Redare / Pauză</value>
</data>
<data name="PollingRate" xml:space="preserve">
<value>Polling Rate</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Limite de putere</value>
</data>
<data name="PPTExperimental" xml:space="preserve">
<value>Limitele de putere sunt o funcție experimentală. Folosiți cu atenție și pe propriul risc!</value>
</data>
<data name="PrintScreen" xml:space="preserve">
<value>PrintScreen</value>
</data>
<data name="Profile" xml:space="preserve">
<value>Profile</value>
</data>
<data name="Quit" xml:space="preserve">
<value>Închide</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<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>
</data>
<data name="RunOnStartup" xml:space="preserve">
<value>Rulează la pornirea sistemului</value>
</data>
<data name="ScreenPadDown" xml:space="preserve">
<value>Scade luminozitate Screenpad</value>
</data>
<data name="ScreenPadUp" xml:space="preserve">
<value>Mărește luminozitate Screenpad</value>
</data>
<data name="Shutdown" xml:space="preserve">
<value>Oprire</value>
</data>
<data name="Silent" xml:space="preserve">
<value>Silențios</value>
</data>
<data name="Sleep" xml:space="preserve">
<value>Somn</value>
</data>
<data name="StandardGPUTooltip" xml:space="preserve">
<value>Activează dGPU pentru uz standard</value>
</data>
<data name="StandardMode" xml:space="preserve">
<value>Standard</value>
</data>
<data name="Start" xml:space="preserve">
<value>Start</value>
</data>
<data name="StartingServices" xml:space="preserve">
<value>Se pornesc serviciile</value>
</data>
<data name="StartupError" xml:space="preserve">
<value>Eroare la Pornire</value>
</data>
<data name="Stop" xml:space="preserve">
<value>Stop</value>
</data>
<data name="StopGPUApps" xml:space="preserve">
<value>Oprește aplicațiile care folosesc GPU</value>
</data>
<data name="StoppingServices" xml:space="preserve">
<value>Se opresc serviciile</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<value>Toggle Aura</value>
</data>
<data name="ToggleClamshellMode" xml:space="preserve">
<value>Auto Toggle Mod Clamshell</value>
</data>
<data name="ToggleFnLock" xml:space="preserve">
<value>Toggle Fn-Lock</value>
</data>
<data name="ToggleMiniled" xml:space="preserve">
<value>Toggle Miniled (dacă e suportat)</value>
</data>
<data name="ToggleScreen" xml:space="preserve">
<value>Toggle Ecran</value>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>
<data name="TurnedOff" xml:space="preserve">
<value>Dezactivat</value>
</data>
<data name="TurnOffOnBattery" xml:space="preserve">
<value>Dezactivează când bateria e folosită</value>
</data>
<data name="UltimateGPUTooltip" xml:space="preserve">
<value>Rutează ecranul laptop-ului spre dGPU, maximizând FPS</value>
</data>
<data name="UltimateMode" xml:space="preserve">
<value>Ultimate</value>
</data>
<data name="UndervoltingRisky" xml:space="preserve">
<value>Undervolting este o funcțiune experimentală și riscantă. Dacă valorile aplicate sunt prea mici pentru hardware-ul dumneavoastră, acesta poate deveni instabil, a se opri sau să corupă datele. Dacă vrei să încerci - mai întâi începe de la valori mici, apasă Aplică și testează ce funcționează pentru tine.</value>
</data>
<data name="Updates" xml:space="preserve">
<value>Actualizări</value>
</data>
<data name="VersionLabel" xml:space="preserve">
<value>Versiune</value>
</data>
<data name="VolumeDown" xml:space="preserve">
<value>Buton scădere volum</value>
</data>
<data name="VolumeMute" xml:space="preserve">
<value>Buton dezactivare sunet</value>
</data>
<data name="VolumeUp" xml:space="preserve">
<value>Buton mărire volum</value>
</data>
<data name="WindowTop" xml:space="preserve">
<value>Păstrează aplicația mereu deasupra</value>
</data>
</root>

View File

@@ -59,46 +59,46 @@
: 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: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: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: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: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: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: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:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
@@ -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>Hızlandırma</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>
@@ -147,6 +150,9 @@
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper zaten çalışıyor. Simge için görev çubuğunu kontrol edin.</value>
</data>
<data name="Apply" xml:space="preserve">
<value>Uygula</value>
</data>
<data name="ApplyFanCurve" xml:space="preserve">
<value>Özel Fan Eğrisini Uygula</value>
</data>
@@ -156,21 +162,45 @@
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>Windows Güç Modunu otomatik ayarla</value>
</data>
<data name="AsusServicesRunning" xml:space="preserve">
<value>Çalışan Asus Hizmetleri</value>
</data>
<data name="AuraBatteryState" xml:space="preserve">
<value>Pil Durumu</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>Nefes</value>
</data>
<data name="AuraClockwise" xml:space="preserve">
<value>Saat Yönünde</value>
</data>
<data name="AuraColorCycle" xml:space="preserve">
<value>Renk Döngüsü</value>
</data>
<data name="AuraComet" xml:space="preserve">
<value>Kuyruklu Yıldız</value>
</data>
<data name="AuraCounterClockwise" xml:space="preserve">
<value>Saat Yönünün Tersine</value>
</data>
<data name="AuraFast" xml:space="preserve">
<value>Hızlı</value>
</data>
<data name="AuraLightingMode" xml:space="preserve">
<value>Işıklandırma Modu</value>
</data>
<data name="AuraNormal" xml:space="preserve">
<value>Normal</value>
</data>
<data name="AuraRainbow" xml:space="preserve">
<value>Gökkuşağı</value>
</data>
<data name="AuraRandomColor" xml:space="preserve">
<value>Rastgele</value>
</data>
<data name="AuraReact" xml:space="preserve">
<value>Reaksiyon</value>
</data>
<data name="AuraSlow" xml:space="preserve">
<value>Yavaş</value>
</data>
@@ -180,6 +210,24 @@
<data name="AuraStrobe" xml:space="preserve">
<value>Flaş</value>
</data>
<data name="AuraZoneAll" xml:space="preserve">
<value>Tümü</value>
</data>
<data name="AuraZoneDock" xml:space="preserve">
<value>Yuva</value>
</data>
<data name="AuraZoneLogo" xml:space="preserve">
<value>Logo</value>
</data>
<data name="AuraZoneScroll" xml:space="preserve">
<value>Kaydırma Tekerleği</value>
</data>
<data name="AuraZoneUnderglow" xml:space="preserve">
<value>Alttan Aydınlatma</value>
</data>
<data name="AutoApply" xml:space="preserve">
<value>Otomatik Uygula</value>
</data>
<data name="AutoMode" xml:space="preserve">
<value>Otomatik</value>
</data>
@@ -187,35 +235,62 @@
<value>Pil tasarrufu için 60Hz kullanılır ve şarja takıldığında eski haline getirir</value>
</data>
<data name="Awake" xml:space="preserve">
<value>Uyanık</value>
<value>Uyanırken</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>Pildeyken klavye ışığının kapanma süresi</value>
</data>
<data name="BacklightTimeoutPlugged" xml:space="preserve">
<value>Şarjdayken klavye ışığının kapanma süresi (0 her zaman açık)</value>
</data>
<data name="Balanced" xml:space="preserve">
<value>Dengeli</value>
</data>
<data name="BatteryCharge" xml:space="preserve">
<value>Şarj</value>
</data>
<data name="BatteryChargeLimit" xml:space="preserve">
<value>Pil Şarj Limiti</value>
</data>
<data name="BatteryHealth" xml:space="preserve">
<value>Pil Sağlığı</value>
</data>
<data name="BatteryLimitFull" xml:space="preserve">
<value>Bir seferlik %100 şarj etme</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>BIOS ve Sürücü Güncellemeleri</value>
</data>
<data name="Boot" xml:space="preserve">
<value>Önyükleme</value>
<value>Boot</value>
</data>
<data name="BootSound" xml:space="preserve">
<value>Boot Sesi</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>Parlaklığı</value>
</data>
<data name="BrightnessDown" xml:space="preserve">
<value>Parlaklığı Azalt</value>
</data>
<data name="BrightnessUp" xml:space="preserve">
<value>Parlaklığı Artır</value>
</data>
<data name="Calibrate" xml:space="preserve">
<value>Kalibre Et</value>
</data>
<data name="Charging" xml:space="preserve">
<value>Şarj oluyor</value>
</data>
<data name="Color" xml:space="preserve">
<value>Renk</value>
</data>
<data name="CPUBoost" xml:space="preserve">
<value>CPU Boost</value>
<value>CPU Desteği</value>
</data>
<data name="Custom" xml:space="preserve">
<value>Özel</value>
</data>
<data name="Deceleration" xml:space="preserve">
<value>Yavaşlama</value>
</data>
<data name="Default" xml:space="preserve">
<value>Varsayılan</value>
</data>
@@ -223,10 +298,13 @@
<value>Ekran overdrive özelliğini devre dışı bırak</value>
</data>
<data name="Discharging" xml:space="preserve">
<value>Pil boşalıyor</value>
<value>Şarj azalıyor</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>Güncelleştirmeyi İndir</value>
<value>İndir</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Sürücüler ve Yazılımlar</value>
</data>
<data name="EcoGPUTooltip" xml:space="preserve">
<value>Pil tasarrufu için harici GPU'yu devre dışı bırakır</value>
@@ -234,6 +312,17 @@
<data name="EcoMode" xml:space="preserve">
<value>Eko</value>
</data>
<data name="EnableOptimusText" xml:space="preserve">
<value>NVIDIA Denetim Masası'ndaki Görüntü Modu Optimus olarak ayarlı değilken Eko moduna geçilerek harici GPU'nun devre dışı bırakılması, bir sonraki yeniden başlatmaya kadar parlaklık ayarlarında sorunlara neden olabilir.
Yine de devam etmek istiyor musunuz?</value>
</data>
<data name="EnableOptimusTitle" xml:space="preserve">
<value>NVIDIA Görüntü Modu Optimus olarak ayarlanmamış</value>
</data>
<data name="EnergySettings" xml:space="preserve">
<value>Enerji Ayarları</value>
</data>
<data name="Extra" xml:space="preserve">
<value>Ekstra</value>
</data>
@@ -261,15 +350,27 @@
<data name="FansAndPower" xml:space="preserve">
<value>Fanlar ve Güç</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<value>Fan</value>
</data>
<data name="FansPower" xml:space="preserve">
<value>Fanlar + Güç</value>
</data>
<data name="FnLock" xml:space="preserve">
<value>Fn+F kısayol tuşlarını FN tuşuna basmadan çalıştır</value>
</data>
<data name="GPUBoost" xml:space="preserve">
<value>Dynamic Boost</value>
</data>
<data name="GPUChanging" xml:space="preserve">
<value>Değiştiriliyor</value>
</data>
<data name="GPUCoreClockOffset" xml:space="preserve">
<value>Çekirdek Frekans Dengesi</value>
</data>
<data name="GPUMemoryClockOffset" xml:space="preserve">
<value>Hafıza Frekans Dengesi</value>
</data>
<data name="GPUMode" xml:space="preserve">
<value>GPU Modu</value>
</data>
@@ -282,20 +383,29 @@
<data name="GPUModeUltimate" xml:space="preserve">
<value>sadece harici GPU</value>
</data>
<data name="GPUSettings" xml:space="preserve">
<value>GPU Ayarları</value>
</data>
<data name="GPUTempTarget" xml:space="preserve">
<value>Sıcaklık Hedefi</value>
</data>
<data name="HibernateAfter" xml:space="preserve">
<value>Uyku modunda, Hazırda Bekleme Moduna geçiş dakikası (0 - KAPALI)</value>
</data>
<data name="High" xml:space="preserve">
<value>Yüksek</value>
</data>
<data name="KeyBindings" xml:space="preserve">
<value>Tuş Bağlantıları</value>
<value>Tuş Atamaları</value>
</data>
<data name="Keyboard" xml:space="preserve">
<value>Klavye</value>
</data>
<data name="KeyboardAuto" xml:space="preserve">
<value>Pille çalışırken klavye aydınlatmasını kıs, şarjdayken eski haline dön</value>
</data>
<data name="KillGpuApps" xml:space="preserve">
<value>Eco'ya geçerken dGPU kullanan tüm uygulamaları durdur</value>
<value>Eco'ya geçerken harici GPU'yu kullanan tüm uygulamaları durdur</value>
</data>
<data name="LaptopBacklight" xml:space="preserve">
<value>Aydınlatması</value>
<value>Laptop Aydınlatması</value>
</data>
<data name="LaptopKeyboard" xml:space="preserve">
<value>Laptop Klavyesi</value>
@@ -303,8 +413,26 @@
<data name="LaptopScreen" xml:space="preserve">
<value>Laptop Ekranı</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Kapak</value>
</data>
<data name="Lightbar" xml:space="preserve">
<value>Işık Çubuğu</value>
</data>
<data name="Lighting" xml:space="preserve">
<value>Işıklandırma</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>
<data name="Low" xml:space="preserve">
<value>Düşük</value>
</data>
<data name="MatrixAudio" xml:space="preserve">
<value>Ses Görselleştirici</value>
</data>
<data name="MatrixBanner" xml:space="preserve">
<value>Matrix Banner</value>
<value>Binary Banner</value>
</data>
<data name="MatrixBright" xml:space="preserve">
<value>Parlak</value>
@@ -333,9 +461,51 @@
<data name="MinRefreshTooltip" xml:space="preserve">
<value>Pil tasarrufu için 60Hz yenileme hızı</value>
</data>
<data name="Minute" xml:space="preserve">
<value>Dakika</value>
</data>
<data name="Minutes" xml:space="preserve">
<value>Dakika</value>
</data>
<data name="MouseAngleSnapping" xml:space="preserve">
<value>Angle Snapping</value>
</data>
<data name="MouseAutoPowerOff" xml:space="preserve">
<value>Sonrasında Otomatik Kapat</value>
</data>
<data name="MouseButtonResponse" xml:space="preserve">
<value>Tuş Tepkisi</value>
</data>
<data name="MouseLiftOffDistance" xml:space="preserve">
<value>Havalanma Mesafesi</value>
</data>
<data name="MouseLowBatteryWarning" xml:space="preserve">
<value>Düşük Pil Uyarısı seviyesi</value>
</data>
<data name="MousePerformance" xml:space="preserve">
<value>Performans</value>
</data>
<data name="MouseSynchronize" xml:space="preserve">
<value>Fare ile senkronize edin</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>Çoklu Bölge</value>
</data>
<data name="MuteMic" xml:space="preserve">
<value>Mikrofonu Sustur</value>
</data>
<data name="Never" xml:space="preserve">
<value>Asla</value>
</data>
<data name="NewUpdates" xml:space="preserve">
<value>Yeni güncellemeler</value>
</data>
<data name="NoNewUpdates" xml:space="preserve">
<value>Güncelleme yok</value>
</data>
<data name="NotConnected" xml:space="preserve">
<value>Bağlantı Yok</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>G-Helper penceresini aç</value>
</data>
@@ -357,12 +527,18 @@
<data name="PerformanceMode" xml:space="preserve">
<value>Performans Modu</value>
</data>
<data name="Peripherals" xml:space="preserve">
<value>Çevre Birimleri</value>
</data>
<data name="PictureGif" xml:space="preserve">
<value>Resim / Gif</value>
</data>
<data name="PlayPause" xml:space="preserve">
<value>Oynat / Duraklat</value>
</data>
<data name="PollingRate" xml:space="preserve">
<value>Yoklama Sıklığı</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Güç Sınırları</value>
</data>
@@ -372,17 +548,29 @@
<data name="PrintScreen" xml:space="preserve">
<value>Ekran Görüntüsü Al</value>
</data>
<data name="Profile" xml:space="preserve">
<value>Profil</value>
</data>
<data name="Quit" xml:space="preserve">
<value>Çıkış Yap</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>Bir şey harici GPU'yu kullanıyor ve Eco modunu engelliyor. G-Helper aygıt yöneticisinde harici GPU'yu yeniden başlatmayı denesin mi? (Kendi sorumluluğunuzdadır)</value>
</data>
<data name="RPM" xml:space="preserve">
<value>RPM</value>
</data>
<data name="RunOnStartup" xml:space="preserve">
<value>Başlangıçta Çalıştır</value>
</data>
<data name="ScreenPadDown" xml:space="preserve">
<value>Screenpad Parlaklığını Azalt</value>
</data>
<data name="ScreenPadUp" xml:space="preserve">
<value>Screenpad Parlaklığını Artır</value>
</data>
<data name="Shutdown" xml:space="preserve">
<value>Kapalı</value>
<value>Kapatma</value>
</data>
<data name="Silent" xml:space="preserve">
<value>Sessiz</value>
@@ -396,11 +584,38 @@
<data name="StandardMode" xml:space="preserve">
<value>Standart</value>
</data>
<data name="Start" xml:space="preserve">
<value>Başlat</value>
</data>
<data name="StartingServices" xml:space="preserve">
<value>Hizmetler Başlatılıyor</value>
</data>
<data name="StartupError" xml:space="preserve">
<value>Başlatma Hatası</value>
</data>
<data name="Stop" xml:space="preserve">
<value>Durdur</value>
</data>
<data name="StopGPUApps" xml:space="preserve">
<value>GPU Uygulamalarını Durdur</value>
</data>
<data name="StoppingServices" xml:space="preserve">
<value>Hizmetler Durduruluyor</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<value>Aura'yı Değiştir</value>
<value>Aura'yı Kullan</value>
</data>
<data name="ToggleClamshellMode" xml:space="preserve">
<value>Otomatik Clamshell Modunu Aç</value>
</data>
<data name="ToggleFnLock" xml:space="preserve">
<value>Fn-Lock'u Aç</value>
</data>
<data name="ToggleMiniled" xml:space="preserve">
<value>Miniled'i Aç (destekliyorsa)</value>
</data>
<data name="ToggleScreen" xml:space="preserve">
<value>Ekranı Değiştir</value>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
@@ -417,11 +632,23 @@
<data name="UltimateMode" xml:space="preserve">
<value>Ultimate</value>
</data>
<data name="UndervoltingRisky" xml:space="preserve">
<value>Undervolting deneysel ve riskli bir özelliktir. Uygulanan değerler cihazınız için çok düşükse, cihazınız stabil çalışmayabilir, kapanabilir veya veri kaybına uğrayabilir. Yine de denemek istiyorsanız, önce küçük değerlerden başlayıp Uygula'ya tıklayın ve sizin için uygun olanı test edin.</value>
</data>
<data name="Updates" xml:space="preserve">
<value>Güncellemeler</value>
</data>
<data name="VersionLabel" xml:space="preserve">
<value>Sürüm</value>
</data>
<data name="VolumeDown" xml:space="preserve">
<value>Sesi Azalt</value>
</data>
<data name="VolumeMute" xml:space="preserve">
<value>Ses Kısma</value>
<value>Sesi Kapat</value>
</data>
<data name="VolumeUp" xml:space="preserve">
<value>Sesi Artır</value>
</data>
<data name="WindowTop" xml:space="preserve">
<value>Uygulama penceresini her zaman en üstte tut</value>

View File

@@ -59,46 +59,46 @@
: 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: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: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: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: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: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: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:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
@@ -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>Прискорення</value>
</data>
<data name="ACPIError" xml:space="preserve">
<value>Не вдається підключитися до ASUS ACPI. Програма не може працювати без нього. Спробуйте встановити Asus System Control Interface</value>
<value>Не вдається під'єднатися до ASUS ACPI. Програма не може працювати без нього. Спробуйте встановити Asus System Control Interface</value>
</data>
<data name="AlertDGPU" xml:space="preserve">
<value>Здається, що GPU використовується, вимкнути її?</value>
@@ -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>
@@ -162,21 +165,42 @@
<data name="AsusServicesRunning" xml:space="preserve">
<value>Кількість запущених сервісів Asus</value>
</data>
<data name="AuraBatteryState" xml:space="preserve">
<value>Стан батареї</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>Дихання</value>
</data>
<data name="AuraClockwise" xml:space="preserve">
<value>Направо</value>
</data>
<data name="AuraColorCycle" xml:space="preserve">
<value>Зміна Кольорів</value>
</data>
<data name="AuraComet" xml:space="preserve">
<value>Комета</value>
</data>
<data name="AuraCounterClockwise" xml:space="preserve">
<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>Веселка</value>
</data>
<data name="AuraRandomColor" xml:space="preserve">
<value>Випадкова</value>
</data>
<data name="AuraReact" xml:space="preserve">
<value>Реактивна</value>
</data>
<data name="AuraSlow" xml:space="preserve">
<value>Повільна</value>
</data>
@@ -186,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>
@@ -199,23 +238,32 @@
<value>Робота</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>Тайм-аут підсвітки на батареї</value>
</data>
<data name="BacklightTimeoutPlugged" 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>Стан батареї</value>
</data>
<data name="BatteryLimitFull" xml:space="preserve">
<value>Одноразовий заряд до 100%</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>Оновлення BIOS та драйверів</value>
</data>
<data name="Boot" xml:space="preserve">
<value>Старт</value>
</data>
<data name="BootSound" xml:space="preserve">
<value>Звук завантаження</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>Яскравість</value>
</data>
@@ -225,6 +273,12 @@
<data name="BrightnessUp" xml:space="preserve">
<value>Підвищити яскравість</value>
</data>
<data name="Calibrate" xml:space="preserve">
<value>Калібрування</value>
</data>
<data name="Charging" xml:space="preserve">
<value>Зарядка</value>
</data>
<data name="Color" xml:space="preserve">
<value>Колір</value>
</data>
@@ -234,6 +288,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>
@@ -255,6 +312,17 @@
<data name="EcoMode" xml:space="preserve">
<value>Еко</value>
</data>
<data name="EnableOptimusText" xml:space="preserve">
<value>Вимкнення dGPU коли NVIDIA Display Mode не встановлено в режим Optimus може спричинити проблеми з управлінням яскравістю до наступного перезавантаження.
Ви все ще хочете продовжити?</value>
</data>
<data name="EnableOptimusTitle" xml:space="preserve">
<value>NVIDIA Display Mode не в режимі Optimus</value>
</data>
<data name="EnergySettings" xml:space="preserve">
<value>Налаштування Енергії</value>
</data>
<data name="Extra" xml:space="preserve">
<value>Додатково</value>
</data>
@@ -265,7 +333,7 @@
<value>Скинути</value>
</data>
<data name="FanCurves" xml:space="preserve">
<value>Криві кулерів</value>
<value>Профілі кулерів</value>
</data>
<data name="FanProfileCPU" xml:space="preserve">
<value>Профіль кулеру CPU</value>
@@ -282,15 +350,27 @@
<data name="FansAndPower" xml:space="preserve">
<value>Кулери та Потужність</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<value>Fan</value>
</data>
<data name="FansPower" xml:space="preserve">
<value>Кулери та Потужність</value>
</data>
<data name="FnLock" xml:space="preserve">
<value>Гарячі клавіші Fn+F працюють без натискання Fn</value>
</data>
<data name="GPUBoost" xml:space="preserve">
<value>Dynamic Boost</value>
</data>
<data name="GPUChanging" xml:space="preserve">
<value>Зміна</value>
</data>
<data name="GPUCoreClockOffset" xml:space="preserve">
<value>Core Clock Offset</value>
</data>
<data name="GPUMemoryClockOffset" xml:space="preserve">
<value>Memory Clock Offset</value>
</data>
<data name="GPUMode" xml:space="preserve">
<value>Режим Графіки</value>
</data>
@@ -303,15 +383,24 @@
<data name="GPUModeUltimate" xml:space="preserve">
<value>Ексклюзивний dGPU</value>
</data>
<data name="GPUSettings" xml:space="preserve">
<value>Параметри GPU</value>
</data>
<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>Висока</value>
</data>
<data name="KeyBindings" xml:space="preserve">
<value>Прив'язки клавіш</value>
</data>
<data name="Keyboard" xml:space="preserve">
<value>Клавіатура</value>
</data>
<data name="KeyboardAuto" xml:space="preserve">
<value>Вимкнути підсвітку на батареї та увімкнути на зарядці</value>
</data>
<data name="KillGpuApps" xml:space="preserve">
<value>Закривати додатки, що використовують GPU, під час переходу в режим Eco</value>
</data>
@@ -324,6 +413,21 @@
<data name="LaptopScreen" xml:space="preserve">
<value>Дисплей</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Кришка</value>
</data>
<data name="Lightbar" xml:space="preserve">
<value>Лайтбар</value>
</data>
<data name="Lighting" xml:space="preserve">
<value>Ілюмінація</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Лого</value>
</data>
<data name="Low" xml:space="preserve">
<value>Низька</value>
</data>
<data name="MatrixAudio" xml:space="preserve">
<value>Аудіо візуалізатор</value>
</data>
@@ -357,12 +461,51 @@
<data name="MinRefreshTooltip" xml:space="preserve">
<value>Частота 60Гц, щоб зберегти заряд батареї</value>
</data>
<data name="Minute" xml:space="preserve">
<value>Хвил.</value>
</data>
<data name="Minutes" xml:space="preserve">
<value>Хвилини</value>
</data>
<data name="MouseAngleSnapping" xml:space="preserve">
<value>Фіксація Кута</value>
</data>
<data name="MouseAutoPowerOff" xml:space="preserve">
<value>Авто-вимикання</value>
</data>
<data name="MouseButtonResponse" xml:space="preserve">
<value>Відповідь Кнопок</value>
</data>
<data name="MouseLiftOffDistance" xml:space="preserve">
<value>Відстань підйому</value>
</data>
<data name="MouseLowBatteryWarning" xml:space="preserve">
<value>Попередження про низький заряд</value>
</data>
<data name="MousePerformance" xml:space="preserve">
<value>Режим Швидкодії</value>
</data>
<data name="MouseSynchronize" xml:space="preserve">
<value>Синхронізувати з мишею</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>Мультизони</value>
</data>
<data name="MuteMic" xml:space="preserve">
<value>Вимкнути мікрофон</value>
</data>
<data name="Never" xml:space="preserve">
<value>Ніколи</value>
</data>
<data name="NewUpdates" xml:space="preserve">
<value>Є оновлення</value>
</data>
<data name="NoNewUpdates" xml:space="preserve">
<value>Немає оновлень</value>
</data>
<data name="NotConnected" xml:space="preserve">
<value>Не під'єднано</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>Відкрити вікно G-Helper</value>
</data>
@@ -384,12 +527,18 @@
<data name="PerformanceMode" xml:space="preserve">
<value>Режим</value>
</data>
<data name="Peripherals" xml:space="preserve">
<value>Периферія</value>
</data>
<data name="PictureGif" xml:space="preserve">
<value>Картинка / GIF</value>
</data>
<data name="PlayPause" xml:space="preserve">
<value>Відтворення / Пауза</value>
</data>
<data name="PollingRate" xml:space="preserve">
<value>Частота опитування</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Ліміти Потужності</value>
</data>
@@ -399,15 +548,27 @@
<data name="PrintScreen" xml:space="preserve">
<value>Print Screen</value>
</data>
<data name="Profile" xml:space="preserve">
<value>Профіль</value>
</data>
<data name="Quit" xml:space="preserve">
<value>Вихід</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>Щось використовує dGPU та запобігає Еко-режиму. Дозвольте G-Helper спробувати перезапустити dGPU у менеджері пристрою? (Будь ласка, продовжуйте на власний ризик)</value>
</data>
<data name="RPM" xml:space="preserve">
<value>Оберти</value>
</data>
<data name="RunOnStartup" xml:space="preserve">
<value>Запускати на старті</value>
</data>
<data name="ScreenPadDown" xml:space="preserve">
<value>Зменшити яскравість Screenpad</value>
</data>
<data name="ScreenPadUp" xml:space="preserve">
<value>Збільшити яскравість Screenpad</value>
</data>
<data name="Shutdown" xml:space="preserve">
<value>Вимикання</value>
</data>
@@ -435,12 +596,18 @@
<data name="Stop" xml:space="preserve">
<value>Зупинити</value>
</data>
<data name="StopGPUApps" xml:space="preserve">
<value>Зупинити GPU додатки</value>
</data>
<data name="StoppingServices" xml:space="preserve">
<value>Зупиняються сервіси</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<value>Аура</value>
</data>
<data name="ToggleClamshellMode" xml:space="preserve">
<value>Автоматично вмикати режим Clamshell</value>
</data>
<data name="ToggleFnLock" xml:space="preserve">
<value>Fn-Lock</value>
</data>
@@ -466,7 +633,7 @@
<value>Ультімейт</value>
</data>
<data name="UndervoltingRisky" xml:space="preserve">
<value>Undervolting є експериментальним. Якщо значення занизькі для вашого CPU, це може спричинити нестабільність, припинити роботу або пошкодити дані. Якщо хочете спробувати - почніть з малих значень, натисніть «Застосувати» та перевірте, чи стабільно все працює.</value>
<value>Undervolting є експериментальним. Якщо значення занизькі для вашого CPU, це може спричинити нестабільність або пошкодити дані. Якщо хочете спробувати - почніть з малих значень, натисніть «Застосувати» та перевірте, чи стабільно все працює.</value>
</data>
<data name="Updates" xml:space="preserve">
<value>Оновлення</value>

View File

@@ -59,46 +59,46 @@
: 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: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: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: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: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: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: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:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
@@ -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>
@@ -147,6 +150,9 @@
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper đã chạy. Hãy kiểm tra khay hệ thống</value>
</data>
<data name="Apply" xml:space="preserve">
<value>Áp dụng</value>
</data>
<data name="ApplyFanCurve" xml:space="preserve">
<value>Áp dụng Đường cong quạt tuỳ chỉnh</value>
</data>
@@ -156,21 +162,45 @@
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>Tự động điều chỉnh Kế hoạch nguồn của Windows</value>
</data>
<data name="AsusServicesRunning" xml:space="preserve">
<value>Dịch vụ Asus đang chạy</value>
</data>
<data name="AuraBatteryState" xml:space="preserve">
<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>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>Sao chổi</value>
</data>
<data name="AuraCounterClockwise" xml:space="preserve">
<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>
<data name="AuraRainbow" xml:space="preserve">
<value>Cầu vồng</value>
</data>
<data name="AuraRandomColor" xml:space="preserve">
<value>Ngẫu nhiên</value>
</data>
<data name="AuraReact" xml:space="preserve">
<value>Phản ứng</value>
</data>
<data name="AuraSlow" xml:space="preserve">
<value>Chậm</value>
</data>
@@ -180,6 +210,24 @@
<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>
<data name="AutoMode" xml:space="preserve">
<value>Tự động</value>
</data>
@@ -195,15 +243,42 @@
<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>Sức khoẻ pin</value>
</data>
<data name="BatteryLimitFull" xml:space="preserve">
<value>One time charge to 100%</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>Cập nhật BIOS và driver</value>
</data>
<data name="Boot" xml:space="preserve">
<value>Khởi động</value>
</data>
<data name="BootSound" xml:space="preserve">
<value>Boot Sound</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>Độ sáng</value>
</data>
<data name="BrightnessDown" xml:space="preserve">
<value>Giảm độ sáng</value>
</data>
<data name="BrightnessUp" xml:space="preserve">
<value>Tăng độ sáng</value>
</data>
<data name="Calibrate" xml:space="preserve">
<value>Calibrate</value>
</data>
<data name="Charging" xml:space="preserve">
<value>Đang sạc</value>
</data>
<data name="Color" xml:space="preserve">
<value>Màu</value>
</data>
@@ -213,6 +288,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>
@@ -223,7 +301,10 @@
<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>
</data>
<data name="EcoGPUTooltip" xml:space="preserve">
<value>Tắt GPU rời để tiết kiệm pin</value>
@@ -231,6 +312,17 @@
<data name="EcoMode" xml:space="preserve">
<value>Tiết kiệm</value>
</data>
<data name="EnableOptimusText" xml:space="preserve">
<value>Disabling the dGPU by going into Eco mode while Display Mode in NVIDIA Control Panel is not set to Optimus might cause problems with brightness controls until after the next reboot.
Do you still want to continue?</value>
</data>
<data name="EnableOptimusTitle" xml:space="preserve">
<value>NVIDIA Display Mode is not set to Optimus</value>
</data>
<data name="EnergySettings" xml:space="preserve">
<value>Energy Settings</value>
</data>
<data name="Extra" xml:space="preserve">
<value>Thêm</value>
</data>
@@ -259,11 +351,14 @@
<value>Quạt và Công suất</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<value>Quạt: </value>
<value>Fan</value>
</data>
<data name="FansPower" xml:space="preserve">
<value>Quạt + Công suất</value>
</data>
<data name="FnLock" xml:space="preserve">
<value>Process Fn+F hotkeys without Fn</value>
</data>
<data name="GPUBoost" xml:space="preserve">
<value>Tăng tốc năng động</value>
</data>
@@ -294,14 +389,20 @@
<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>
<data name="KeyBindings" xml:space="preserve">
<value>Tổ hợp phím</value>
</data>
<data name="Keyboard" xml:space="preserve">
<value>Bàn phím</value>
</data>
<data name="KeyboardAuto" xml:space="preserve">
<value>Giảm độ sáng bàn phím khi không cắm sạc</value>
<data name="KillGpuApps" xml:space="preserve">
<value>Stop all apps using GPU when switching to Eco</value>
</data>
<data name="LaptopBacklight" xml:space="preserve">
<value>Độ sáng đèn nền</value>
@@ -318,9 +419,15 @@
<data name="Lightbar" xml:space="preserve">
<value>Thanh sáng</value>
</data>
<data name="Lighting" xml:space="preserve">
<value>Lighting</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>
<data name="Low" xml:space="preserve">
<value>Low</value>
</data>
<data name="MatrixAudio" xml:space="preserve">
<value>Sóng nhạc</value>
</data>
@@ -354,12 +461,51 @@
<data name="MinRefreshTooltip" xml:space="preserve">
<value>Tần số quét 60Hz để tiết kiệm pin</value>
</data>
<data name="Minute" xml:space="preserve">
<value>Minute</value>
</data>
<data name="Minutes" xml:space="preserve">
<value>Minutes</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>
</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>
</data>
<data name="MousePerformance" xml:space="preserve">
<value>Performance</value>
</data>
<data name="MouseSynchronize" xml:space="preserve">
<value>Synchronize with mouse</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>Đèn nền Đa vùng(Multi-Zone)</value>
</data>
<data name="MuteMic" xml:space="preserve">
<value>Tắt Mic</value>
</data>
<data name="Never" xml:space="preserve">
<value>Never</value>
</data>
<data name="NewUpdates" xml:space="preserve">
<value>New updates</value>
</data>
<data name="NoNewUpdates" xml:space="preserve">
<value>No new updates</value>
</data>
<data name="NotConnected" xml:space="preserve">
<value>Not Connected</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>Mở cửa sổ G-Helper</value>
</data>
@@ -381,12 +527,18 @@
<data name="PerformanceMode" xml:space="preserve">
<value>Chế độ Hiệu suất</value>
</data>
<data name="Peripherals" xml:space="preserve">
<value>Peripherals</value>
</data>
<data name="PictureGif" xml:space="preserve">
<value>Ảnh tĩnh / Ảnh động</value>
</data>
<data name="PlayPause" xml:space="preserve">
<value>Phát / Dừng</value>
</data>
<data name="PollingRate" xml:space="preserve">
<value>Polling Rate</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Giới hạn công suất</value>
</data>
@@ -396,11 +548,14 @@
<data name="PrintScreen" xml:space="preserve">
<value>Chụp màn hình</value>
</data>
<data name="Profile" xml:space="preserve">
<value>Profile</value>
</data>
<data name="Quit" xml:space="preserve">
<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>
@@ -408,6 +563,12 @@
<data name="RunOnStartup" xml:space="preserve">
<value>Chạy khi khởi động</value>
</data>
<data name="ScreenPadDown" xml:space="preserve">
<value>Screenpad Brightness Down</value>
</data>
<data name="ScreenPadUp" xml:space="preserve">
<value>Screenpad Brightness Up</value>
</data>
<data name="Shutdown" xml:space="preserve">
<value>Tắt nguồn</value>
</data>
@@ -423,12 +584,33 @@
<data name="StandardMode" xml:space="preserve">
<value>Tiêu chuẩn</value>
</data>
<data name="Start" xml:space="preserve">
<value>Start</value>
</data>
<data name="StartingServices" xml:space="preserve">
<value>Starting Services</value>
</data>
<data name="StartupError" xml:space="preserve">
<value>Khởi động lỗi</value>
</data>
<data name="Stop" xml:space="preserve">
<value>Stop</value>
</data>
<data name="StopGPUApps" xml:space="preserve">
<value>Stop GPU Applications</value>
</data>
<data name="StoppingServices" xml:space="preserve">
<value>Stopping Services</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<value>Bật tắt Aura</value>
</data>
<data name="ToggleClamshellMode" xml:space="preserve">
<value>Auto Toggle Clamshell Mode</value>
</data>
<data name="ToggleFnLock" xml:space="preserve">
<value>Toggle Fn-Lock</value>
</data>
<data name="ToggleMiniled" xml:space="preserve">
<value>Bật tắt Miniled(Nếu có hỗ trợ)</value>
</data>
@@ -450,6 +632,12 @@
<data name="UltimateMode" xml:space="preserve">
<value>Tối thượng</value>
</data>
<data name="UndervoltingRisky" xml:space="preserve">
<value>Undervolting is an experimental and risky feature. If applied values are too low for your hardware, it can become unstable, shut down or cause data corruption. If you want to try - start from small values first, click Apply and test what works for you.</value>
</data>
<data name="Updates" xml:space="preserve">
<value>Updates</value>
</data>
<data name="VersionLabel" xml:space="preserve">
<value>Phiên bản</value>
</data>

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
@@ -59,46 +59,46 @@
: 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: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: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: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: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: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: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:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
@@ -117,29 +117,32 @@
<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>无法连接到ASUS ACPI。 没有它应用程序将无法运行。 请尝试安装Asus System Control Interface驱动。</value>
</data>
<data name="AlertDGPU" xml:space="preserve">
<value>看起来 GPU 正在大量耗电,是否禁用?</value>
<value>看起来 GPU 正在被重度使用,是否禁用?</value>
</data>
<data name="AlertDGPUTitle" xml:space="preserve">
<value>节能模式</value>
<value>集显模式</value>
</data>
<data name="AlertUltimateOff" xml:space="preserve">
<value>关闭独显直连需要重新启动</value>
<value>关闭独显直连需要重</value>
</data>
<data name="AlertUltimateOn" xml:space="preserve">
<value>独显直连需要重启</value>
<value>切换到独显直连需要重启</value>
</data>
<data name="AlertUltimateTitle" xml:space="preserve">
<value>现在重新启动吗?</value>
<value>现在重吗?</value>
</data>
<data name="AnimationSpeed" xml:space="preserve">
<value>动画速度</value>
</data>
<data name="AnimeMatrix" xml:space="preserve">
<value>Anime Matrix 光显矩阵屏</value>
<value>Anime Matrix</value>
</data>
<data name="AppAlreadyRunning" xml:space="preserve">
<value>应用已经在运行</value>
@@ -147,8 +150,11 @@
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper已经在运行。 请查看系统托盘中的图标。</value>
</data>
<data name="Apply" xml:space="preserve">
<value>应用</value>
</data>
<data name="ApplyFanCurve" xml:space="preserve">
<value>应用自定义扇曲线</value>
<value>应用自定义扇曲线</value>
</data>
<data name="ApplyPowerLimits" xml:space="preserve">
<value>应用功率限制</value>
@@ -156,21 +162,45 @@
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>自动调整Windows电源模式</value>
</data>
<data name="AsusServicesRunning" xml:space="preserve">
<value>正在运行的 Asus 服务</value>
</data>
<data name="AuraBatteryState" xml:space="preserve">
<value>电池状态</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>呼吸</value>
</data>
<data name="AuraClockwise" xml:space="preserve">
<value>顺时针</value>
</data>
<data name="AuraColorCycle" xml:space="preserve">
<value>彩色循环</value>
</data>
<data name="AuraComet" xml:space="preserve">
<value>彗星</value>
</data>
<data name="AuraCounterClockwise" xml:space="preserve">
<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>彩虹</value>
</data>
<data name="AuraRandomColor" xml:space="preserve">
<value>随机</value>
</data>
<data name="AuraReact" xml:space="preserve">
<value>触发</value>
</data>
<data name="AuraSlow" xml:space="preserve">
<value>慢</value>
</data>
@@ -180,6 +210,24 @@
<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>底灯</value>
</data>
<data name="AutoApply" xml:space="preserve">
<value>自动应用</value>
</data>
<data name="AutoMode" xml:space="preserve">
<value>自动</value>
</data>
@@ -190,23 +238,47 @@
<value>唤醒时</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>使用电池时的背光超时时间</value>
</data>
<data name="BacklightTimeoutPlugged" 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>电池健康</value>
</data>
<data name="BatteryLimitFull" xml:space="preserve">
<value>一次性充电至 100%</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>BIOS 和驱动程序更新</value>
</data>
<data name="Boot" xml:space="preserve">
<value>开机时</value>
</data>
<data name="BootSound" xml:space="preserve">
<value>开机音效</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>亮度</value>
</data>
<data name="BrightnessDown" xml:space="preserve">
<value>降低亮度</value>
</data>
<data name="BrightnessUp" xml:space="preserve">
<value>提高亮度</value>
</data>
<data name="Calibrate" xml:space="preserve">
<value>校准</value>
</data>
<data name="Charging" xml:space="preserve">
<value>充电中</value>
</data>
<data name="Color" xml:space="preserve">
<value>颜色</value>
</data>
@@ -216,6 +288,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>
@@ -226,7 +301,10 @@
<value>正在放电</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>下载更新</value>
<value>下载</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>驱动程序和软件</value>
</data>
<data name="EcoGPUTooltip" xml:space="preserve">
<value>禁用独显以节省电池电量</value>
@@ -234,6 +312,17 @@
<data name="EcoMode" xml:space="preserve">
<value>集显模式</value>
</data>
<data name="EnableOptimusText" xml:space="preserve">
<value>NVIDIA 控制面板中的显示模式未设置为 Optimus 时,通过集显模式禁用独立显卡可能会使亮度控制出现问题,直到下次重启后才能恢复。
确定还要继续吗?</value>
</data>
<data name="EnableOptimusTitle" xml:space="preserve">
<value>NVIDIA 显示模式未设置为 Optimus</value>
</data>
<data name="EnergySettings" xml:space="preserve">
<value>电源设置</value>
</data>
<data name="Extra" xml:space="preserve">
<value>更多</value>
</data>
@@ -253,7 +342,7 @@
<value>GPU 风扇配置文件</value>
</data>
<data name="FanProfileMid" xml:space="preserve">
<value>中等风扇配置</value>
<value>Mid 风扇配置文件</value>
</data>
<data name="FanProfiles" xml:space="preserve">
<value>风扇配置</value>
@@ -261,15 +350,27 @@
<data name="FansAndPower" xml:space="preserve">
<value>风扇和电源</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<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>
</data>
<data name="GPUBoost" xml:space="preserve">
<value>动态加速</value>
</data>
<data name="GPUChanging" xml:space="preserve">
<value>切换中...</value>
</data>
<data name="GPUCoreClockOffset" xml:space="preserve">
<value>核心频率偏移量</value>
</data>
<data name="GPUMemoryClockOffset" xml:space="preserve">
<value>显存频率偏移量</value>
</data>
<data name="GPUMode" xml:space="preserve">
<value>显卡模式</value>
</data>
@@ -282,15 +383,24 @@
<data name="GPUModeUltimate" xml:space="preserve">
<value>独显直连</value>
</data>
<data name="GPUSettings" xml:space="preserve">
<value>GPU 设置</value>
</data>
<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>高</value>
</data>
<data name="KeyBindings" xml:space="preserve">
<value>按键绑定</value>
</data>
<data name="Keyboard" xml:space="preserve">
<value>键盘</value>
</data>
<data name="KeyboardAuto" xml:space="preserve">
<value>电池模式下降低键盘亮度以省电,并在插上电源时恢复</value>
</data>
<data name="KillGpuApps" xml:space="preserve">
<value>当切换到集显模式时,停止所有正在使用独显的应用</value>
</data>
@@ -303,6 +413,24 @@
<data name="LaptopScreen" xml:space="preserve">
<value>笔记本屏幕</value>
</data>
<data name="Lid" xml:space="preserve">
<value>盖子</value>
</data>
<data name="Lightbar" xml:space="preserve">
<value>灯条</value>
</data>
<data name="Lighting" xml:space="preserve">
<value>背光</value>
</data>
<data name="Logo" xml:space="preserve">
<value>徽标</value>
</data>
<data name="Low" xml:space="preserve">
<value>低</value>
</data>
<data name="MatrixAudio" xml:space="preserve">
<value>音频可视化器</value>
</data>
<data name="MatrixBanner" xml:space="preserve">
<value>Anime Matrix 标识</value>
</data>
@@ -333,12 +461,51 @@
<data name="MinRefreshTooltip" xml:space="preserve">
<value>调整刷新率为60Hz以节省电量</value>
</data>
<data name="Minute" xml:space="preserve">
<value>分钟</value>
</data>
<data name="Minutes" xml:space="preserve">
<value>分钟</value>
</data>
<data name="MouseAngleSnapping" xml:space="preserve">
<value>角度校正</value>
</data>
<data name="MouseAutoPowerOff" xml:space="preserve">
<value>自动关闭时间</value>
</data>
<data name="MouseButtonResponse" xml:space="preserve">
<value>按键响应</value>
</data>
<data name="MouseLiftOffDistance" xml:space="preserve">
<value>响应高度</value>
</data>
<data name="MouseLowBatteryWarning" xml:space="preserve">
<value>低于该电量时警告</value>
</data>
<data name="MousePerformance" xml:space="preserve">
<value>性能</value>
</data>
<data name="MouseSynchronize" xml:space="preserve">
<value>和鼠标同步</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>多区域设置</value>
</data>
<data name="MuteMic" xml:space="preserve">
<value>静音麦克风</value>
</data>
<data name="Never" xml:space="preserve">
<value>从不</value>
</data>
<data name="NewUpdates" xml:space="preserve">
<value>有更新</value>
</data>
<data name="NoNewUpdates" xml:space="preserve">
<value>无更新</value>
</data>
<data name="NotConnected" xml:space="preserve">
<value>未连接</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>打开G-Helper窗口</value>
</data>
@@ -355,17 +522,23 @@
<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>外设</value>
</data>
<data name="PictureGif" xml:space="preserve">
<value>图片/动图</value>
</data>
<data name="PlayPause" xml:space="preserve">
<value>播放/暂停</value>
</data>
<data name="PollingRate" xml:space="preserve">
<value>回报率</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>功率限制</value>
</data>
@@ -375,15 +548,27 @@
<data name="PrintScreen" xml:space="preserve">
<value>截图</value>
</data>
<data name="Profile" xml:space="preserve">
<value>配置</value>
</data>
<data name="Quit" xml:space="preserve">
<value>退出</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>有程序正在使用独显并阻止进入集显模式。要让 G-Helper 在设备管理器中重新启动独显吗?(请自行承担风险)</value>
</data>
<data name="RPM" xml:space="preserve">
<value>RPM</value>
<value>转/分钟</value>
</data>
<data name="RunOnStartup" xml:space="preserve">
<value>开机自启</value>
</data>
<data name="ScreenPadDown" xml:space="preserve">
<value>Screenpad亮度降低</value>
</data>
<data name="ScreenPadUp" xml:space="preserve">
<value>Screenpad亮度增加</value>
</data>
<data name="Shutdown" xml:space="preserve">
<value>关机时</value>
</data>
@@ -399,12 +584,39 @@
<data name="StandardMode" xml:space="preserve">
<value>标准模式</value>
</data>
<data name="Start" xml:space="preserve">
<value>启动</value>
</data>
<data name="StartingServices" xml:space="preserve">
<value>启动服务中...</value>
</data>
<data name="StartupError" xml:space="preserve">
<value>启动错误</value>
</data>
<data name="Stop" xml:space="preserve">
<value>停止</value>
</data>
<data name="StopGPUApps" xml:space="preserve">
<value>停止使用 GPU 的程序</value>
</data>
<data name="StoppingServices" xml:space="preserve">
<value>停止服务中...</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<value>切换 Aura 模式</value>
</data>
<data name="ToggleClamshellMode" xml:space="preserve">
<value>自动切换合盖模式</value>
</data>
<data name="ToggleFnLock" xml:space="preserve">
<value>切换 Fn 锁定</value>
</data>
<data name="ToggleMiniled" xml:space="preserve">
<value>切换 MiniLED (如果支持)</value>
</data>
<data name="ToggleScreen" xml:space="preserve">
<value>关闭屏幕</value>
</data>
<data name="Turbo" xml:space="preserve">
<value>增强模式</value>
</data>
@@ -420,6 +632,12 @@
<data name="UltimateMode" xml:space="preserve">
<value>独显直连</value>
</data>
<data name="UndervoltingRisky" xml:space="preserve">
<value>降低电压是实验性的危险功能。 如果对硬件应用的值太低,可能会产生不稳定、关闭现象或造成数据损坏问题。 如果你想要尝试,应先从小值开始,点击应用并测试合适的值。</value>
</data>
<data name="Updates" xml:space="preserve">
<value>更新</value>
</data>
<data name="VersionLabel" xml:space="preserve">
<value>版本</value>
</data>

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
@@ -59,46 +59,46 @@
: 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: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: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: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: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: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: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:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
@@ -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>
@@ -139,7 +142,7 @@
<value>動畫速度</value>
</data>
<data name="AnimeMatrix" xml:space="preserve">
<value>AnimeMatrix</value>
<value>AniMeMatrix</value>
</data>
<data name="AppAlreadyRunning" xml:space="preserve">
<value>程式已正在執行</value>
@@ -147,6 +150,9 @@
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper已經在執行。 請確認右下工作列中的圖示。</value>
</data>
<data name="Apply" xml:space="preserve">
<value>套用</value>
</data>
<data name="ApplyFanCurve" xml:space="preserve">
<value>套用自定義風扇曲線</value>
</data>
@@ -156,30 +162,72 @@
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>自動調整Windows電源模式</value>
</data>
<data name="AsusServicesRunning" xml:space="preserve">
<value>執行中的華碩服務</value>
</data>
<data name="AuraBatteryState" xml:space="preserve">
<value>電池狀態</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>呼吸</value>
</data>
<data name="AuraClockwise" xml:space="preserve">
<value>順時針</value>
</data>
<data name="AuraColorCycle" xml:space="preserve">
<value>循環</value>
<value>彩色循環</value>
</data>
<data name="AuraComet" xml:space="preserve">
<value>彗星</value>
</data>
<data name="AuraCounterClockwise" xml:space="preserve">
<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>彩虹</value>
</data>
<data name="AuraRandomColor" xml:space="preserve">
<value>隨機</value>
</data>
<data name="AuraReact" xml:space="preserve">
<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>
<data name="AutoMode" xml:space="preserve">
<value>自動</value>
</data>
@@ -190,26 +238,47 @@
<value>喚醒時</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>電池模式下自動關閉鍵盤背光的秒數(0 = 不關閉)</value>
</data>
<data name="BacklightTimeoutPlugged" 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>電池健康度</value>
</data>
<data name="BatteryLimitFull" xml:space="preserve">
<value>僅本次將電力充滿</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>BIOS與驅動程式更新 Updates</value>
</data>
<data name="Boot" xml:space="preserve">
<value>開機時</value>
</data>
<data name="BootSound" xml:space="preserve">
<value>開機音效</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>亮度</value>
</data>
<data name="BrightnessDown" xml:space="preserve">
<value>螢幕亮度降低</value>
</data>
<data name="BrightnessUp" xml:space="preserve">
<value>螢幕亮度提高</value>
</data>
<data name="Calibrate" xml:space="preserve">
<value>校準</value>
</data>
<data name="Charging" xml:space="preserve">
<value>充電中</value>
</data>
<data name="Color" xml:space="preserve">
<value>顏色</value>
</data>
@@ -219,6 +288,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>
@@ -229,7 +301,7 @@
<value>正在釋放電力</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>下載更新</value>
<value>下載</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>驅動程式與軟體</value>
@@ -240,6 +312,17 @@
<data name="EcoMode" xml:space="preserve">
<value>節能模式</value>
</data>
<data name="EnableOptimusText" xml:space="preserve">
<value>「Nvidia控制面板」中的顯示模式未設置為自動切換時透過G-Helper的節能模式禁用獨顯可能導致螢幕亮度控制出現問題直到下次重新開機後。
是否繼續?</value>
</data>
<data name="EnableOptimusTitle" xml:space="preserve">
<value>Nvidia顯示模式未設置為自動切換</value>
</data>
<data name="EnergySettings" xml:space="preserve">
<value>電源設定</value>
</data>
<data name="Extra" xml:space="preserve">
<value>更多</value>
</data>
@@ -268,7 +351,7 @@
<value>風扇和電源</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<value> 風扇: </value>
<value>風扇</value>
</data>
<data name="FansPower" xml:space="preserve">
<value>自定義設置</value>
@@ -277,7 +360,7 @@
<value>使用Fn+F1~F12功能時免按下Fn鍵</value>
</data>
<data name="GPUBoost" xml:space="preserve">
<value>Dynamic Boost</value>
<value>動態加速</value>
</data>
<data name="GPUChanging" xml:space="preserve">
<value>切換中...</value>
@@ -306,21 +389,24 @@
<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>高</value>
</data>
<data name="KeyBindings" xml:space="preserve">
<value>按鍵綁定</value>
</data>
<data name="Keyboard" xml:space="preserve">
<value>鍵盤</value>
</data>
<data name="KeyboardAuto" xml:space="preserve">
<value>電池模式時自動降低鍵盤背光亮度以節省電量</value>
<data name="KillGpuApps" xml:space="preserve">
<value>切換至節能模式時,關閉所有正在使用獨顯的程式</value>
</data>
<data name="LaptopBacklight" xml:space="preserve">
<value>背光</value>
</data>
<data name="KillGpuApps" xml:space="preserve">
<value>切換至節能模式時,關閉所有正在使用獨顯的程式</value>
</data>
<data name="LaptopKeyboard" xml:space="preserve">
<value>鍵盤背光:</value>
</data>
@@ -333,9 +419,15 @@
<data name="Lightbar" xml:space="preserve">
<value>燈條</value>
</data>
<data name="Lighting" xml:space="preserve">
<value>亮度</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>
<data name="Low" xml:space="preserve">
<value>低</value>
</data>
<data name="MatrixAudio" xml:space="preserve">
<value>音效視覺化</value>
</data>
@@ -369,12 +461,51 @@
<data name="MinRefreshTooltip" xml:space="preserve">
<value>維持60Hz以節省電量</value>
</data>
<data name="Minute" xml:space="preserve">
<value>分鐘</value>
</data>
<data name="Minutes" xml:space="preserve">
<value>分鐘</value>
</data>
<data name="MouseAngleSnapping" xml:space="preserve">
<value>角度修正</value>
</data>
<data name="MouseAutoPowerOff" xml:space="preserve">
<value>自動關閉電源</value>
</data>
<data name="MouseButtonResponse" xml:space="preserve">
<value>按鍵回應</value>
</data>
<data name="MouseLiftOffDistance" xml:space="preserve">
<value>響應高度(LOD)</value>
</data>
<data name="MouseLowBatteryWarning" xml:space="preserve">
<value>低電量警告</value>
</data>
<data name="MousePerformance" xml:space="preserve">
<value>性能設定</value>
</data>
<data name="MouseSynchronize" xml:space="preserve">
<value>與滑鼠同步</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>多區域</value>
</data>
<data name="MuteMic" xml:space="preserve">
<value>麥克風開關</value>
</data>
<data name="Never" xml:space="preserve">
<value>永不</value>
</data>
<data name="NewUpdates" xml:space="preserve">
<value>新的更新</value>
</data>
<data name="NoNewUpdates" xml:space="preserve">
<value>沒有新的更新</value>
</data>
<data name="NotConnected" xml:space="preserve">
<value>未連線</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>開啟G-Helper視窗</value>
</data>
@@ -396,12 +527,18 @@
<data name="PerformanceMode" xml:space="preserve">
<value>性能模式:</value>
</data>
<data name="Peripherals" xml:space="preserve">
<value>週邊設備</value>
</data>
<data name="PictureGif" xml:space="preserve">
<value>圖片/動圖</value>
</data>
<data name="PlayPause" xml:space="preserve">
<value>播放/暫停</value>
</data>
<data name="PollingRate" xml:space="preserve">
<value>輪循率</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>功率限制</value>
</data>
@@ -411,11 +548,14 @@
<data name="PrintScreen" xml:space="preserve">
<value>截圖</value>
</data>
<data name="Profile" xml:space="preserve">
<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>
@@ -423,6 +563,12 @@
<data name="RunOnStartup" xml:space="preserve">
<value>開機自動開啟</value>
</data>
<data name="ScreenPadDown" xml:space="preserve">
<value>第二觸控螢幕亮度降低</value>
</data>
<data name="ScreenPadUp" xml:space="preserve">
<value>第二觸控螢幕亮度提高</value>
</data>
<data name="Shutdown" xml:space="preserve">
<value>關機時</value>
</data>
@@ -438,12 +584,30 @@
<data name="StandardMode" xml:space="preserve">
<value>標準模式</value>
</data>
<data name="Start" xml:space="preserve">
<value>開始</value>
</data>
<data name="StartingServices" xml:space="preserve">
<value>正在啟動服務</value>
</data>
<data name="StartupError" xml:space="preserve">
<value>啟動錯誤</value>
</data>
<data name="Stop" xml:space="preserve">
<value>停止</value>
</data>
<data name="StopGPUApps" xml:space="preserve">
<value>停止GPU相關程式</value>
</data>
<data name="StoppingServices" xml:space="preserve">
<value>正在停止服務</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<value>切換Aura</value>
</data>
<data name="ToggleClamshellMode" xml:space="preserve">
<value>翻蓋模式 (蓋上筆電但有外接螢幕時,系統仍會持續運行)</value>
</data>
<data name="ToggleFnLock" xml:space="preserve">
<value>免按Fn鍵使用Fn+F1~F12功能</value>
</data>
@@ -468,6 +632,9 @@
<data name="UltimateMode" xml:space="preserve">
<value>獨顯直連</value>
</data>
<data name="UndervoltingRisky" xml:space="preserve">
<value>降壓是一項實驗性且有風險的功能,若設定的值過低,可能造成系統不穩定甚至無預警關機,建議可先嘗試較小的降壓數值,並點擊"套用"來測試適合你的使用狀況</value>
</data>
<data name="Updates" xml:space="preserve">
<value>更新驅動</value>
</data>

BIN
app/Resources/Font.otf Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 362 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 563 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 410 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 481 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 498 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 500 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -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" };
@@ -130,10 +130,16 @@ namespace Ryzen
return CPUName.Contains("AMD") || CPUName.Contains("Ryzen") || CPUName.Contains("Athlon") || CPUName.Contains("Radeon") || CPUName.Contains("AMD Custom APU 0405");
}
public static bool IsRyzen9()
public static bool IsSupportedUV()
{
if (CPUName.Length == 0) Init();
return CPUName.Contains("Ryzen 9");
return CPUName.Contains("Ryzen 9") || CPUName.Contains("4900H") || CPUName.Contains("4800H") || CPUName.Contains("4600H");
}
public static bool IsSupportedUViGPU()
{
if (CPUName.Length == 0) Init();
return CPUName.Contains("6900H") || CPUName.Contains("7945H") || CPUName.Contains("7845H");
}
public static void SetAddresses()

693
app/Settings.Designer.cs generated

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More