Compare commits

..

134 Commits

Author SHA1 Message Date
Serge
01630dc195 Merge branch 'main' of https://github.com/seerge/g-helper 2024-07-12 11:33:47 +02:00
Serge
8ff9d1203b Version bump 2024-07-12 11:33:45 +02:00
Serge
0eb31b75a1 Update README.md 2024-07-12 11:28:31 +02:00
Serge
675317dcc1 Added new device ID for XGM 4090 https://github.com/seerge/g-helper/issues/299#issuecomment-2224819539 2024-07-12 10:37:54 +02:00
Serge
2ed6f1fefb Ultimate mode tweak for GU603VV https://github.com/seerge/g-helper/issues/2825 2024-07-10 17:50:38 +02:00
Serge
b80a069220 Merge branch 'main' of https://github.com/seerge/g-helper 2024-07-10 17:49:33 +02:00
Serge
652ed23bed Tweak for Slash lighting lid-close event https://github.com/seerge/g-helper/issues/2815 2024-07-10 17:49:31 +02:00
Serge
6a71fe5665 Update README.md 2024-07-08 21:40:47 +02:00
Serge
3129741fcd Update README.md 2024-07-08 21:35:31 +02:00
Serge
c2db0fc36d Update README.md 2024-07-08 12:11:19 +02:00
Serge
810d2e5f75 Update README.md 2024-07-07 18:40:37 +02:00
Serge
977ced629d Update bug_report.yml 2024-07-07 18:35:16 +02:00
Serge
ce76537687 Random color support for some strix RGB modes #2807 2024-07-07 00:22:03 +02:00
Serge
ce3ccf965b Merge branch 'main' of https://github.com/seerge/g-helper 2024-07-07 00:12:48 +02:00
Serge
7b1e088f0b Random color support for some strix RGB modes https://github.com/seerge/g-helper/discussions/2807 2024-07-07 00:12:46 +02:00
Serge
7e79da221e Update README.md 2024-07-06 13:15:51 +02:00
IceStormNG
35c7f4283e Support for the TX Gaming Mini (P519) (#2813) 2024-07-06 09:47:55 +02:00
Serge
d0d409b37f Model name tweak https://github.com/seerge/g-helper/issues/2802 2024-07-05 23:27:38 +02:00
Serge
1c1cdf1bec Force miniled status on start / display toggle for G843JYR https://github.com/seerge/g-helper/issues/2802 2024-07-05 21:48:22 +02:00
Serge
d177fac656 Merge branch 'main' of https://github.com/seerge/g-helper 2024-07-05 20:39:08 +02:00
Serge
7591eb1043 ROG Keris II Ace #2810 2024-07-05 20:39:05 +02:00
IceStormNG
fd66254130 Remove unnecessary overrides from M4 Air (#2812) 2024-07-05 20:18:25 +02:00
IceStormNG
f8efcb047a Support for ROG Pugio (P503) (#2811) 2024-07-05 20:16:54 +02:00
Serge
aaf2fb15f4 ROG Keris II Ace https://github.com/seerge/g-helper/issues/2810 2024-07-05 20:01:29 +02:00
Serge
e68c29fc6f Cleanup 2024-07-05 18:48:47 +02:00
Serge
5ddc93d275 Merge branch 'main' of https://github.com/seerge/g-helper 2024-07-05 15:33:03 +02:00
Serge
fe6f3bc3bf Updated to .NET8 2024-07-05 15:33:01 +02:00
Serge
9bf31c3235 Update README.md 2024-07-05 12:30:33 +02:00
Serge
0f333e90c3 Added M7400 to OLED list https://github.com/seerge/g-helper/issues/2806 2024-07-04 23:31:38 +02:00
Serge
33c4406f95 Merge branch 'main' of https://github.com/seerge/g-helper 2024-07-04 23:28:31 +02:00
Serge
2abae6ac86 Added N7400 to OLED list https://github.com/seerge/g-helper/issues/2806 2024-07-04 23:06:46 +02:00
Serge
c795807c75 Update README.md 2024-07-04 20:28:44 +02:00
Serge
16bdb5d32a Update README.md 2024-07-02 12:05:22 +02:00
Serge
773c50579c Version bump 2024-07-02 11:40:02 +02:00
IceStormNG
59bfe845c6 Fixed DPI support for TuF M3 Gen II (#2795)
* Support for Strix Carry (P508)

* Fixes polling rate, angle snapping and debounce for Gladius II Origin.

* The Gen2 version of the TuF M3 uses 0-100 for brightness.

* Adds support for ROG Strix Impact III (P518)

* Import/Export feature for mice.

* Suppor for Strix Impact (P303)

* Support for Strix Impact II Electro Punk

* Strix Carry has 50 DPI minimum and increments of 50.

* Respect top-most setting of GHelper

* Fixes to the buttons to be wider to fit longer translations.

* Basic support for the Galdius III EVA02

* Gladius wireless and wired PIDs were switched

* Add support for the chinese variant of the M4 Wireless, the P310

* Apparently there is another Gladius III that is not wireless at all. Renaming the wireless to make it a little less confusing.

* Adds Support for Galdius III (wired) P514

* Support for P504 Glaidus II PKN

* Support for the ROG Keris wired mouse P509

* Fixed support for TUF M3 Gen II
2024-06-30 11:11:53 +02:00
Serge
95909bd951 Re-apply charge limit on every wake-up https://github.com/seerge/g-helper/issues/2785 2024-06-28 11:15:28 +02:00
Serge
ac89645476 UI Fixes https://github.com/seerge/g-helper/issues/2775 2024-06-25 11:03:26 +02:00
Serge
a33089921e Tuf M4 Air profiles number https://github.com/seerge/g-helper/issues/2729 2024-06-24 14:41:22 +02:00
Serge
23647e268e Improved ICM profile reading https://github.com/seerge/g-helper/issues/2763 2024-06-22 19:39:05 +02:00
Serge
2df256ca66 Merge branch 'main' of https://github.com/seerge/g-helper 2024-06-22 12:55:44 +02:00
Serge
c5b9fda3de Version Bump 2024-06-22 12:55:42 +02:00
Serge
7bfc9e0bda Cleanup 2024-06-22 12:50:29 +02:00
Serge
b8fa771f36 New Crowdin updates (#2708)
* New translations strings.resx (Turkish)

* New translations strings.resx (Turkish)

* New translations strings.resx (Hungarian)

* New translations strings.resx (Hungarian)

* New translations strings.resx (Hungarian)

* New translations strings.resx (Hungarian)

* New translations strings.resx (Polish)
2024-06-22 12:50:17 +02:00
Serge
c0bb6015a0 Backlitht zones for on-battery state https://github.com/seerge/g-helper/issues/2739 2024-06-22 12:48:16 +02:00
Serge
181f8e4a0f GladiusIIWireless DPI colors https://github.com/seerge/g-helper/issues/2762 2024-06-21 15:12:29 +02:00
Serge
ab76e524cd Asus Gladius II WIRELESS Battery reading tweak https://github.com/seerge/g-helper/issues/2762 2024-06-21 13:21:36 +02:00
Serge
9686f4ed38 Gladius II Wireless https://github.com/seerge/g-helper/issues/2762 2024-06-21 12:43:22 +02:00
Serge
f21b1e2045 Separate lighting zone controls for battery/AC mode https://github.com/seerge/g-helper/issues/2739 2024-06-20 13:07:52 +02:00
Serge
ff92229ecb TUFM4Air https://github.com/seerge/g-helper/issues/2729 2024-06-14 17:38:59 +02:00
Serge
ea5964d8bb RGB Tweaks for GX650 https://github.com/seerge/g-helper/discussions/2691#discussioncomment-9765907 2024-06-14 17:26:40 +02:00
Serge
c7c147882d Update README.md 2024-06-11 11:16:07 +02:00
Serge
26423c9d16 Add files via upload 2024-06-11 11:14:59 +02:00
Serge
0ff362a75e Add files via upload 2024-06-10 16:12:03 +02:00
Serge
d76dcf9830 Update README.zh-CN.md 2024-06-10 12:30:05 +02:00
Serge
9469cc06de Update README.md 2024-06-10 11:39:51 +02:00
Serge
67677adad6 Add files via upload 2024-06-10 11:20:50 +02:00
Serge
8e9fea3a69 Charge limit cleanup 2024-06-09 12:12:54 +02:00
Serge
89951e1464 Merge branch 'main' of https://github.com/seerge/g-helper 2024-06-09 12:11:12 +02:00
Serge
c7d6e9ee70 Postpone gamut UI tweak 2024-06-09 12:11:08 +02:00
Serge
59f7500a36 New Crowdin updates (#2638)
* New translations strings.resx (Chinese Traditional)

* New translations strings.resx (Chinese Traditional)

* New translations strings.resx (Turkish)

* New translations strings.resx (Chinese Traditional)

* New translations strings.resx (German)

* New translations strings.resx (Danish)

* New translations strings.resx (Romanian)

* New translations strings.resx (French)

* New translations strings.resx (Spanish)

* New translations strings.resx (Hungarian)

* New translations strings.resx (Italian)

* New translations strings.resx (Korean)

* New translations strings.resx (Lithuanian)

* New translations strings.resx (Polish)

* New translations strings.resx (Portuguese)

* New translations strings.resx (Ukrainian)

* New translations strings.resx (Chinese Simplified)

* New translations strings.resx (Vietnamese)

* New translations strings.resx (Portuguese, Brazilian)

* New translations strings.resx (Indonesian)

* New translations strings.resx (Spanish)

* New translations strings.resx (Lithuanian)

* New translations strings.resx (Chinese Traditional)

* New translations strings.resx (Turkish)

* New translations strings.resx (Japanese)

* New translations strings.resx (German)

* New translations strings.resx (Danish)

* New translations strings.resx (Romanian)

* New translations strings.resx (French)

* New translations strings.resx (Hungarian)

* New translations strings.resx (Italian)

* New translations strings.resx (Korean)

* New translations strings.resx (Polish)

* New translations strings.resx (Portuguese)

* New translations strings.resx (Ukrainian)

* New translations strings.resx (Chinese Simplified)

* New translations strings.resx (Vietnamese)

* New translations strings.resx (Portuguese, Brazilian)

* New translations strings.resx (Indonesian)

* New translations strings.resx (Lithuanian)
2024-06-09 11:10:29 +02:00
Serge
7d0bc58abd Update SECURITY.md 2024-06-06 21:13:47 +02:00
Serge
c5550d1fd0 Update README.md 2024-06-06 21:10:29 +02:00
Serge
a7d5b38a1b Update README.zh-CN.md 2024-06-06 19:26:11 +02:00
Serge
07d93955f6 Update README.md 2024-06-06 19:24:14 +02:00
Serge
abc5b25800 Reset Gamut dropdown to default on Dimming change https://github.com/seerge/g-helper/issues/2543 2024-06-06 11:57:15 +02:00
Serge
5da61ded0f Merge branch 'main' of https://github.com/seerge/g-helper 2024-06-06 11:31:32 +02:00
Serge
583d706cd2 Per-key RGB checkbox https://github.com/seerge/g-helper/discussions/2691 2024-06-06 11:31:30 +02:00
Serge
8fe7a535af Update README.zh-CN.md 2024-06-05 09:02:37 +02:00
Serge
6523540834 Cleanup 2024-06-04 23:00:39 +02:00
Serge
211d8d3e61 Cleanup 2024-06-04 22:54:12 +02:00
Serge
f3723e9d6f Merge branch 'main' of https://github.com/seerge/g-helper 2024-06-04 22:31:56 +02:00
Serge
d47990c056 Limits 2024-06-04 22:31:54 +02:00
Luca
c2a68d3022 Battery Percentage Pattern for Slash Lighting (#2685)
* quicksave / testing

* implemented battery charge pattern

* changed defaults

* immediately refresh pattern

* cleaned up comments
2024-06-04 22:29:14 +02:00
Serge
26e26b9701 Cleanup 2024-06-04 12:13:22 +02:00
Serge
a315f27a4f Version bump 2024-06-03 15:59:58 +02:00
Serge
26642a0020 Update README.md 2024-06-03 11:37:13 +02:00
Serge
6f1236b16c UI Tweaks 2024-06-03 11:29:44 +02:00
Serge
f07c481b3b XGM Init after connection 2024-06-03 01:53:42 +02:00
Serge
c30fcd6ba7 APU Skin temp limit slider https://github.com/seerge/g-helper/issues/2673 2024-06-02 22:39:17 +02:00
Serge
53bb4b8760 Charge limits for GA403 2024-06-02 12:28:03 +02:00
Serge
34ec26dba0 Charge limits for GA503R 2024-06-01 22:33:16 +02:00
Serge
b6c7da53c1 Extended list of Dynamic Lighting model list 2024-06-01 16:36:57 +02:00
Serge
344a0269ef Dynamic Lighting detection 2024-06-01 16:15:00 +02:00
Serge
5157357c8b Dynamic lighting detection 2024-06-01 16:14:24 +02:00
Serge
ad622f3924 Merge branch 'main' of https://github.com/seerge/g-helper 2024-06-01 12:47:14 +02:00
Serge
2799936909 Added Ally 2024 RC72 model name 2024-06-01 12:47:12 +02:00
Serge
134ca5d680 Update README.md 2024-06-01 11:39:06 +02:00
Serge
d076765d5c Unsupported charge limits for GU605 2024-06-01 11:27:23 +02:00
Serge
9514caef94 Removed unsupported charge limits 2024-06-01 11:19:34 +02:00
Serge
64b5547126 Version bump 2024-06-01 11:17:24 +02:00
Serge
d133abba1c Merge branch 'main' of https://github.com/seerge/g-helper 2024-06-01 11:16:12 +02:00
Serge
bf4eae6081 Removed unsupported charge limits https://github.com/seerge/g-helper/discussions/2408 2024-06-01 11:16:10 +02:00
Serge
8ff9b07a60 Cleanup 2024-05-31 15:37:54 +02:00
Serge
1011469628 Update FUNDING.yml 2024-05-31 15:23:23 +02:00
Serge
22434ff86a Update FUNDING.yml 2024-05-31 15:21:27 +02:00
Serge
7f0c3143f4 Update README.md 2024-05-31 15:18:55 +02:00
Hoang Pham Anh Duy
4216c2d73d Close mouse settings on main window close (#2654) 2024-05-31 14:25:14 +02:00
IceStormNG
34161eee7c Support for ROG Keris P509 (#2655)
* Support for Strix Carry (P508)

* Fixes polling rate, angle snapping and debounce for Gladius II Origin.

* The Gen2 version of the TuF M3 uses 0-100 for brightness.

* Adds support for ROG Strix Impact III (P518)

* Import/Export feature for mice.

* Suppor for Strix Impact (P303)

* Support for Strix Impact II Electro Punk

* Strix Carry has 50 DPI minimum and increments of 50.

* Respect top-most setting of GHelper

* Fixes to the buttons to be wider to fit longer translations.

* Basic support for the Galdius III EVA02

* Gladius wireless and wired PIDs were switched

* Add support for the chinese variant of the M4 Wireless, the P310

* Apparently there is another Gladius III that is not wireless at all. Renaming the wireless to make it a little less confusing.

* Adds Support for Galdius III (wired) P514

* Support for P504 Glaidus II PKN

* Support for the ROG Keris wired mouse P509
2024-05-30 10:50:18 +02:00
Serge
6129f79b68 Update Strings.resx 2024-05-30 10:29:29 +02:00
Serge
01fc5a3265 Update README.md 2024-05-29 14:24:07 +02:00
IceStormNG
fd5c7cd8e4 Support for P504 Glaidus II PNK LTD (#2651)
* Support for Strix Carry (P508)

* Fixes polling rate, angle snapping and debounce for Gladius II Origin.

* The Gen2 version of the TuF M3 uses 0-100 for brightness.

* Adds support for ROG Strix Impact III (P518)

* Import/Export feature for mice.

* Suppor for Strix Impact (P303)

* Support for Strix Impact II Electro Punk

* Strix Carry has 50 DPI minimum and increments of 50.

* Respect top-most setting of GHelper

* Fixes to the buttons to be wider to fit longer translations.

* Basic support for the Galdius III EVA02

* Gladius wireless and wired PIDs were switched

* Add support for the chinese variant of the M4 Wireless, the P310

* Apparently there is another Gladius III that is not wireless at all. Renaming the wireless to make it a little less confusing.

* Adds Support for Galdius III (wired) P514

* Support for P504 Glaidus II PKN
2024-05-29 11:19:47 +02:00
Serge
ced4eac341 Gladius II Origin PNK 2024-05-29 00:46:28 +02:00
Serge
51c7738f15 Factory Defaults tweak 2024-05-28 19:36:11 +02:00
Hoang Pham Anh Duy
b62fe46759 Polling rate fix for Keris Wireless Aimpoint (#2644)
On newest firmware (April 2024), on packet 13, instead start from 0 for polling rate values, they bump it to 96.
2024-05-28 19:34:38 +02:00
Serge
51c099163e Toast corner aliasing https://github.com/seerge/g-helper/issues/2642 2024-05-28 10:25:36 +02:00
Serge
61c114625a Version bump 2024-05-26 12:59:03 +02:00
Serge
f794110c2a Slash Enable tweaks 2024-05-26 12:49:48 +02:00
Serge
740a10fed8 Slash Enable flag 2024-05-26 12:41:26 +02:00
Serge
696f6f046f Merge branch 'main' of https://github.com/seerge/g-helper 2024-05-25 18:17:34 +02:00
Serge
79c0db6c4c Aura modes for Strix devices 2024-05-25 18:17:32 +02:00
Serge
008a00e121 Update README.md 2024-05-25 11:46:33 +02:00
Serge
52952e74db Slash Wake up 2024-05-24 17:12:42 +02:00
Serge
87ee3e4681 Slash Wake Up commands 2024-05-24 17:11:59 +02:00
Serge
05434f5a00 Update README.md 2024-05-23 12:44:50 +02:00
Serge
7e4de0d064 Update README.md 2024-05-23 10:26:39 +02:00
Serge
51b7e8e9bd New translations strings.resx (Chinese Traditional) (#2624) 2024-05-23 09:15:39 +02:00
Serge
bacea8ede1 Version bump 2024-05-22 21:34:49 +02:00
Serge
e69b6ea5b0 Merge branch 'main' of https://github.com/seerge/g-helper 2024-05-22 16:54:39 +02:00
Serge
cf142f847d Update section tweaks 2024-05-22 16:54:37 +02:00
Serge
fabc7e194b Update README.md 2024-05-21 10:47:44 +02:00
Serge
98d255d8fd New translations strings.resx (Ukrainian) (#2618) 2024-05-21 10:43:51 +02:00
IceStormNG
1d1cef12c3 Support for P514 (Gladius III) (#2614)
* Support for Strix Carry (P508)

* Fixes polling rate, angle snapping and debounce for Gladius II Origin.

* The Gen2 version of the TuF M3 uses 0-100 for brightness.

* Adds support for ROG Strix Impact III (P518)

* Import/Export feature for mice.

* Suppor for Strix Impact (P303)

* Support for Strix Impact II Electro Punk

* Strix Carry has 50 DPI minimum and increments of 50.

* Respect top-most setting of GHelper

* Fixes to the buttons to be wider to fit longer translations.

* Basic support for the Galdius III EVA02

* Gladius wireless and wired PIDs were switched

* Add support for the chinese variant of the M4 Wireless, the P310

* Apparently there is another Gladius III that is not wireless at all. Renaming the wireless to make it a little less confusing.

* Adds Support for Galdius III (wired) P514
2024-05-20 10:35:19 +02:00
Serge
9c3d19c7a4 New Crowdin updates (#2600)
* New translations strings.resx (Chinese Traditional)

* New translations strings.resx (Chinese Traditional)
2024-05-17 11:06:04 +02:00
Serge
06b4df29cb Exception handling https://github.com/seerge/g-helper/issues/2596 2024-05-15 23:19:20 +02:00
Serge
2628695bbc Visual Modes cleanup 2024-05-15 23:14:33 +02:00
Serge
8c5fc0f643 Config tweaks 2024-05-15 19:08:11 +02:00
Serge
cf3c61e467 Config setting for 4Zone RGB 2024-05-15 18:57:51 +02:00
Serge
9a3b689d29 Merge branch 'main' of https://github.com/seerge/g-helper 2024-05-15 18:23:37 +02:00
Serge
ae94f66699 Added G614JI to the list of 4-zone RGB models https://github.com/seerge/g-helper/issues/1641#issuecomment-2112928673 2024-05-15 18:23:34 +02:00
Serge
71b5e24f63 New Crowdin updates (#2582)
* New translations strings.resx (Spanish)

* New translations strings.resx (Turkish)
2024-05-14 11:11:07 +02:00
Serge
3139252740 Merge branch 'main' of https://github.com/seerge/g-helper 2024-05-13 17:05:42 +02:00
Serge
50a020dd58 Version bump 2024-05-13 17:05:40 +02:00
Serge
c804d6a6b1 New Crowdin updates (#2579)
* New translations strings.resx (Chinese Traditional)

* New translations strings.resx (Chinese Traditional)
2024-05-12 10:49:49 +02:00
Serge
f2b3f2fe64 New Crowdin updates (#2578)
* New translations strings.resx (Turkish)

* New translations strings.resx (Chinese Traditional)

* New translations strings.resx (German)

* New translations strings.resx (Danish)

* New translations strings.resx (Romanian)

* New translations strings.resx (French)

* New translations strings.resx (Spanish)

* New translations strings.resx (Hungarian)

* New translations strings.resx (Italian)

* New translations strings.resx (Korean)

* New translations strings.resx (Lithuanian)

* New translations strings.resx (Polish)

* New translations strings.resx (Portuguese)

* New translations strings.resx (Ukrainian)

* New translations strings.resx (Chinese Simplified)

* New translations strings.resx (Vietnamese)

* New translations strings.resx (Portuguese, Brazilian)

* New translations strings.resx (Indonesian)
2024-05-11 23:18:23 +02:00
68 changed files with 2706 additions and 384 deletions

13
.github/FUNDING.yml vendored
View File

@@ -1,13 +0,0 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA

View File

@@ -16,10 +16,6 @@ body:
required: true
validations:
required: true
- type: markdown
attributes:
value: |
<b>NOTICE:</b> Issues like "my fans are not working properly" will be closed without answer. Neither G-Helper nor Armoury don't control fans in realtime anyhow. Fans are <b>always</b> controlled by BIOS, even when you set a custom fan curve.
- type: textarea
id: description
attributes:

4
.github/SECURITY.md vendored
View File

@@ -4,8 +4,8 @@
| Version | Supported |
| ------- | ------------------ |
| 0.151+ | :white_check_mark: |
| < 0.151 | :x: |
| 0.170+ | :white_check_mark: |
| < 0.170 | :x: |
## Reporting a Vulnerability

View File

@@ -19,7 +19,7 @@ jobs:
uses: actions/setup-dotnet@v3
with:
dotnet-version: |
7.0.x
8.0.x
- name: Build
run: |
dotnet build app/GHelper.sln

View File

@@ -18,13 +18,13 @@ jobs:
uses: actions/setup-dotnet@v3
with:
dotnet-version: |
7.0.x
8.0.x
- name: Publish
run: |
dotnet publish app/GHelper.sln --configuration Release --runtime win-x64 -p:PublishSingleFile=true --no-self-contained
powershell Compress-Archive app/bin/x64/Release/net7.0-windows/win-x64/publish/GHelper.exe GHelper.zip
powershell Compress-Archive app/bin/x64/Release/net8.0-windows/win-x64/publish/GHelper.exe GHelper.zip
- name: Upload
env:
GH_TOKEN: ${{ github.token }}
run: |
gh release upload ${{ github.ref_name }} app/bin/x64/Release/net7.0-windows/win-x64/publish/GHelper.exe GHelper.zip
gh release upload ${{ github.ref_name }} app/bin/x64/Release/net8.0-windows/win-x64/publish/GHelper.exe GHelper.zip

View File

@@ -14,6 +14,7 @@ namespace GHelper.AnimeMatrix
SettingsForm settings;
System.Timers.Timer matrixTimer = default!;
System.Timers.Timer slashTimer = default!;
public AnimeMatrixDevice? deviceMatrix;
public SlashDevice? deviceSlash;
@@ -45,6 +46,7 @@ namespace GHelper.AnimeMatrix
matrixTimer = new System.Timers.Timer(100);
matrixTimer.Elapsed += MatrixTimer_Elapsed;
}
catch (Exception ex)
{
@@ -86,8 +88,9 @@ namespace GHelper.AnimeMatrix
if (brightness == 0 || (auto && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online) || (lid && lidClose))
{
deviceSlash.Init();
deviceSlash.SetOptions(false, 0, 0);
deviceSlash.SetEnabled(false);
//deviceSlash.Init();
//deviceSlash.SetOptions(false, 0, 0);
deviceSlash.SetSleepActive(false);
}
else
@@ -98,8 +101,9 @@ namespace GHelper.AnimeMatrix
_wakeUp = false;
}
deviceSlash.SetEnabled(true);
deviceSlash.Init();
switch ((SlashMode)running)
{
case SlashMode.Static:
@@ -112,12 +116,18 @@ namespace GHelper.AnimeMatrix
deviceSlash.SetStatic(brightness);
}
break;
case SlashMode.BatteryLevel:
// call tick to immediately update the pattern
SlashTimer_start();
SlashTimer_tick();
break;
default:
deviceSlash.SetMode((SlashMode)running);
deviceSlash.SetOptions(true, brightness, inteval);
deviceSlash.Save();
break;
}
// kill the timer if we are not displaying battery pattern
deviceSlash.SetSleepActive(true);
}
@@ -130,7 +140,7 @@ namespace GHelper.AnimeMatrix
if (deviceSlash is not null)
{
deviceSlash.SetLidMode(matrixLid);
deviceSlash.SetLidMode(true);
}
if (matrixLid || force)
@@ -235,7 +245,6 @@ namespace GHelper.AnimeMatrix
matrixTimer.Stop();
}
private void MatrixTimer_Elapsed(object? sender, ElapsedEventArgs e)
{
@@ -253,13 +262,58 @@ namespace GHelper.AnimeMatrix
}
public void SetMatrixClock()
{
deviceMatrix.SetBuiltInAnimation(false);
StartMatrixTimer(1000);
Logger.WriteLine("Matrix Clock");
}
private void SlashTimer_start(int interval = 60000)
{
// 100% to 0% in 1hr = 1% every 36 seconds
// 1 bracket every 14.2857 * 36s = 514s ~ 8m 30s
// only ~5 actually distinguishable levels, so refresh every <= 514/5 ~ 100s
// default is 60s
// create the timer if first call
// this way, the timer only spawns if user tries to use battery pattern
if(slashTimer == default(System.Timers.Timer))
{
slashTimer = new System.Timers.Timer(interval);
slashTimer.Elapsed += SlashTimer_elapsed;
slashTimer.AutoReset = true;
}
// only write if interval changed
if(slashTimer.Interval != interval)
{
slashTimer.Interval = interval;
}
slashTimer.Start();
}
private void SlashTimer_elapsed(object? sender, ElapsedEventArgs e)
{
SlashTimer_tick();
}
private void SlashTimer_tick()
{
if (deviceSlash is null) return;
//kill timer if called but not in battery pattern mode
if((SlashMode)AppConfig.Get("matrix_running", 0) != SlashMode.BatteryLevel)
{
slashTimer.Stop();
slashTimer.Dispose();
return;
}
deviceSlash.SetBatteryPattern(AppConfig.Get("matrix_brightness", 0));
}
public void Dispose()
{
@@ -395,7 +449,6 @@ namespace GHelper.AnimeMatrix
deviceMatrix.Present();
}
public void OpenMatrixPicture()
{
string fileName = null;

View File

@@ -1,5 +1,7 @@
using GHelper.AnimeMatrix.Communication;
using System.Management;
using System.Text;
using System.Timers;
namespace GHelper.AnimeMatrix
{
@@ -20,7 +22,8 @@ namespace GHelper.AnimeMatrix
GameOver,
Start,
Buzzer,
Static
Static,
BatteryLevel,
}
internal class SlashPacket : Packet
@@ -54,7 +57,9 @@ namespace GHelper.AnimeMatrix
{ SlashMode.GameOver, "Game Over"},
{ SlashMode.Start, "Start"},
{ SlashMode.Buzzer, "Buzzer"},
{ SlashMode.Static, "Static"},
{ SlashMode.BatteryLevel, "Battery Level"}
};
private static Dictionary<SlashMode, byte> modeCodes = new Dictionary<SlashMode, byte>
@@ -87,6 +92,8 @@ namespace GHelper.AnimeMatrix
public void WakeUp()
{
Set(Packet<SlashPacket>(Encoding.ASCII.GetBytes("ASUS Tech.Inc.")), "SlashWakeUp");
Set(Packet<SlashPacket>(0xC2), "SlashWakeUp");
Set(Packet<SlashPacket>(0xD1, 0x01, 0x00, 0x01), "SlashWakeUp");
}
public void Init()
@@ -95,6 +102,11 @@ namespace GHelper.AnimeMatrix
Set(Packet<SlashPacket>(0xD2, 0x02, 0x01, 0x08, 0xAB), "SlashInit");
}
public void SetEnabled(bool status = true)
{
Set(Packet<SlashPacket>(0xD8, 0x02, 0x00, 0x01, status ? (byte)0x00 : (byte)0x80), $"SlashEnable {status}");
}
public void Save()
{
Set(Packet<SlashPacket>(0xD4, 0x00, 0x00, 0x01, 0xAB), "SlashSave");
@@ -120,7 +132,50 @@ namespace GHelper.AnimeMatrix
public void SetStatic(int brightness = 0)
{
SetCustom(Enumerable.Repeat((byte)(brightness * 85.333), 7).ToArray());
}
public static double GetBatteryChargePercentage()
{
double batteryCharge = 0;
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Battery");
foreach (ManagementObject battery in searcher.Get())
{
batteryCharge = Convert.ToDouble(battery["EstimatedChargeRemaining"]);
break; // Assuming only one battery
}
}
catch (ManagementException e)
{
Console.WriteLine("An error occurred while querying for WMI data: " + e.Message);
}
return batteryCharge;
}
private byte[] GetBatteryPattern(int brightness, double percentage)
{
// because 7 segments, within each led segment represents a percentage bracket of (100/7 = 14.2857%)
// set brightness to reflect battery's percentage within that range
int bracket = (int)Math.Floor(percentage / 14.2857);
if(bracket >= 7) return Enumerable.Repeat((byte)(brightness * 85.333), 7).ToArray();
byte[] batteryPattern = Enumerable.Repeat((byte)(0x00), 7).ToArray();
for (int i = 6; i > 6-bracket; i--)
{
batteryPattern[i] = (byte)(brightness * 85.333);
}
//set the "selected" bracket to the percentage of that bracket filled from 0 to 255 as a hex
batteryPattern[6-bracket] = (byte)(((percentage % 14.2857) * brightness * 85.333) / 14.2857);
return batteryPattern;
}
public void SetBatteryPattern(int brightness)
{
SetCustom(GetBatteryPattern(brightness, 100*(GetBatteryChargePercentage()/AppConfig.Get("charge_limit",100))));
}
public void SetCustom(byte[] data)

View File

@@ -109,7 +109,8 @@ public static class AppConfig
break;
}
}
} catch (Exception ex)
}
catch (Exception ex)
{
Logger.WriteLine(ex.Message);
}
@@ -195,6 +196,11 @@ public static class AppConfig
return Get(name) != 0;
}
public static bool IsOnBattery(string zone)
{
return Get(zone + "_bat", Get(zone)) != 0;
}
public static string GetString(string name, string empty = null)
{
if (config.ContainsKey(name))
@@ -337,7 +343,7 @@ public static class AppConfig
public static bool IsAlly()
{
return ContainsModel("RC71");
return ContainsModel("RC71") || ContainsModel("RC72");
}
public static bool NoMKeys()
@@ -411,7 +417,7 @@ public static class AppConfig
public static bool IsOLED()
{
return ContainsModel("OLED") || IsSlash() || ContainsModel("M7600") || ContainsModel("UX64") || ContainsModel("UX34") || ContainsModel("UX53") || ContainsModel("K360") || ContainsModel("X150") || ContainsModel("M350") || ContainsModel("K650") || ContainsModel("UM53") || ContainsModel("K660") || ContainsModel("UX84") || ContainsModel("M650") || ContainsModel("K340") || ContainsModel("K350") || ContainsModel("M140") || ContainsModel("UM340") || ContainsModel("S540");
return ContainsModel("OLED") || IsSlash() || ContainsModel("M7600") || ContainsModel("UX64") || ContainsModel("UX34") || ContainsModel("UX53") || ContainsModel("K360") || ContainsModel("X150") || ContainsModel("M350") || ContainsModel("K650") || ContainsModel("UM53") || ContainsModel("K660") || ContainsModel("UX84") || ContainsModel("M650") || ContainsModel("K340") || ContainsModel("K350") || ContainsModel("M140") || ContainsModel("UM340") || ContainsModel("S540") || ContainsModel("M7400");
}
public static bool IsNoOverdrive()
@@ -429,11 +435,30 @@ public static class AppConfig
return ContainsModel("Strix") || ContainsModel("Scar") || ContainsModel("G703G");
}
public static bool IsStrixLimitedRGB()
public static bool IsAdvancedRGB()
{
return (ContainsModel("G614JV_") || ContainsModel("G614JZ") || ContainsModel("G512LI") || ContainsModel("G513R") || ContainsModel("G713PV") || ContainsModel("G513IE") || ContainsModel("G713RC") || ContainsModel("G513QM") || ContainsModel("G531G")) && !Is("per_key_rgb");
return IsStrix() || ContainsModel("GX650");
}
public static bool IsBacklightZones()
{
return IsStrix() || IsZ13();
}
public static bool IsStrixLimitedRGB()
{
return ContainsModel("G512LI") || ContainsModel("G513R") || ContainsModel("G713PV") || ContainsModel("G513IE") || ContainsModel("G713RC") || ContainsModel("G513QM") || ContainsModel("G531G");
}
public static bool IsPossible4ZoneRGB()
{
return ContainsModel("G614JI_") || ContainsModel("G614JV_") || ContainsModel("G614JZ") || IsStrixLimitedRGB();
}
public static bool Is4ZoneRGB()
{
return IsPossible4ZoneRGB() && !Is("per_key_rgb");
}
public static bool IsNoAirplaneMode()
{
@@ -502,7 +527,7 @@ public static class AppConfig
public static bool NoAutoUltimate()
{
return ContainsModel("G614") || ContainsModel("GU604") || ContainsModel("FX507") || ContainsModel("G513") || ContainsModel("FA617") || ContainsModel("G834") || ContainsModel("GA403") || ContainsModel("GU605");
return ContainsModel("G614") || ContainsModel("GU604") || ContainsModel("FX507") || ContainsModel("G513") || ContainsModel("FA617") || ContainsModel("G834") || ContainsModel("GA403") || ContainsModel("GU605") || ContainsModel("GU603VV");
}
@@ -620,6 +645,21 @@ public static class AppConfig
return IsAlly() || Is("stop_ac");
}
public static bool IsChargeLimit6080()
{
return ContainsModel("GA403U") || ContainsModel("GU605") || ContainsModel("GA503R") || (IsTUF() && !(ContainsModel("FX507Z") || ContainsModel("FA617")));
}
// 2024 Models support Dynamic Lighting
public static bool IsDynamicLighting()
{
return IsSlash() || ContainsModel("JIR") || ContainsModel("JZR") || ContainsModel("JVR") || ContainsModel("JYR") || ContainsModel("FA607P") || ContainsModel("FX607J") || ContainsModel("FA507U");
}
public static bool IsForceMiniled()
{
return ContainsModel("G834JYR") || Is("force_miniled");
}
}

View File

@@ -1,5 +1,4 @@
using GHelper.Helpers;
using System.Diagnostics;
using System.Diagnostics;
namespace GHelper.Battery
{
@@ -37,6 +36,12 @@ namespace GHelper.Battery
if (limit < 0) limit = AppConfig.Get("charge_limit");
if (limit < 40 || limit > 100) return;
if (AppConfig.IsChargeLimit6080())
{
if (limit > 80) limit = 100;
else if (limit < 60) limit = 60;
}
Program.acpi.DeviceSet(AsusACPI.BatteryLimit, limit, "BatteryLimit");
AppConfig.Set("charge_limit", limit);

View File

@@ -60,6 +60,13 @@ namespace GHelper.Display
}
}
SetMiniled(miniled);
InitScreen();
}
public void SetMiniled(int miniled = -1)
{
if (miniled >= 0)
{
if (Program.acpi.DeviceGet(AsusACPI.ScreenMiniled1) >= 0)
@@ -70,8 +77,12 @@ namespace GHelper.Display
Thread.Sleep(100);
}
}
}
InitScreen();
public void InitMiniled()
{
if (AppConfig.IsForceMiniled())
SetMiniled(AppConfig.Get("miniled"));
}
public void ToogleFHD()

View File

@@ -51,6 +51,8 @@ namespace GHelper.Display
public const int DefaultColorTemp = 50;
public static bool forceVisual = false;
public static bool skipGamut = false;
static VisualControl()
{
brightnessTimer.Elapsed += BrightnessTimerTimer_Elapsed;
@@ -96,14 +98,49 @@ namespace GHelper.Display
foreach (FileInfo icm in icms)
{
//Logger.WriteLine(icm.FullName);
if (icm.Name.Contains("sRGB")) _modes.Add(isVivo ? SplendidGamut.VivoSRGB : SplendidGamut.sRGB, "Gamut: sRGB");
if (icm.Name.Contains("DCIP3")) _modes.Add(isVivo ? SplendidGamut.VivoDCIP3 : SplendidGamut.DCIP3, "Gamut: DCIP3");
if (icm.Name.Contains("DisplayP3")) _modes.Add(isVivo ? SplendidGamut.ViviDisplayP3 : SplendidGamut.DisplayP3, "Gamut: DisplayP3");
if (icm.Name.Contains("sRGB"))
{
try
{
_modes.Add(isVivo ? SplendidGamut.VivoSRGB : SplendidGamut.sRGB, "Gamut: sRGB");
Logger.WriteLine(icm.FullName + " sRGB");
}
catch
{
}
}
if (icm.Name.Contains("DCIP3"))
{
try
{
_modes.Add(isVivo ? SplendidGamut.VivoDCIP3 : SplendidGamut.DCIP3, "Gamut: DCIP3");
Logger.WriteLine(icm.FullName + " DCIP3");
}
catch
{
}
}
if (icm.Name.Contains("DisplayP3"))
{
try
{
_modes.Add(isVivo ? SplendidGamut.ViviDisplayP3 : SplendidGamut.DisplayP3, "Gamut: DisplayP3");
Logger.WriteLine(icm.FullName + " DisplayP3");
}
catch
{
}
}
}
return _modes;
}
catch
catch (Exception ex)
{
//Logger.WriteLine(ex.Message);
Logger.WriteLine(ex.ToString());
return _modes;
}
@@ -167,8 +204,13 @@ namespace GHelper.Display
};
}
public static void SetGamut(int mode = 50)
public static void SetGamut(int mode = -1)
{
if (skipGamut) return;
if (mode < 0) mode = (int)GetDefaultGamut();
AppConfig.Set("gamut", mode);
if (RunSplendid(SplendidCommand.GamutMode, 0, mode)) return;
if (_init)
@@ -187,11 +229,15 @@ namespace GHelper.Display
if (!forceVisual && ScreenCCD.GetHDRStatus(true)) return;
if (!forceVisual && ScreenNative.GetRefreshRate(ScreenNative.FindLaptopScreen(true)) < 0) return;
AppConfig.Set("visual", (int)mode);
AppConfig.Set("color_temp", whiteBalance);
if (whiteBalance != DefaultColorTemp && !init) ProcessHelper.RunAsAdmin();
int? balance;
switch (mode) {
switch (mode)
{
case SplendidCommand.Eyecare:
balance = 2;
break;
@@ -289,10 +335,23 @@ namespace GHelper.Display
brightnessTimer.Start();
Program.settingsForm.VisualiseBrightness();
//if (brightness < 100) ResetGamut();
return _brightness;
}
public static void ResetGamut()
{
int defaultGamut = (int)GetDefaultGamut();
if (AppConfig.Get("gamut") != defaultGamut)
{
skipGamut = true;
AppConfig.Set("gamut", defaultGamut);
Program.settingsForm.VisualiseGamut();
skipGamut = false;
}
}
public static void SetGamma(int brightness = 100)

129
app/Extra.Designer.cs generated
View File

@@ -117,6 +117,7 @@ namespace GHelper
checkGpuApps = new CheckBox();
checkGPUFix = new CheckBox();
checkStatusLed = new CheckBox();
checkPerKeyRGB = new CheckBox();
panelPower = new Panel();
numericHibernateAfter = new NumericUpDown();
labelHibernateAfter = new Label();
@@ -138,6 +139,10 @@ namespace GHelper
buttonACPISend = new RButton();
pictureDebug = new PictureBox();
labelACPITitle = new Label();
checkBatteryBar = new CheckBox();
checkBatteryLid = new CheckBox();
checkBattery = new CheckBox();
checkBatteryLogo = new CheckBox();
panelServices.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureService).BeginInit();
panelBindingsHeader.SuspendLayout();
@@ -176,7 +181,7 @@ namespace GHelper
panelServices.Controls.Add(labelServices);
panelServices.Controls.Add(buttonServices);
panelServices.Dock = DockStyle.Top;
panelServices.Location = new Point(15, 1638);
panelServices.Location = new Point(15, 1723);
panelServices.Name = "panelServices";
panelServices.Size = new Size(949, 75);
panelServices.TabIndex = 5;
@@ -681,7 +686,7 @@ namespace GHelper
panelBacklight.Location = new Point(15, 514);
panelBacklight.Name = "panelBacklight";
panelBacklight.Padding = new Padding(0, 5, 0, 5);
panelBacklight.Size = new Size(949, 402);
panelBacklight.Size = new Size(949, 445);
panelBacklight.TabIndex = 2;
//
// panelBacklightExtra
@@ -694,7 +699,7 @@ namespace GHelper
panelBacklightExtra.Controls.Add(labelSpeed);
panelBacklightExtra.Controls.Add(comboKeyboardSpeed);
panelBacklightExtra.Dock = DockStyle.Top;
panelBacklightExtra.Location = new Point(0, 282);
panelBacklightExtra.Location = new Point(0, 325);
panelBacklightExtra.Margin = new Padding(4, 3, 4, 3);
panelBacklightExtra.Name = "panelBacklightExtra";
panelBacklightExtra.Padding = new Padding(0, 0, 0, 5);
@@ -760,7 +765,7 @@ namespace GHelper
//
panelXMG.Controls.Add(checkXMG);
panelXMG.Dock = DockStyle.Top;
panelXMG.Location = new Point(0, 222);
panelXMG.Location = new Point(0, 265);
panelXMG.Margin = new Padding(4, 3, 4, 3);
panelXMG.Name = "panelXMG";
panelXMG.Size = new Size(949, 60);
@@ -786,37 +791,47 @@ namespace GHelper
tableBacklight.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
tableBacklight.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
tableBacklight.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
tableBacklight.Controls.Add(labelBacklightKeyboard, 0, 0);
tableBacklight.Controls.Add(checkAwake, 0, 1);
tableBacklight.Controls.Add(checkBoot, 0, 2);
tableBacklight.Controls.Add(checkSleep, 0, 3);
tableBacklight.Controls.Add(checkShutdown, 0, 4);
tableBacklight.Controls.Add(checkBattery, 0, 5);
tableBacklight.Controls.Add(labelBacklightLogo, 1, 0);
tableBacklight.Controls.Add(checkAwakeLogo, 1, 1);
tableBacklight.Controls.Add(checkBootLogo, 1, 2);
tableBacklight.Controls.Add(checkSleepLogo, 1, 3);
tableBacklight.Controls.Add(checkShutdownLogo, 1, 4);
tableBacklight.Controls.Add(checkBatteryLogo, 1, 5);
tableBacklight.Controls.Add(labelBacklightBar, 2, 0);
tableBacklight.Controls.Add(checkAwakeBar, 2, 1);
tableBacklight.Controls.Add(checkBootBar, 2, 2);
tableBacklight.Controls.Add(checkSleepBar, 2, 3);
tableBacklight.Controls.Add(checkShutdownBar, 2, 4);
tableBacklight.Controls.Add(checkBatteryBar, 2, 5);
tableBacklight.Controls.Add(labelBacklightLid, 3, 0);
tableBacklight.Controls.Add(checkAwakeLid, 3, 1);
tableBacklight.Controls.Add(checkBootLid, 3, 2);
tableBacklight.Controls.Add(checkSleepLid, 3, 3);
tableBacklight.Controls.Add(checkShutdownLid, 3, 4);
tableBacklight.Controls.Add(checkBatteryLid, 3, 5);
tableBacklight.Dock = DockStyle.Top;
tableBacklight.Location = new Point(0, 5);
tableBacklight.Margin = new Padding(0);
tableBacklight.Name = "tableBacklight";
tableBacklight.RowCount = 5;
tableBacklight.RowCount = 6;
tableBacklight.RowStyles.Add(new RowStyle());
tableBacklight.RowStyles.Add(new RowStyle());
tableBacklight.RowStyles.Add(new RowStyle());
tableBacklight.RowStyles.Add(new RowStyle());
tableBacklight.RowStyles.Add(new RowStyle());
tableBacklight.Size = new Size(949, 217);
tableBacklight.RowStyles.Add(new RowStyle());
tableBacklight.Size = new Size(949, 260);
tableBacklight.TabIndex = 44;
//
// labelBacklightKeyboard
@@ -1068,7 +1083,7 @@ namespace GHelper
panelSettingsHeader.Controls.Add(pictureSettings);
panelSettingsHeader.Controls.Add(labelSettings);
panelSettingsHeader.Dock = DockStyle.Top;
panelSettingsHeader.Location = new Point(15, 916);
panelSettingsHeader.Location = new Point(15, 959);
panelSettingsHeader.Name = "panelSettingsHeader";
panelSettingsHeader.Padding = new Padding(11, 5, 11, 5);
panelSettingsHeader.Size = new Size(949, 51);
@@ -1136,18 +1151,19 @@ namespace GHelper
panelSettings.Controls.Add(checkGpuApps);
panelSettings.Controls.Add(checkGPUFix);
panelSettings.Controls.Add(checkStatusLed);
panelSettings.Controls.Add(checkPerKeyRGB);
panelSettings.Dock = DockStyle.Top;
panelSettings.Location = new Point(15, 1154);
panelSettings.Location = new Point(15, 1197);
panelSettings.Name = "panelSettings";
panelSettings.Padding = new Padding(20, 5, 11, 5);
panelSettings.Size = new Size(949, 430);
panelSettings.Size = new Size(949, 472);
panelSettings.TabIndex = 3;
//
// checkAutoToggleClamshellMode
//
checkAutoToggleClamshellMode.AutoSize = true;
checkAutoToggleClamshellMode.Dock = DockStyle.Top;
checkAutoToggleClamshellMode.Location = new Point(20, 383);
checkAutoToggleClamshellMode.Location = new Point(20, 425);
checkAutoToggleClamshellMode.Name = "checkAutoToggleClamshellMode";
checkAutoToggleClamshellMode.Padding = new Padding(3);
checkAutoToggleClamshellMode.Size = new Size(918, 42);
@@ -1159,7 +1175,7 @@ namespace GHelper
//
checkBWIcon.AutoSize = true;
checkBWIcon.Dock = DockStyle.Top;
checkBWIcon.Location = new Point(20, 341);
checkBWIcon.Location = new Point(20, 383);
checkBWIcon.Margin = new Padding(4, 3, 4, 3);
checkBWIcon.Name = "checkBWIcon";
checkBWIcon.Padding = new Padding(3);
@@ -1172,7 +1188,7 @@ namespace GHelper
//
checkTopmost.AutoSize = true;
checkTopmost.Dock = DockStyle.Top;
checkTopmost.Location = new Point(20, 299);
checkTopmost.Location = new Point(20, 341);
checkTopmost.Margin = new Padding(4, 3, 4, 3);
checkTopmost.Name = "checkTopmost";
checkTopmost.Padding = new Padding(3);
@@ -1185,7 +1201,7 @@ namespace GHelper
//
checkNoOverdrive.AutoSize = true;
checkNoOverdrive.Dock = DockStyle.Top;
checkNoOverdrive.Location = new Point(20, 257);
checkNoOverdrive.Location = new Point(20, 299);
checkNoOverdrive.Margin = new Padding(4, 3, 4, 3);
checkNoOverdrive.Name = "checkNoOverdrive";
checkNoOverdrive.Padding = new Padding(3);
@@ -1198,7 +1214,7 @@ namespace GHelper
//
checkBootSound.AutoSize = true;
checkBootSound.Dock = DockStyle.Top;
checkBootSound.Location = new Point(20, 215);
checkBootSound.Location = new Point(20, 257);
checkBootSound.Margin = new Padding(4, 3, 4, 3);
checkBootSound.Name = "checkBootSound";
checkBootSound.Padding = new Padding(3);
@@ -1211,7 +1227,7 @@ namespace GHelper
//
checkUSBC.AutoSize = true;
checkUSBC.Dock = DockStyle.Top;
checkUSBC.Location = new Point(20, 173);
checkUSBC.Location = new Point(20, 215);
checkUSBC.Margin = new Padding(4, 3, 4, 3);
checkUSBC.Name = "checkUSBC";
checkUSBC.Padding = new Padding(3);
@@ -1224,7 +1240,7 @@ namespace GHelper
//
checkVariBright.AutoSize = true;
checkVariBright.Dock = DockStyle.Top;
checkVariBright.Location = new Point(20, 131);
checkVariBright.Location = new Point(20, 173);
checkVariBright.Margin = new Padding(4, 3, 4, 3);
checkVariBright.Name = "checkVariBright";
checkVariBright.Padding = new Padding(3);
@@ -1237,7 +1253,7 @@ namespace GHelper
//
checkGpuApps.AutoSize = true;
checkGpuApps.Dock = DockStyle.Top;
checkGpuApps.Location = new Point(20, 89);
checkGpuApps.Location = new Point(20, 131);
checkGpuApps.Margin = new Padding(4, 3, 4, 3);
checkGpuApps.Name = "checkGpuApps";
checkGpuApps.Padding = new Padding(3);
@@ -1250,7 +1266,7 @@ namespace GHelper
//
checkGPUFix.AutoSize = true;
checkGPUFix.Dock = DockStyle.Top;
checkGPUFix.Location = new Point(20, 47);
checkGPUFix.Location = new Point(20, 89);
checkGPUFix.Margin = new Padding(4, 3, 4, 3);
checkGPUFix.Name = "checkGPUFix";
checkGPUFix.Padding = new Padding(3);
@@ -1263,7 +1279,7 @@ namespace GHelper
//
checkStatusLed.AutoSize = true;
checkStatusLed.Dock = DockStyle.Top;
checkStatusLed.Location = new Point(20, 5);
checkStatusLed.Location = new Point(20, 47);
checkStatusLed.Margin = new Padding(4, 3, 4, 3);
checkStatusLed.Name = "checkStatusLed";
checkStatusLed.Padding = new Padding(3);
@@ -1273,13 +1289,27 @@ namespace GHelper
checkStatusLed.UseVisualStyleBackColor = true;
checkStatusLed.Visible = false;
//
// checkPerKeyRGB
//
checkPerKeyRGB.AutoSize = true;
checkPerKeyRGB.Dock = DockStyle.Top;
checkPerKeyRGB.Location = new Point(20, 5);
checkPerKeyRGB.Margin = new Padding(4, 3, 4, 3);
checkPerKeyRGB.Name = "checkPerKeyRGB";
checkPerKeyRGB.Padding = new Padding(3);
checkPerKeyRGB.Size = new Size(918, 42);
checkPerKeyRGB.TabIndex = 13;
checkPerKeyRGB.Text = "Per-Key RGB Keyboard";
checkPerKeyRGB.UseVisualStyleBackColor = true;
checkPerKeyRGB.Visible = false;
//
// panelPower
//
panelPower.Controls.Add(numericHibernateAfter);
panelPower.Controls.Add(labelHibernateAfter);
panelPower.Controls.Add(pictureHibernate);
panelPower.Dock = DockStyle.Top;
panelPower.Location = new Point(15, 1584);
panelPower.Location = new Point(15, 1669);
panelPower.Name = "panelPower";
panelPower.Size = new Size(949, 54);
panelPower.TabIndex = 4;
@@ -1322,7 +1352,7 @@ namespace GHelper
panelAPU.Controls.Add(pictureAPUMem);
panelAPU.Controls.Add(labelAPUMem);
panelAPU.Dock = DockStyle.Top;
panelAPU.Location = new Point(15, 1097);
panelAPU.Location = new Point(15, 1140);
panelAPU.Name = "panelAPU";
panelAPU.Padding = new Padding(11, 5, 11, 0);
panelAPU.Size = new Size(949, 57);
@@ -1376,7 +1406,7 @@ namespace GHelper
panelCores.Controls.Add(pictureCores);
panelCores.Controls.Add(label1);
panelCores.Dock = DockStyle.Top;
panelCores.Location = new Point(15, 1036);
panelCores.Location = new Point(15, 1079);
panelCores.Name = "panelCores";
panelCores.Padding = new Padding(11, 5, 11, 0);
panelCores.Size = new Size(949, 61);
@@ -1461,7 +1491,7 @@ namespace GHelper
panelACPI.Controls.Add(pictureDebug);
panelACPI.Controls.Add(labelACPITitle);
panelACPI.Dock = DockStyle.Top;
panelACPI.Location = new Point(15, 967);
panelACPI.Location = new Point(15, 1010);
panelACPI.Name = "panelACPI";
panelACPI.Padding = new Padding(11, 5, 11, 0);
panelACPI.Size = new Size(949, 69);
@@ -1525,6 +1555,54 @@ namespace GHelper
labelACPITitle.TabIndex = 0;
labelACPITitle.Text = "ACPI DEVS Test";
//
// checkBatteryBar
//
checkBatteryBar.Dock = DockStyle.Fill;
checkBatteryBar.Location = new Point(478, 217);
checkBatteryBar.Margin = new Padding(4, 0, 4, 0);
checkBatteryBar.Name = "checkBatteryBar";
checkBatteryBar.Padding = new Padding(16, 3, 7, 3);
checkBatteryBar.Size = new Size(229, 43);
checkBatteryBar.TabIndex = 22;
checkBatteryBar.Text = "Battery";
checkBatteryBar.UseVisualStyleBackColor = true;
//
// checkBatteryLid
//
checkBatteryLid.Dock = DockStyle.Fill;
checkBatteryLid.Location = new Point(715, 217);
checkBatteryLid.Margin = new Padding(4, 0, 4, 0);
checkBatteryLid.Name = "checkBatteryLid";
checkBatteryLid.Padding = new Padding(16, 3, 7, 3);
checkBatteryLid.Size = new Size(230, 43);
checkBatteryLid.TabIndex = 23;
checkBatteryLid.Text = "Battery";
checkBatteryLid.UseVisualStyleBackColor = true;
//
// checkBattery
//
checkBattery.Dock = DockStyle.Fill;
checkBattery.Location = new Point(4, 217);
checkBattery.Margin = new Padding(4, 0, 4, 0);
checkBattery.Name = "checkBattery";
checkBattery.Padding = new Padding(16, 3, 7, 3);
checkBattery.Size = new Size(229, 43);
checkBattery.TabIndex = 24;
checkBattery.Text = "Battery";
checkBattery.UseVisualStyleBackColor = true;
//
// checkBatteryLogo
//
checkBatteryLogo.Dock = DockStyle.Fill;
checkBatteryLogo.Location = new Point(241, 217);
checkBatteryLogo.Margin = new Padding(4, 0, 4, 0);
checkBatteryLogo.Name = "checkBatteryLogo";
checkBatteryLogo.Padding = new Padding(16, 3, 7, 3);
checkBatteryLogo.Size = new Size(229, 43);
checkBatteryLogo.TabIndex = 25;
checkBatteryLogo.Text = "Battery";
checkBatteryLogo.UseVisualStyleBackColor = true;
//
// Extra
//
AutoScaleDimensions = new SizeF(192F, 192F);
@@ -1709,5 +1787,10 @@ namespace GHelper
private Label labelACPITitle;
private CheckBox checkBWIcon;
private CheckBox checkStatusLed;
private CheckBox checkPerKeyRGB;
private CheckBox checkBatteryLogo;
private CheckBox checkBattery;
private CheckBox checkBatteryLid;
private CheckBox checkBatteryBar;
}
}

View File

@@ -298,55 +298,64 @@ namespace GHelper
// Keyboard
checkAwake.Checked = AppConfig.IsNotFalse("keyboard_awake");
checkBattery.Checked = AppConfig.IsOnBattery("keyboard_awake");
checkBoot.Checked = AppConfig.IsNotFalse("keyboard_boot");
checkSleep.Checked = AppConfig.IsNotFalse("keyboard_sleep");
checkShutdown.Checked = AppConfig.IsNotFalse("keyboard_shutdown");
// Lightbar
checkAwakeBar.Checked = AppConfig.IsNotFalse("keyboard_awake_bar");
checkBatteryBar.Checked = AppConfig.IsOnBattery("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.IsNotFalse("keyboard_awake_lid");
checkBatteryLid.Checked = AppConfig.IsOnBattery("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.IsNotFalse("keyboard_awake_logo");
checkBatteryLogo.Checked = AppConfig.IsOnBattery("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;
checkBattery.CheckedChanged += CheckPower_CheckedChanged;
checkBoot.CheckedChanged += CheckPower_CheckedChanged;
checkSleep.CheckedChanged += CheckPower_CheckedChanged;
checkShutdown.CheckedChanged += CheckPower_CheckedChanged;
checkAwakeBar.CheckedChanged += CheckPower_CheckedChanged;
checkBatteryBar.CheckedChanged += CheckPower_CheckedChanged;
checkBootBar.CheckedChanged += CheckPower_CheckedChanged;
checkSleepBar.CheckedChanged += CheckPower_CheckedChanged;
checkShutdownBar.CheckedChanged += CheckPower_CheckedChanged;
checkAwakeLid.CheckedChanged += CheckPower_CheckedChanged;
checkBatteryLid.CheckedChanged += CheckPower_CheckedChanged;
checkBootLid.CheckedChanged += CheckPower_CheckedChanged;
checkSleepLid.CheckedChanged += CheckPower_CheckedChanged;
checkShutdownLid.CheckedChanged += CheckPower_CheckedChanged;
checkAwakeLogo.CheckedChanged += CheckPower_CheckedChanged;
checkBatteryLogo.CheckedChanged += CheckPower_CheckedChanged;
checkBootLogo.CheckedChanged += CheckPower_CheckedChanged;
checkSleepLogo.CheckedChanged += CheckPower_CheckedChanged;
checkShutdownLogo.CheckedChanged += CheckPower_CheckedChanged;
if ((!AppConfig.IsStrix() && !AppConfig.IsZ13()) || AppConfig.IsStrixLimitedRGB() || AppConfig.IsARCNM())
if (!AppConfig.IsBacklightZones() || AppConfig.IsStrixLimitedRGB() || AppConfig.IsARCNM())
{
if (!AppConfig.IsStrixLimitedRGB())
{
labelBacklightBar.Visible = false;
checkAwakeBar.Visible = false;
checkBatteryBar.Visible = false;
checkBootBar.Visible = false;
checkSleepBar.Visible = false;
checkShutdownBar.Visible = false;
@@ -354,20 +363,23 @@ namespace GHelper
labelBacklightLid.Visible = false;
checkAwakeLid.Visible = false;
checkBatteryLid.Visible = false;
checkBootLid.Visible = false;
checkSleepLid.Visible = false;
checkShutdownLid.Visible = false;
labelBacklightLogo.Visible = false;
checkAwakeLogo.Visible = false;
checkBatteryLogo.Visible = false;
checkBootLogo.Visible = false;
checkSleepLogo.Visible = false;
checkShutdownLogo.Visible = false;
}
if (!AppConfig.IsStrix() && !AppConfig.IsZ13())
if (!AppConfig.IsBacklightZones())
{
labelBacklightKeyboard.Visible = false;
checkBattery.Visible = false;
}
//checkAutoToggleClamshellMode.Visible = clamshellControl.IsExternalDisplayConnected();
@@ -423,6 +435,10 @@ namespace GHelper
checkGPUFix.Checked = AppConfig.IsGPUFix();
checkGPUFix.CheckedChanged += CheckGPUFix_CheckedChanged;
checkPerKeyRGB.Visible = AppConfig.IsPossible4ZoneRGB();
checkPerKeyRGB.Checked = AppConfig.Is("per_key_rgb");
checkPerKeyRGB.CheckedChanged += CheckPerKeyRGB_CheckedChanged;
toolTip.SetToolTip(checkAutoToggleClamshellMode, "Disable sleep on lid close when plugged in and external monitor is connected");
InitCores();
@@ -434,6 +450,11 @@ namespace GHelper
}
private void CheckPerKeyRGB_CheckedChanged(object? sender, EventArgs e)
{
AppConfig.Set("per_key_rgb", (checkPerKeyRGB.Checked ? 1 : 0));
}
private void CheckLEDStatus_CheckedChanged(object? sender, EventArgs e)
{
Program.acpi.DeviceSet(AsusACPI.StatusLed, (checkStatusLed.Checked ? 7 : 0), "StatusLED");
@@ -756,6 +777,14 @@ namespace GHelper
AppConfig.Set("keyboard_sleep_logo", (checkSleepLogo.Checked ? 1 : 0));
AppConfig.Set("keyboard_shutdown_logo", (checkShutdownLogo.Checked ? 1 : 0));
if (AppConfig.IsBacklightZones())
{
AppConfig.Set("keyboard_awake_bat", (checkBattery.Checked ? 1 : 0));
AppConfig.Set("keyboard_awake_bar_bat", (checkBatteryBar.Checked ? 1 : 0));
AppConfig.Set("keyboard_awake_lid_bat", (checkBatteryLid.Checked ? 1 : 0));
AppConfig.Set("keyboard_awake_logo_bat", (checkBatteryLogo.Checked ? 1 : 0));
}
Aura.ApplyPower();
}

144
app/Fans.Designer.cs generated
View File

@@ -119,10 +119,6 @@ namespace GHelper
picturePowerMode = new PictureBox();
labelPowerModeTitle = new Label();
panelGPU = new Panel();
panelGPUPower = new Panel();
labelGPUPower = new Label();
labelGPUPowerTitle = new Label();
trackGPUPower = new TrackBar();
panelGPUTemp = new Panel();
labelGPUTemp = new Label();
labelGPUTempTitle = new Label();
@@ -131,6 +127,10 @@ namespace GHelper
labelGPUBoost = new Label();
labelGPUBoostTitle = new Label();
trackGPUBoost = new TrackBar();
panelGPUPower = new Panel();
labelGPUPower = new Label();
labelGPUPowerTitle = new Label();
trackGPUPower = new TrackBar();
panelGPUMemory = new Panel();
labelGPUMemory = new Label();
labelGPUMemoryTitle = new Label();
@@ -194,12 +194,12 @@ namespace GHelper
panelPowerModeTItle.SuspendLayout();
((System.ComponentModel.ISupportInitialize)picturePowerMode).BeginInit();
panelGPU.SuspendLayout();
panelGPUPower.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackGPUPower).BeginInit();
panelGPUTemp.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackGPUTemp).BeginInit();
panelGPUBoost.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackGPUBoost).BeginInit();
panelGPUPower.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackGPUPower).BeginInit();
panelGPUMemory.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackGPUMemory).BeginInit();
panelGPUCore.SuspendLayout();
@@ -223,11 +223,10 @@ namespace GHelper
panelFans.Dock = DockStyle.Fill;
panelFans.Location = new Point(530, 0);
panelFans.Margin = new Padding(0);
//panelFans.MaximumSize = new Size(816, 0);
panelFans.MinimumSize = new Size(816, 0);
panelFans.Name = "panelFans";
panelFans.Padding = new Padding(0, 0, 10, 0);
panelFans.Size = new Size(816, 2119);
panelFans.Size = new Size(820, 2119);
panelFans.TabIndex = 12;
//
// labelTip
@@ -261,7 +260,7 @@ namespace GHelper
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Percent, 25F));
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Percent, 25F));
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Percent, 25F));
tableFanCharts.Size = new Size(806, 1937);
tableFanCharts.Size = new Size(810, 1937);
tableFanCharts.TabIndex = 36;
//
// chartGPU
@@ -272,7 +271,7 @@ namespace GHelper
chartGPU.Location = new Point(12, 493);
chartGPU.Margin = new Padding(2, 10, 2, 10);
chartGPU.Name = "chartGPU";
chartGPU.Size = new Size(782, 463);
chartGPU.Size = new Size(786, 463);
chartGPU.TabIndex = 17;
chartGPU.Text = "chartGPU";
title1.Name = "Title1";
@@ -286,7 +285,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, 463);
chartCPU.Size = new Size(786, 463);
chartCPU.TabIndex = 14;
chartCPU.Text = "chartCPU";
title2.Name = "Title1";
@@ -300,7 +299,7 @@ namespace GHelper
chartXGM.Location = new Point(12, 1459);
chartXGM.Margin = new Padding(2, 10, 2, 10);
chartXGM.Name = "chartXGM";
chartXGM.Size = new Size(782, 463);
chartXGM.Size = new Size(786, 463);
chartXGM.TabIndex = 14;
chartXGM.Text = "chartXGM";
title3.Name = "Title4";
@@ -315,7 +314,7 @@ namespace GHelper
chartMid.Location = new Point(12, 976);
chartMid.Margin = new Padding(2, 10, 2, 10);
chartMid.Name = "chartMid";
chartMid.Size = new Size(782, 463);
chartMid.Size = new Size(786, 463);
chartMid.TabIndex = 14;
chartMid.Text = "chartMid";
title4.Name = "Title3";
@@ -334,7 +333,7 @@ namespace GHelper
panelTitleFans.Location = new Point(0, 0);
panelTitleFans.Margin = new Padding(4);
panelTitleFans.Name = "panelTitleFans";
panelTitleFans.Size = new Size(806, 66);
panelTitleFans.Size = new Size(810, 66);
panelTitleFans.TabIndex = 42;
//
// buttonRename
@@ -346,7 +345,7 @@ namespace GHelper
buttonRename.BorderRadius = 2;
buttonRename.FlatStyle = FlatStyle.Flat;
buttonRename.Image = Properties.Resources.icons8_edit_32;
buttonRename.Location = new Point(376, 10);
buttonRename.Location = new Point(380, 10);
buttonRename.Margin = new Padding(4, 2, 4, 2);
buttonRename.Name = "buttonRename";
buttonRename.Secondary = true;
@@ -363,7 +362,7 @@ namespace GHelper
buttonRemove.BorderRadius = 2;
buttonRemove.FlatStyle = FlatStyle.Flat;
buttonRemove.Image = Properties.Resources.icons8_remove_64;
buttonRemove.Location = new Point(322, 10);
buttonRemove.Location = new Point(326, 10);
buttonRemove.Margin = new Padding(4, 2, 4, 2);
buttonRemove.Name = "buttonRemove";
buttonRemove.Secondary = true;
@@ -380,7 +379,7 @@ namespace GHelper
buttonAdd.BorderRadius = 2;
buttonAdd.FlatStyle = FlatStyle.Flat;
buttonAdd.Image = Properties.Resources.icons8_add_64;
buttonAdd.Location = new Point(744, 10);
buttonAdd.Location = new Point(748, 10);
buttonAdd.Margin = new Padding(4, 2, 4, 2);
buttonAdd.Name = "buttonAdd";
buttonAdd.Secondary = true;
@@ -395,7 +394,7 @@ namespace GHelper
comboModes.ButtonColor = Color.FromArgb(255, 255, 255);
comboModes.FlatStyle = FlatStyle.Flat;
comboModes.FormattingEnabled = true;
comboModes.Location = new Point(436, 14);
comboModes.Location = new Point(440, 14);
comboModes.Margin = new Padding(0);
comboModes.Name = "comboModes";
comboModes.Size = new Size(302, 40);
@@ -434,7 +433,7 @@ namespace GHelper
panelApplyFans.Location = new Point(0, 2003);
panelApplyFans.Margin = new Padding(4);
panelApplyFans.Name = "panelApplyFans";
panelApplyFans.Size = new Size(806, 116);
panelApplyFans.Size = new Size(810, 116);
panelApplyFans.TabIndex = 43;
//
// buttonCalibrate
@@ -470,7 +469,7 @@ namespace GHelper
checkApplyFans.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
checkApplyFans.AutoSize = true;
checkApplyFans.BackColor = SystemColors.ControlLight;
checkApplyFans.Location = new Point(450, 42);
checkApplyFans.Location = new Point(454, 42);
checkApplyFans.Margin = new Padding(0);
checkApplyFans.Name = "checkApplyFans";
checkApplyFans.Padding = new Padding(16, 6, 16, 6);
@@ -1257,55 +1256,6 @@ namespace GHelper
panelGPU.TabIndex = 44;
panelGPU.Visible = false;
//
// panelGPUPower
//
panelGPUPower.AutoSize = true;
panelGPUPower.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelGPUPower.Controls.Add(labelGPUPower);
panelGPUPower.Controls.Add(labelGPUPowerTitle);
panelGPUPower.Controls.Add(trackGPUPower);
panelGPUPower.Dock = DockStyle.Top;
panelGPUPower.Location = new Point(0, 432);
panelGPUPower.Margin = new Padding(4);
panelGPUPower.MaximumSize = new Size(0, 124);
panelGPUPower.Name = "panelGPUPower";
panelGPUPower.Size = new Size(520, 124);
panelGPUPower.TabIndex = 49;
//
// labelGPUPower
//
labelGPUPower.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelGPUPower.Location = new Point(374, 14);
labelGPUPower.Margin = new Padding(4, 0, 4, 0);
labelGPUPower.Name = "labelGPUPower";
labelGPUPower.Size = new Size(124, 32);
labelGPUPower.TabIndex = 44;
labelGPUPower.Text = "105W";
labelGPUPower.TextAlign = ContentAlignment.TopRight;
//
// labelGPUPowerTitle
//
labelGPUPowerTitle.AutoSize = true;
labelGPUPowerTitle.Location = new Point(10, 14);
labelGPUPowerTitle.Margin = new Padding(4, 0, 4, 0);
labelGPUPowerTitle.Name = "labelGPUPowerTitle";
labelGPUPowerTitle.Size = new Size(130, 32);
labelGPUPowerTitle.TabIndex = 43;
labelGPUPowerTitle.Text = "GPU Power";
//
// trackGPUPower
//
trackGPUPower.Location = new Point(6, 48);
trackGPUPower.Margin = new Padding(4, 2, 4, 2);
trackGPUPower.Maximum = 25;
trackGPUPower.Minimum = 5;
trackGPUPower.Name = "trackGPUPower";
trackGPUPower.Size = new Size(496, 90);
trackGPUPower.TabIndex = 42;
trackGPUPower.TickFrequency = 5;
trackGPUPower.TickStyle = TickStyle.TopLeft;
trackGPUPower.Value = 25;
//
// panelGPUTemp
//
panelGPUTemp.AutoSize = true;
@@ -1404,6 +1354,55 @@ namespace GHelper
trackGPUBoost.TickStyle = TickStyle.TopLeft;
trackGPUBoost.Value = 25;
//
// panelGPUPower
//
panelGPUPower.AutoSize = true;
panelGPUPower.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelGPUPower.Controls.Add(labelGPUPower);
panelGPUPower.Controls.Add(labelGPUPowerTitle);
panelGPUPower.Controls.Add(trackGPUPower);
panelGPUPower.Dock = DockStyle.Top;
panelGPUPower.Location = new Point(0, 432);
panelGPUPower.Margin = new Padding(4);
panelGPUPower.MaximumSize = new Size(0, 124);
panelGPUPower.Name = "panelGPUPower";
panelGPUPower.Size = new Size(520, 124);
panelGPUPower.TabIndex = 49;
//
// labelGPUPower
//
labelGPUPower.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelGPUPower.Location = new Point(374, 14);
labelGPUPower.Margin = new Padding(4, 0, 4, 0);
labelGPUPower.Name = "labelGPUPower";
labelGPUPower.Size = new Size(124, 32);
labelGPUPower.TabIndex = 44;
labelGPUPower.Text = "105W";
labelGPUPower.TextAlign = ContentAlignment.TopRight;
//
// labelGPUPowerTitle
//
labelGPUPowerTitle.AutoSize = true;
labelGPUPowerTitle.Location = new Point(10, 14);
labelGPUPowerTitle.Margin = new Padding(4, 0, 4, 0);
labelGPUPowerTitle.Name = "labelGPUPowerTitle";
labelGPUPowerTitle.Size = new Size(130, 32);
labelGPUPowerTitle.TabIndex = 43;
labelGPUPowerTitle.Text = "GPU Power";
//
// trackGPUPower
//
trackGPUPower.Location = new Point(6, 48);
trackGPUPower.Margin = new Padding(4, 2, 4, 2);
trackGPUPower.Maximum = 25;
trackGPUPower.Minimum = 5;
trackGPUPower.Name = "trackGPUPower";
trackGPUPower.Size = new Size(496, 90);
trackGPUPower.TabIndex = 42;
trackGPUPower.TickFrequency = 5;
trackGPUPower.TickStyle = TickStyle.TopLeft;
trackGPUPower.Value = 25;
//
// panelGPUMemory
//
panelGPUMemory.AutoSize = true;
@@ -1685,7 +1684,6 @@ namespace GHelper
Controls.Add(panelFans);
Controls.Add(panelSliders);
Margin = new Padding(4, 2, 4, 2);
MaximizeBox = true;
MinimizeBox = false;
MinimumSize = new Size(26, 1100);
Name = "Fans";
@@ -1756,15 +1754,15 @@ namespace GHelper
((System.ComponentModel.ISupportInitialize)picturePowerMode).EndInit();
panelGPU.ResumeLayout(false);
panelGPU.PerformLayout();
panelGPUPower.ResumeLayout(false);
panelGPUPower.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackGPUPower).EndInit();
panelGPUTemp.ResumeLayout(false);
panelGPUTemp.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackGPUTemp).EndInit();
panelGPUBoost.ResumeLayout(false);
panelGPUBoost.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackGPUBoost).EndInit();
panelGPUPower.ResumeLayout(false);
panelGPUPower.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackGPUPower).EndInit();
panelGPUMemory.ResumeLayout(false);
panelGPUMemory.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackGPUMemory).EndInit();

View File

@@ -428,6 +428,7 @@ namespace GHelper
labelUV.Text = trackUV.Value.ToString();
labelUViGPU.Text = trackUViGPU.Value.ToString();
labelTemp.Text = (trackTemp.Value < RyzenControl.MaxTemp) ? trackTemp.Value.ToString() + "°C" : "Default";
}
@@ -1142,7 +1143,7 @@ namespace GHelper
trackTemp.Value = RyzenControl.MaxTemp;
AdvancedScroll();
AppConfig.SetMode("cpu_temp", -1);
AppConfig.RemoveMode("cpu_temp");
modeControl.ResetPerformanceMode();
@@ -1160,8 +1161,11 @@ namespace GHelper
trackGPUBoost.Value = AsusACPI.MaxGPUBoost;
trackGPUTemp.Value = AsusACPI.MaxGPUTemp;
AppConfig.SetMode("gpu_boost", trackGPUBoost.Value);
AppConfig.SetMode("gpu_temp", trackGPUTemp.Value);
//AppConfig.SetMode("gpu_boost", trackGPUBoost.Value);
//AppConfig.SetMode("gpu_temp", trackGPUTemp.Value);
AppConfig.RemoveMode("gpu_boost");
AppConfig.RemoveMode("gpu_temp");
AppConfig.RemoveMode("gpu_power");
AppConfig.RemoveMode("gpu_clock_limit");

View File

@@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net7.0-windows</TargetFramework>
<TargetFramework>net8.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>True</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
@@ -15,7 +15,7 @@
<PlatformTarget>AnyCPU</PlatformTarget>
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<AssemblyVersion>0.170</AssemblyVersion>
<AssemblyVersion>0.180</AssemblyVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
@@ -62,7 +62,7 @@
<PackageReference Include="HidSharpCore" Version="1.2.1.1" />
<PackageReference Include="NAudio" Version="2.1.0" />
<PackageReference Include="NvAPIWrapper.Net" Version="0.8.1.101" />
<PackageReference Include="System.Management" Version="7.0.1" />
<PackageReference Include="System.Management" Version="8.0.0" />
<PackageReference Include="TaskScheduler" Version="2.10.1" />
<PackageReference Include="WinForms.DataVisualization" Version="1.8.0" />
</ItemGroup>
@@ -71,18 +71,6 @@
<Content Include="Resources\eco.ico">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Include="Resources\icons8-charging-battery-48.png">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Include="Resources\icons8-laptop-48.png">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Include="Resources\icons8-speed-48.png">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Include="Resources\icons8-video-card-48.png">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Include="Resources\ultimate.ico">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
@@ -140,4 +128,4 @@
</None>
</ItemGroup>
</Project>
</Project>

View File

@@ -322,7 +322,6 @@ namespace GHelper.Gpu
Program.acpi.DeviceSet(AsusACPI.GPUXG, 1, "GPU XGM");
InitXGM();
XGM.Light(AppConfig.Is("xmg_light"));
await Task.Delay(TimeSpan.FromSeconds(15));

View File

@@ -108,6 +108,9 @@ namespace GHelper.Helpers
if (Program.settingsForm.Visible)
Program.screenControl.InitScreen();
if (AppConfig.IsForceMiniled())
Program.screenControl.InitMiniled();
}
private static int CheckAndSaveLidAction()

View File

@@ -0,0 +1,24 @@
using Microsoft.Win32;
namespace GHelper.Helpers
{
public static class DynamicLightingHelper
{
public static bool IsEnabled()
{
using var key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Lighting");
var registryValueObject = key?.GetValue("AmbientLightingEnabled");
if (registryValueObject == null) return true;
return (int)registryValueObject > 0;
}
public static void OpenSettings()
{
ProcessHelper.RunCMD("explorer","ms-settings:personalization-lighting");
}
}
}

View File

@@ -30,15 +30,22 @@ public class Startup
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))
try
{
Logger.WriteLine("File doesn't exist: " + action);
Logger.WriteLine("Rescheduling to: " + strExeFilePath);
UnSchedule();
Schedule();
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();
}
} catch (Exception ex)
{
Logger.WriteLine($"Can't check startup task: {ex.Message}");
}
}
}
}

View File

@@ -73,6 +73,8 @@ namespace GHelper.Helpers
protected override void PerformPaint(PaintEventArgs e)
{
Brush brush = new SolidBrush(Color.FromArgb(150, Color.Black));
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
e.Graphics.FillRoundedRectangle(brush, Bound, 10);
StringFormat format = new StringFormat();

View File

@@ -406,9 +406,6 @@ namespace GHelper.Mode
{
var resultCPU = SendCommand.set_tctl_temp((uint)cpuTemp);
if (init) Logger.WriteLine($"CPU Temp: {cpuTemp} {resultCPU}");
var restultAPU = SendCommand.set_apu_skin_temp_limit((uint)cpuTemp);
if (init) Logger.WriteLine($"APU Temp: {cpuTemp} {restultAPU}");
}
}

View File

@@ -1,6 +1,5 @@
using GHelper.AnimeMatrix.Communication;
using GHelper.AnimeMatrix.Communication.Platform;
using GHelper.Input;
using System.Runtime.CompilerServices;
using System.Text;
@@ -1745,17 +1744,6 @@ namespace GHelper.Peripherals.Mouse
}
}
public void SetColor(Color color)
{
var ls = new LightingSetting();
ls.RGBColor = color;
ls.Brightness = InputDispatcher.GetBacklight() * 25;
WriteForResponse(GetUpdateLightingModePacket(ls, LightingZone.All));
WriteForResponse(GetSaveProfilePacket());
}
public void SetLightingSetting(LightingSetting lightingSetting, LightingZone zone)
{
if (!HasRGB() || lightingSetting is null)

View File

@@ -297,4 +297,166 @@
return 3;
}
}
//P504
public class GladiusIIOriginPink : GladiusIIOrigin
{
public GladiusIIOriginPink() : base(0x18CD, "mi_02")
{
}
public override string GetDisplayName()
{
return "Gladius II PNK LTD";
}
public override int ProfileCount()
{
return 3;
}
public override LightingZone[] SupportedLightingZones()
{
return new LightingZone[] { LightingZone.Scrollwheel, LightingZone.Underglow };
}
protected override byte[] GetUpdateLightingModePacket(LightingSetting lightingSetting, LightingZone zone)
{
/*
* This mouse uses different speed values for rainbow mode compared to others.
* 51 28 03 00 03 04 FF 00 00 00 00 [8C] 00 00 00 00
* 51 28 03 00 03 04 FF 00 00 00 00 [64] 00 00 00 00
* 51 28 03 00 03 04 FF 00 00 00 00 [3F] 00 00 00 00
*/
byte speed = (byte)(SupportsAnimationSpeed(lightingSetting.LightingMode) ? lightingSetting.AnimationSpeed : 0x00);
if (lightingSetting.LightingMode == LightingMode.Rainbow)
{
speed = 0x64;
switch (lightingSetting.AnimationSpeed)
{
case AnimationSpeed.Slow:
speed = 0x8C;
break;
case AnimationSpeed.Medium:
speed = 0x64;
break;
case AnimationSpeed.Fast:
speed = 0x3F;
break;
}
}
return new byte[] { reportId, 0x51, 0x28, (byte)zone, 0x00,
IndexForLightingMode(lightingSetting.LightingMode),
(byte)lightingSetting.Brightness,
0x00, // this mouse has 2 colors per LED capability, but we do not suppor this yet, so we disable it
lightingSetting.RGBColor.R, lightingSetting.RGBColor.G, lightingSetting.RGBColor.B,
0x00, 0x00, 0x00, //this would be the second set of RGB Colors if we ever support this
(byte)(SupportsAnimationDirection(lightingSetting.LightingMode) ? lightingSetting.AnimationDirection : 0x00),
(byte)((lightingSetting.RandomColor && SupportsRandomColor(lightingSetting.LightingMode)) ? 0x01: 0x00),
speed
};
}
protected LightingSetting? ParseLightingSetting(byte[] packet, LightingZone zone)
{
if (packet[1] != 0x12 || packet[2] != 0x03)
{
return null;
}
//skip first block as it seems to be empty. Maybe only filled to certain configurations.
int offset = 5 + 9 + (((int)zone) * 9);
LightingSetting setting = new LightingSetting();
setting.LightingMode = LightingModeForIndex(packet[offset + 0]);
setting.Brightness = packet[offset + 1];
//Offset 2 is a bool that says whether dual color RGB is in use. Unsupported for now by GHelper
setting.RGBColor = Color.FromArgb(packet[offset + 3], packet[offset + 4], packet[offset + 5]);
//Offset 7 - 9 are the second RGB colors, unuse as not supported yet
return setting;
}
public override void ReadLightingSetting()
{
if (!HasRGB())
{
return;
}
//Mouse sends all lighting zones in one response Direction, Random col, Speed
//First block seems emtpy?
//00 12 03 00 00 [00 00 00 00 00 00 00 00 00] [03 04 01 00 00 00 00 00 00] [03 04 01 00 00 00 00 00 00] [00 01 8c]
//Length 9, offset 5
//Direction
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;
}
ls.AnimationDirection = SupportsAnimationDirection(ls.LightingMode)
? (AnimationDirection)response[32]
: AnimationDirection.Clockwise;
ls.RandomColor = SupportsRandomColor(ls.LightingMode) && response[33] == 0x01;
//Rainbow uses different speed values for whatever reason
if (response[12] == 0x03)
{
byte speed = response[34];
switch (speed)
{
case 0x3F:
ls.AnimationSpeed = AnimationSpeed.Fast;
break;
case 0x64:
ls.AnimationSpeed = AnimationSpeed.Medium;
break;
case 0x8C:
ls.AnimationSpeed = AnimationSpeed.Slow;
break;
default:
ls.AnimationSpeed = AnimationSpeed.Medium;
break;
}
}
else
{
ls.AnimationSpeed = SupportsAnimationSpeed(ls.LightingMode)
? (AnimationSpeed)response[34]
: AnimationSpeed.Medium;
if (ls.AnimationSpeed != AnimationSpeed.Fast
&& ls.AnimationSpeed != AnimationSpeed.Medium
&& ls.AnimationSpeed != AnimationSpeed.Slow)
{
ls.AnimationSpeed = AnimationSpeed.Medium;
}
}
Logger.WriteLine(GetDisplayName() + ": Read RGB Setting for Zone " + lz[i].ToString() + ": " + ls.ToString());
LightingSetting[i] = ls;
}
}
}
}

View File

@@ -1,13 +1,13 @@
namespace GHelper.Peripherals.Mouse.Models
{
//P706_Wireless
public class GladiusIII : AsusMouse
public class GladiusIIIWireless : AsusMouse
{
public GladiusIII() : base(0x0B05, 0x197F, "mi_00", true)
public GladiusIIIWireless() : base(0x0B05, 0x197F, "mi_00", true)
{
}
protected GladiusIII(ushort vendorId, bool wireless) : base(0x0B05, vendorId, "mi_00", wireless)
protected GladiusIIIWireless(ushort vendorId, bool wireless) : base(0x0B05, vendorId, "mi_00", wireless)
{
}
@@ -77,7 +77,7 @@
}
}
public class GladiusIIIWired : GladiusIII
public class GladiusIIIWired : GladiusIIIWireless
{
public GladiusIIIWired() : base(0x197d, false)
{
@@ -88,4 +88,43 @@
return "ROG Gladius III (Wired)";
}
}
//P514
public class GladiusIII : GladiusIIIWireless
{
public GladiusIII() : base(0x197B, false)
{
}
public override string GetDisplayName()
{
return "ROG Gladius III";
}
public override bool HasAutoPowerOff()
{
return false;
}
public override bool HasLowBatteryWarning()
{
return false;
}
public override bool HasBattery()
{
return false;
}
public override bool IsLightingModeSupported(LightingMode lightingMode)
{
return lightingMode == LightingMode.Static
|| lightingMode == LightingMode.Breathing
|| lightingMode == LightingMode.ColorCycle
|| lightingMode == LightingMode.Rainbow
|| lightingMode == LightingMode.React
|| lightingMode == LightingMode.Comet;
}
}
}

View File

@@ -0,0 +1,294 @@
namespace GHelper.Peripherals.Mouse.Models
{
public class GladiusIIWireless : AsusMouse
{
public GladiusIIWireless() : base(0x0B05, 0x18A0, "mi_02", true)
{
}
public override int DPIProfileCount()
{
return 2;
}
public override string GetDisplayName()
{
return "Gladius II Wireless";
}
public override PollingRate[] SupportedPollingrates()
{
return new PollingRate[] {
PollingRate.PR125Hz,
PollingRate.PR250Hz,
PollingRate.PR500Hz,
PollingRate.PR1000Hz
};
}
public override int ProfileCount()
{
return 1;
}
public override int MaxDPI()
{
return 16_000;
}
public override bool HasRGB()
{
return true;
}
public override bool HasAutoPowerOff()
{
return true;
}
public override bool HasAngleSnapping()
{
return true;
}
public override bool HasAngleTuning()
{
return true;
}
public override bool HasDebounceSetting()
{
return true;
}
public override bool HasLiftOffSetting()
{
return false;
}
public override bool HasLowBatteryWarning()
{
return true;
}
public override int LowBatteryWarningStep()
{
return 25;
}
public override bool HasBattery()
{
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;
}
public override LightingZone[] SupportedLightingZones()
{
return new LightingZone[] { LightingZone.Logo, LightingZone.Scrollwheel };
}
public override int DPIIncrements()
{
return 100;
}
public override bool CanChangeDPIProfile()
{
return true;
}
public override int MaxBrightness()
{
return 4;
}
//Has 25% increments
protected override int ParseBattery(byte[] packet)
{
if (packet[1] == 0x12 && packet[2] == 0x07)
{
return packet[5] * 25;
}
return -1;
}
protected override byte[] GetUpdateLightingModePacket(LightingSetting lightingSetting, LightingZone zone)
{
/*
* This mouse uses different speed values for rainbow mode compared to others.
* 51 28 03 00 03 04 FF 00 00 00 00 [8C] 00 00 00 00
* 51 28 03 00 03 04 FF 00 00 00 00 [64] 00 00 00 00
* 51 28 03 00 03 04 FF 00 00 00 00 [3F] 00 00 00 00
*/
if (lightingSetting.LightingMode == LightingMode.Rainbow)
{
byte speed = 0x3F;
switch (lightingSetting.AnimationSpeed)
{
case AnimationSpeed.Slow:
speed = 0x3F;
break;
case AnimationSpeed.Medium:
speed = 0x64;
break;
case AnimationSpeed.Fast:
speed = 0x8C;
break;
}
return new byte[] { reportId, 0x51, 0x28, (byte)zone, 0x00,
IndexForLightingMode(lightingSetting.LightingMode),
(byte)lightingSetting.Brightness,
0xFF, 0x00, 0x00,
(byte)(SupportsAnimationDirection(lightingSetting.LightingMode) ? lightingSetting.AnimationDirection : 0x00),
(byte)((lightingSetting.RandomColor && SupportsRandomColor(lightingSetting.LightingMode)) ? 0x01: 0x00),
(byte)(SupportsAnimationSpeed(lightingSetting.LightingMode) ? speed : 0x00)
};
}
return base.GetUpdateLightingModePacket(lightingSetting, zone);
}
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 Direction, Random col, Speed
//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 12 03 00 00 [03 04 00 00 00] [03 04 00 00 00] [03 04 00 00 00] 00 [00] [00] [07] 00 00
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;
}
ls.AnimationDirection = SupportsAnimationDirection(ls.LightingMode)
? (AnimationDirection)response[21]
: AnimationDirection.Clockwise;
ls.RandomColor = SupportsRandomColor(ls.LightingMode) && response[22] == 0x01;
ls.AnimationSpeed = SupportsAnimationSpeed(ls.LightingMode)
? (AnimationSpeed)response[23]
: AnimationSpeed.Medium;
if (ls.AnimationSpeed != AnimationSpeed.Fast
&& ls.AnimationSpeed != AnimationSpeed.Medium
&& ls.AnimationSpeed != AnimationSpeed.Slow)
{
ls.AnimationSpeed = AnimationSpeed.Medium;
}
Logger.WriteLine(GetDisplayName() + ": Read RGB Setting for Zone " + lz[i].ToString() + ": " + ls.ToString());
LightingSetting[i] = ls;
}
}
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 byte[] GetUpdatePollingRatePacket(PollingRate pollingRate)
{
return new byte[] { reportId, 0x51, 0x31, 0x02, 0x00, (byte)pollingRate };
}
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[] GetUpdateAngleSnappingPacket(bool angleSnapping)
{
return new byte[] { reportId, 0x51, 0x31, 0x04, 0x00, (byte)(angleSnapping ? 0x01 : 0x00) };
}
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];
}
protected override byte[] GetUpdateDebouncePacket(DebounceTime debounce)
{
return new byte[] { reportId, 0x51, 0x31, 0x03, 0x00, ((byte)debounce) };
}
}
}

View File

@@ -0,0 +1,124 @@
namespace GHelper.Peripherals.Mouse.Models
{
public class KerisIIAceWired : AsusMouse
{
public KerisIIAceWired() : base(0x0B05, 0x1B16, "mi_00", true)
{
}
protected KerisIIAceWired(ushort vendorId, bool wireless) : base(0x0B05, vendorId, "mi_00", wireless)
{
}
public override int DPIProfileCount()
{
return 4;
}
public override string GetDisplayName()
{
return "ROG Keris II Ace";
}
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 42_000;
}
public override bool HasLiftOffSetting()
{
return true;
}
public override bool HasRGB()
{
return true;
}
public override bool HasXYDPI()
{
return true;
}
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;
}
protected override PollingRate ParsePollingRate(byte[] packet)
{
if (packet[1] == 0x12 && packet[2] == 0x04 && packet[3] == 0x00)
{
if ((int)packet[13] > 7)
return (PollingRate)packet[13] - 96;
return (PollingRate)packet[13];
}
return PollingRate.PR125Hz;
}
}
/*
*
Mouse uses Omni Reciever
public class KerisIIAce : KerisIIAce
{
public KerisIIAce() : base(0xAAAA, false)
{
}
public override string GetDisplayName()
{
return "ROG Keris II Ace (Wired)";
}
}
*/
}

View File

@@ -99,6 +99,18 @@
{
return true;
}
// 3.00.06 - 4.00.01 or newer firmware
protected override PollingRate ParsePollingRate(byte[] packet)
{
if (packet[1] == 0x12 && packet[2] == 0x04 && packet[3] == 0x00)
{
if ((int)packet[13] > 7)
return (PollingRate)packet[13] - 96;
return (PollingRate)packet[13];
}
return PollingRate.PR125Hz;
}
}
public class KerisWirelssAimpointWired : KerisWirelssAimpoint

View File

@@ -0,0 +1,218 @@
namespace GHelper.Peripherals.Mouse.Models
{
//P503
public class Pugio : AsusMouse
{
public Pugio() : base(0x0B05, 0x1846, "mi_02", false)
{
}
public override int DPIProfileCount()
{
return 2;
}
public override string GetDisplayName()
{
return "ROG Pugio";
}
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 7_200;
}
public override int DPIIncrements()
{
return 50;
}
public override int MinDPI()
{
return 50;
}
public override bool HasLiftOffSetting()
{
return true;
}
public override bool HasRGB()
{
return true;
}
public override bool HasAngleSnapping()
{
return true;
}
public override bool CanChangeDPIProfile()
{
return true;
}
public override bool HasBattery()
{
return false;
}
public override bool HasAutoPowerOff()
{
return false;
}
//00 12 04 00 00 1f 00 07 00 [03] 00 02 00 00 00
protected override PollingRate ParsePollingRate(byte[] packet)
{
if (packet[1] == 0x12 && packet[2] == 0x04 && packet[3] == 0x00)
{
return (PollingRate)packet[9];
}
return PollingRate.PR125Hz;
}
public override int MaxBrightness()
{
return 4;
}
public override LightingZone[] SupportedLightingZones()
{
return new LightingZone[] { LightingZone.Logo, LightingZone.Scrollwheel, LightingZone.Underglow };
}
public override bool IsLightingModeSupported(LightingMode lightingMode)
{
return lightingMode == LightingMode.Static
|| lightingMode == LightingMode.Breathing
|| lightingMode == LightingMode.ColorCycle
|| lightingMode == LightingMode.Rainbow
|| lightingMode == LightingMode.React
|| lightingMode == LightingMode.Comet;
}
protected override byte[] GetUpdateLightingModePacket(LightingSetting lightingSetting, LightingZone zone)
{
// 00 51 28 03 00 00 04 00 ff 40 00 00 00 00 00 00 00 00 00 00
/*
* This mouse uses different speed values for rainbow mode compared to others.
* 00 51 28 03 00 03 04 FF 00 00 00 00 [8C] 00 00 00 00
* 00 51 28 03 00 03 04 FF 00 00 00 00 [64] 00 00 00 00
* 00 51 28 03 00 03 04 FF 00 00 00 00 [3F] 00 00 00 00
*/
if (lightingSetting.LightingMode == LightingMode.Rainbow)
{
byte speed = 0x3F;
switch (lightingSetting.AnimationSpeed)
{
case AnimationSpeed.Slow:
speed = 0x3F;
break;
case AnimationSpeed.Medium:
speed = 0x64;
break;
case AnimationSpeed.Fast:
speed = 0x8C;
break;
}
return new byte[] { reportId, 0x51, 0x28, (byte)zone, 0x00,
IndexForLightingMode(lightingSetting.LightingMode),
(byte)lightingSetting.Brightness,
0xFF, 0x00, 0x00,
(byte)(SupportsAnimationDirection(lightingSetting.LightingMode) ? lightingSetting.AnimationDirection : 0x00),
(byte)((lightingSetting.RandomColor && SupportsRandomColor(lightingSetting.LightingMode)) ? 0x01: 0x00),
(byte)(SupportsAnimationSpeed(lightingSetting.LightingMode) ? speed : 0x00)
};
}
return base.GetUpdateLightingModePacket(lightingSetting, zone);
}
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 (0x19) Direction, Random col, Speed
//00 12 03 00 00 [03 04 00 00 00] [03 04 00 00 00] [03 04 00 00 00] 01 [00] [00] [8c] 00
//00 12 03 00 00 [00 04 00 00 00] [00 04 00 00 00] [00 04 00 00 00] 01 [00] [00] [00] 00
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;
}
ls.AnimationDirection = SupportsAnimationDirection(ls.LightingMode)
? (AnimationDirection)response[21]
: AnimationDirection.Clockwise;
ls.RandomColor = SupportsRandomColor(ls.LightingMode) && response[22] == 0x01;
ls.AnimationSpeed = SupportsAnimationSpeed(ls.LightingMode)
? (AnimationSpeed)response[23]
: AnimationSpeed.Medium;
if (ls.AnimationSpeed != AnimationSpeed.Fast
&& ls.AnimationSpeed != AnimationSpeed.Medium
&& ls.AnimationSpeed != AnimationSpeed.Slow)
{
ls.AnimationSpeed = AnimationSpeed.Medium;
}
Logger.WriteLine(GetDisplayName() + ": Read RGB Setting for Zone " + lz[i].ToString() + ": " + ls.ToString());
LightingSetting[i] = ls;
}
}
}
}

View File

@@ -159,15 +159,31 @@
}
}
public class ROGKerisWirelessWiredC : ROGKerisWireless
//P509
public class ROGKeris : ROGKerisWireless
{
public ROGKerisWirelessWiredC() : base(0x195C, false)
public ROGKeris() : base(0x195C, false)
{
}
public override string GetDisplayName()
{
return "ROG Keris (Wired)";
return "ROG Keris";
}
public override bool HasBattery()
{
return false;
}
public override bool HasLowBatteryWarning()
{
return false;
}
public override bool HasAutoPowerOff()
{
return false;
}
}

View File

@@ -130,5 +130,40 @@
return 100;
}
public override int MaxDPI()
{
return 8_000;
}
public override int MinDPI()
{
return 100;
}
public override int DPIIncrements()
{
return 50;
}
public override bool HasDPIColors()
{
return true;
}
protected override int ParseDPIProfile(byte[] packet)
{
return base.ParseDPIProfile(packet) + 1;
}
protected override byte[] GetChangeDPIProfilePacket(int profile)
{
return new byte[] { reportId, 0x51, 0x31, 0x0A, 0x00, 0x04 };
}
protected override byte[] GetChangeDPIProfilePacket2(int profile)
{
return new byte[] { reportId, 0x51, 0x31, 0x09, 0x00, (byte)(profile - 1) };
}
}
}

View File

@@ -0,0 +1,66 @@
namespace GHelper.Peripherals.Mouse.Models
{
//P307
public class TUFM4Air : AsusMouse
{
public TUFM4Air() : base(0x0B05, 0x1A03, "mi_00", false)
{
}
public override int DPIProfileCount()
{
return 4;
}
public override string GetDisplayName()
{
return "TUF GAMING M4 Air";
}
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 HasAngleSnapping()
{
return true;
}
public override bool HasAngleTuning()
{
return false;
}
public override bool HasBattery()
{
return false;
}
public override int DPIIncrements()
{
return 100;
}
}
}

View File

@@ -7,7 +7,7 @@
{
}
public TUFM4Wirelss(ushort productId) : base(0x0B05, productId, "mi_00", true)
public TUFM4Wirelss(ushort productId, bool wireless) : base(0x0B05, productId, "mi_00", wireless)
{
}
@@ -90,7 +90,7 @@
//P310
public class TUFM4WirelssCN : TUFM4Wirelss
{
public TUFM4WirelssCN() : base(0x1A8D)
public TUFM4WirelssCN() : base(0x1A8D, true)
{
}
@@ -101,4 +101,41 @@
return "TX GAMING MOUSE (Wireless)";
}
}
//P519_Wireless
public class TXGamingMini : TUFM4Wirelss
{
public TXGamingMini() : base(0x1AF5, true)
{
}
public TXGamingMini(ushort productId, bool wireless) : base(productId, wireless)
{
}
public override string GetDisplayName()
{
return "TX GAMING MOUSE Mini (Wireless)";
}
public override bool HasXYDPI()
{
return true;
}
}
//P519_Wired
public class TXGamingMiniWired : TXGamingMini
{
public TXGamingMiniWired() : base(0x1AF3, false)
{
}
public override string GetDisplayName()
{
return "TX GAMING MOUSE Mini (Wired)";
}
}
}

View File

@@ -188,18 +188,22 @@ namespace GHelper.Peripherals
DetectMouse(new GladiusIIIAimpoint());
DetectMouse(new GladiusIIIAimpointWired());
DetectMouse(new GladiusIIOrigin());
DetectMouse(new GladiusIIOriginPink());
DetectMouse(new GladiusII());
DetectMouse(new GladiusIIWireless());
DetectMouse(new ROGKerisWireless());
DetectMouse(new ROGKerisWirelessWired());
DetectMouse(new ROGKerisWirelessWiredC());
DetectMouse(new ROGKeris());
DetectMouse(new ROGKerisWirelessEvaEdition());
DetectMouse(new ROGKerisWirelessEvaEditionWired());
DetectMouse(new TUFM4Air());
DetectMouse(new TUFM4Wirelss());
DetectMouse(new TUFM4WirelssCN());
DetectMouse(new StrixImpactIIWireless());
DetectMouse(new StrixImpactIIWirelessWired());
DetectMouse(new GladiusIII());
DetectMouse(new GladiusIIIWireless());
DetectMouse(new GladiusIIIWired());
DetectMouse(new GladiusIII());
DetectMouse(new GladiusIIIAimpointEva2());
DetectMouse(new GladiusIIIAimpointEva2Wired());
DetectMouse(new HarpeAceAimLabEdition());
@@ -210,6 +214,7 @@ namespace GHelper.Peripherals
DetectMouse(new TUFM5());
DetectMouse(new KerisWirelssAimpoint());
DetectMouse(new KerisWirelssAimpointWired());
DetectMouse(new KerisIIAceWired());
DetectMouse(new PugioII());
DetectMouse(new PugioIIWired());
DetectMouse(new StrixImpactII());
@@ -221,6 +226,9 @@ namespace GHelper.Peripherals
DetectMouse(new StrixCarry());
DetectMouse(new StrixImpactIII());
DetectMouse(new StrixImpact());
DetectMouse(new TXGamingMini());
DetectMouse(new TXGamingMiniWired());
DetectMouse(new Pugio());
}
public static void DetectMouse(AsusMouse am)

View File

@@ -208,16 +208,17 @@ namespace GHelper
public static void SetAutoModes(bool powerChanged = false, bool init = false)
public static bool SetAutoModes(bool powerChanged = false, bool init = false)
{
if (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastAuto) < 3000) return;
if (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastAuto) < 3000) return false;
lastAuto = DateTimeOffset.Now.ToUnixTimeMilliseconds();
isPlugged = SystemInformation.PowerStatus.PowerLineStatus;
Logger.WriteLine("AutoSetting for " + isPlugged.ToString());
BatteryControl.AutoBattery(init);
if (init) screenControl.InitMiniled();
inputDispatcher.Init();
@@ -240,6 +241,8 @@ namespace GHelper
{
settingsForm.AutoKeyboard();
}
return true;
}
private static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)

View File

@@ -740,6 +740,12 @@ Vil du stadig fortsætte?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Slå skærmen til/fra</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>
@@ -794,4 +800,4 @@ Vil du stadig fortsætte?</value>
<data name="Zoom" xml:space="preserve">
<value>Zoom</value>
</data>
</root>
</root>

View File

@@ -740,6 +740,12 @@ Trotzdem fortfahren?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Bildschirm umschalten</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Touchscreen umschalten</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>
@@ -794,4 +800,4 @@ Trotzdem fortfahren?</value>
<data name="Zoom" xml:space="preserve">
<value>Zoom</value>
</data>
</root>
</root>

View File

@@ -624,7 +624,7 @@
<value>Optimizado</value>
</data>
<data name="OptimizedGPUTooltip" xml:space="preserve">
<value>Cambia a Eco con batería y a Estándar cuando está enchufado</value>
<value>Cambiar a Eco con batería y a Estándar cuando está enchufado</value>
</data>
<data name="OptimizedUSBC" xml:space="preserve">
<value>Deshabilitar dGPU con cargador USB-C en modo Optimizado</value>
@@ -740,6 +740,12 @@
<data name="ToggleScreen" xml:space="preserve">
<value>Alternar pantalla</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Alternar pantalla táctil</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>
@@ -794,4 +800,4 @@
<data name="Zoom" xml:space="preserve">
<value>Zoom</value>
</data>
</root>
</root>

View File

@@ -740,6 +740,12 @@ Voulez-vous continuer ?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Allumer l'écran</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>
@@ -794,4 +800,4 @@ Voulez-vous continuer ?</value>
<data name="Zoom" xml:space="preserve">
<value>Zoom</value>
</data>
</root>
</root>

View File

@@ -127,7 +127,7 @@
<value>Restart your device to apply changes</value>
</data>
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
<value>Restart now?</value>
<value>Újraindítás most?</value>
</data>
<data name="AlertDGPU" xml:space="preserve">
<value>Úgy tűnik használatban van a GPU. Biztosan letiltod?</value>
@@ -235,7 +235,7 @@
<value>Görgetés</value>
</data>
<data name="AuraZoneUnderglow" xml:space="preserve">
<value>Underglow</value>
<value>Alsó világítás</value>
</data>
<data name="AutoApply" xml:space="preserve">
<value>Automatikus alkalmazás</value>
@@ -283,7 +283,7 @@
<value>Akku állapot</value>
</data>
<data name="BatteryLimitFull" xml:space="preserve">
<value>One time charge to 100%</value>
<value>Egyszeri 100%-os feltöltés</value>
</data>
<data name="Binding" xml:space="preserve">
<value>Binding</value>
@@ -313,7 +313,7 @@
<value>Fényerő növelése</value>
</data>
<data name="BWTrayIcon" xml:space="preserve">
<value>Black and white tray icon</value>
<value>Fekete-fehér tálca ikon</value>
</data>
<data name="Calibrate" xml:space="preserve">
<value>Kalibrálás</value>
@@ -325,10 +325,10 @@
<value>Szín</value>
</data>
<data name="Contrast" xml:space="preserve">
<value>Contrast</value>
<value>Kontraszt</value>
</data>
<data name="Controller" xml:space="preserve">
<value>Controller</value>
<value>Kontroller</value>
</data>
<data name="CPUBoost" xml:space="preserve">
<value>CPU gyorsítás</value>
@@ -343,10 +343,10 @@
<value>Alapért.</value>
</data>
<data name="DisableController" xml:space="preserve">
<value>Disable Controller</value>
<value>Kontoller letiltása</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value>
<value>Letiltása képernyő lehajtásakor</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Képernyőtúlhajtás letiltása</value>
@@ -355,7 +355,7 @@
<value>Merülés</value>
</data>
<data name="DownloadColorProfiles" xml:space="preserve">
<value>Download Color Profiles</value>
<value>Színprofilok letöltése</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>Letöltés</value>
@@ -384,7 +384,7 @@ Do you still want to continue?</value>
<value>Energia beállítások</value>
</data>
<data name="Export" xml:space="preserve">
<value>Export Profile</value>
<value>Profil exportálása</value>
</data>
<data name="Extra" xml:space="preserve">
<value>Extra</value>
@@ -420,16 +420,16 @@ Do you still want to continue?</value>
<value>Venti + energia</value>
</data>
<data name="FlickerFreeDimming" xml:space="preserve">
<value>Flicker-free Dimming</value>
<value>Villogásmentes halványítás</value>
</data>
<data name="FnLock" xml:space="preserve">
<value>Fn + F gyorsgombok feldolgozása Fn nélkül</value>
</data>
<data name="FnLockOff" xml:space="preserve">
<value>FN-Lock Off</value>
<value>Fn-Lock Ki</value>
</data>
<data name="FnLockOn" xml:space="preserve">
<value>FN-Lock On</value>
<value>Fn-Lock Be</value>
</data>
<data name="GPUBoost" xml:space="preserve">
<value>Dinamikus gyorsítás</value>
@@ -474,7 +474,7 @@ Do you still want to continue?</value>
<value>Image Rotation</value>
</data>
<data name="Import" xml:space="preserve">
<value>Import Profile</value>
<value>Profil importálása</value>
</data>
<data name="KeyBindings" xml:space="preserve">
<value>Gyorsbillentyűk</value>
@@ -495,7 +495,7 @@ Do you still want to continue?</value>
<value>Laptop kijelző</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED Status Indicators</value>
<value>LED Állapotjelzők</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Fedél</value>
@@ -507,7 +507,7 @@ Do you still want to continue?</value>
<value>Világítás</value>
</data>
<data name="LockScreen" xml:space="preserve">
<value>Lock Screen</value>
<value>Képernyő zarolása</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logó</value>
@@ -591,7 +591,7 @@ Do you still want to continue?</value>
<value>Multi Zone Strong</value>
</data>
<data name="Muted" xml:space="preserve">
<value>Muted</value>
<value>Mikrofon Ki</value>
</data>
<data name="MuteMic" xml:space="preserve">
<value>Mikrofon némítása</value>
@@ -609,10 +609,10 @@ Do you still want to continue?</value>
<value>Nincs csatlakoztatva</value>
</data>
<data name="Off" xml:space="preserve">
<value>Off</value>
<value>Ki</value>
</data>
<data name="On" xml:space="preserve">
<value>On</value>
<value>Be</value>
</data>
<data name="OneZone" xml:space="preserve">
<value>One Zone</value>
@@ -687,10 +687,10 @@ Do you still want to continue?</value>
<value>Scaling Quality</value>
</data>
<data name="ScreenPadDown" xml:space="preserve">
<value>Screenpad Brightness Down</value>
<value>Screenpad fényerő csökkentése</value>
</data>
<data name="ScreenPadUp" xml:space="preserve">
<value>Screenpad Brightness Up</value>
<value>Screenpad fényerő növelése</value>
</data>
<data name="Shutdown" xml:space="preserve">
<value>Leállítás</value>
@@ -740,6 +740,12 @@ Do you still want to continue?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Képernyő ki-/bekapcsolása</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Érintőképernyő ki-/bekapcsolása</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbó</value>
</data>
@@ -759,7 +765,7 @@ Do you still want to continue?</value>
<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="Unmuted" xml:space="preserve">
<value>Unmuted</value>
<value>Mikrofon Be</value>
</data>
<data name="Updates" xml:space="preserve">
<value>Frissítések</value>
@@ -771,7 +777,7 @@ Do you still want to continue?</value>
<value>Vibration Strength</value>
</data>
<data name="VisualMode" xml:space="preserve">
<value>Visual Mode</value>
<value>Képernyőszín Mód</value>
</data>
<data name="VisualModesHDR" xml:space="preserve">
<value>Visual Modes are not available when HDR is active</value>
@@ -794,4 +800,4 @@ Do you still want to continue?</value>
<data name="Zoom" xml:space="preserve">
<value>Zoom</value>
</data>
</root>
</root>

View File

@@ -740,6 +740,12 @@ Apakah Anda masih ingin melanjutkan?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Hidupkan/Matikan Layar</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>
@@ -794,4 +800,4 @@ Apakah Anda masih ingin melanjutkan?</value>
<data name="Zoom" xml:space="preserve">
<value>Perbesar</value>
</data>
</root>
</root>

View File

@@ -740,6 +740,12 @@ Sei sicuro di voler continuare?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Alterna Schermo</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>
@@ -794,4 +800,4 @@ Sei sicuro di voler continuare?</value>
<data name="Zoom" xml:space="preserve">
<value>Zoom</value>
</data>
</root>
</root>

View File

@@ -0,0 +1,803 @@
<?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>Can't connect to ASUS ACPI. Application can't function without it. Try to install Asus System Control Interface</value>
</data>
<data name="AlertAPUMemoryRestart" xml:space="preserve">
<value>Restart your device to apply changes</value>
</data>
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
<value>Restart now?</value>
</data>
<data name="AlertDGPU" xml:space="preserve">
<value>Looks like GPU is in heavy use, disable it?</value>
</data>
<data name="AlertDGPUTitle" xml:space="preserve">
<value>Eco Mode</value>
</data>
<data name="AlertUltimateOff" xml:space="preserve">
<value>Switching off Ultimate Mode requires restart</value>
</data>
<data name="AlertUltimateOn" xml:space="preserve">
<value>Ultimate Mode requires restart</value>
</data>
<data name="AlertUltimateTitle" xml:space="preserve">
<value>Reboot now?</value>
</data>
<data name="AllyController" xml:space="preserve">
<value>Ally Controller</value>
</data>
<data name="AnimationSpeed" xml:space="preserve">
<value>Animation Speed</value>
</data>
<data name="AnimeMatrix" xml:space="preserve">
<value>Anime Matrix</value>
</data>
<data name="AppAlreadyRunning" xml:space="preserve">
<value>App already running</value>
</data>
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper is already running. Check system tray for an icon.</value>
</data>
<data name="Apply" xml:space="preserve">
<value>Apply</value>
</data>
<data name="ApplyFanCurve" xml:space="preserve">
<value>Apply Custom Fan Curve</value>
</data>
<data name="ApplyPowerLimits" xml:space="preserve">
<value>Apply Power Limits</value>
</data>
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>Auto adjust Windows Power Modes</value>
</data>
<data name="APUMemory" xml:space="preserve">
<value>Memory Assigned to GPU</value>
</data>
<data name="AsusServicesRunning" xml:space="preserve">
<value>Asus Services Running</value>
</data>
<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>
<data name="AuraStatic" xml:space="preserve">
<value>Static</value>
</data>
<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>
<data name="AutoMode" xml:space="preserve">
<value>Auto</value>
</data>
<data name="AutoRefreshTooltip" xml:space="preserve">
<value>Sets 60Hz to save battery, and back when plugged</value>
</data>
<data name="Awake" xml:space="preserve">
<value>Awake</value>
</data>
<data name="BacklightLow" xml:space="preserve">
<value>Low</value>
</data>
<data name="BacklightMax" xml:space="preserve">
<value>Max</value>
</data>
<data name="BacklightMid" xml:space="preserve">
<value>Mid</value>
</data>
<data name="BacklightOff" xml:space="preserve">
<value>Off</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>Timeout plugged / on battery (0 - ON)</value>
</data>
<data name="BacklightTimeoutBattery" xml:space="preserve">
<value>Backlight Timeout when on battery</value>
</data>
<data name="BacklightTimeoutPlugged" xml:space="preserve">
<value>Backlight Timeout when plugged</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="Binding" xml:space="preserve">
<value>Binding</value>
</data>
<data name="BindingPrimary" xml:space="preserve">
<value>Primary</value>
</data>
<data name="BindingSecondary" xml:space="preserve">
<value>Secondary</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>
<data name="BrightnessDown" xml:space="preserve">
<value>Brightness Down</value>
</data>
<data name="BrightnessUp" xml:space="preserve">
<value>Brightness Up</value>
</data>
<data name="BWTrayIcon" xml:space="preserve">
<value>Black and white tray icon</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>
<data name="Contrast" xml:space="preserve">
<value>Contrast</value>
</data>
<data name="Controller" xml:space="preserve">
<value>Controller</value>
</data>
<data name="CPUBoost" xml:space="preserve">
<value>CPU Boost</value>
</data>
<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>
<data name="DisableController" xml:space="preserve">
<value>Disable Controller</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Disable screen overdrive</value>
</data>
<data name="Discharging" xml:space="preserve">
<value>Discharging</value>
</data>
<data name="DownloadColorProfiles" xml:space="preserve">
<value>Download Color Profiles</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>Download</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Drivers and Software</value>
</data>
<data name="EcoGPUTooltip" xml:space="preserve">
<value>Disables dGPU to save battery</value>
</data>
<data name="EcoMode" xml:space="preserve">
<value>Eco</value>
</data>
<data name="EnableGPUOnShutdown" xml:space="preserve">
<value>Enable GPU on shutdown (prevents issue with Eco mode)</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="Export" xml:space="preserve">
<value>Export Profile</value>
</data>
<data name="Extra" xml:space="preserve">
<value>Extra</value>
</data>
<data name="ExtraSettings" xml:space="preserve">
<value>Extra Settings</value>
</data>
<data name="FactoryDefaults" xml:space="preserve">
<value>Factory Defaults</value>
</data>
<data name="FanCurves" xml:space="preserve">
<value>Fan Curves</value>
</data>
<data name="FanProfileCPU" xml:space="preserve">
<value>CPU Fan Profile</value>
</data>
<data name="FanProfileGPU" xml:space="preserve">
<value>GPU Fan Profile</value>
</data>
<data name="FanProfileMid" xml:space="preserve">
<value>Mid Fan Profile</value>
</data>
<data name="FanProfiles" xml:space="preserve">
<value>Fan Profiles</value>
</data>
<data name="FansAndPower" xml:space="preserve">
<value>Fans and Power</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<value>Fan</value>
</data>
<data name="FansPower" xml:space="preserve">
<value>Fans + Power</value>
</data>
<data name="FlickerFreeDimming" xml:space="preserve">
<value>Flicker-free Dimming</value>
</data>
<data name="FnLock" xml:space="preserve">
<value>Process Fn+F hotkeys without Fn</value>
</data>
<data name="FnLockOff" xml:space="preserve">
<value>FN-Lock Off</value>
</data>
<data name="FnLockOn" xml:space="preserve">
<value>FN-Lock On</value>
</data>
<data name="GPUBoost" xml:space="preserve">
<value>Dynamic Boost</value>
</data>
<data name="GPUChanging" xml:space="preserve">
<value>Changing</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>GPU Mode</value>
</data>
<data name="GPUModeEco" xml:space="preserve">
<value>iGPU only</value>
</data>
<data name="GPUModeStandard" xml:space="preserve">
<value>iGPU + dGPU</value>
</data>
<data name="GPUModeUltimate" xml:space="preserve">
<value>dGPU exclusive</value>
</data>
<data name="GPUPower" xml:space="preserve">
<value>GPU Power</value>
</data>
<data name="GPUSettings" xml:space="preserve">
<value>GPU Settings</value>
</data>
<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="ImageRotation" xml:space="preserve">
<value>Image Rotation</value>
</data>
<data name="Import" xml:space="preserve">
<value>Import Profile</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="KillGpuApps" xml:space="preserve">
<value>Stop all apps using GPU when switching to 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>Laptop Screen</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED Status Indicators</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="LockScreen" xml:space="preserve">
<value>Lock Screen</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>
<data name="Low" xml:space="preserve">
<value>Low</value>
</data>
<data name="LSDeadzones" xml:space="preserve">
<value>Left Stick Deadzones</value>
</data>
<data name="LTDeadzones" xml:space="preserve">
<value>Left Trigger Deadzones</value>
</data>
<data name="MatrixAudio" xml:space="preserve">
<value>Audio Visualizer</value>
</data>
<data name="MatrixBanner" xml:space="preserve">
<value>Binary Banner</value>
</data>
<data name="MatrixBright" xml:space="preserve">
<value>Bright</value>
</data>
<data name="MatrixClock" xml:space="preserve">
<value>Clock</value>
</data>
<data name="MatrixDim" xml:space="preserve">
<value>Dim</value>
</data>
<data name="MatrixLogo" xml:space="preserve">
<value>Rog Logo</value>
</data>
<data name="MatrixMedium" xml:space="preserve">
<value>Medium</value>
</data>
<data name="MatrixOff" xml:space="preserve">
<value>Off</value>
</data>
<data name="MatrixPicture" xml:space="preserve">
<value>Picture</value>
</data>
<data name="MaxRefreshTooltip" xml:space="preserve">
<value>Max refresh rate for lower latency</value>
</data>
<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="MouseImportFailed" xml:space="preserve">
<value>Import failed. Selected file is not a valid mouse profile or corrutpted.</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>Multi Zone</value>
</data>
<data name="MultizoneStrong" xml:space="preserve">
<value>Multi Zone Strong</value>
</data>
<data name="Muted" xml:space="preserve">
<value>Muted</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="Off" xml:space="preserve">
<value>Off</value>
</data>
<data name="On" xml:space="preserve">
<value>On</value>
</data>
<data name="OneZone" xml:space="preserve">
<value>One Zone</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>Open G-Helper window</value>
</data>
<data name="Optimized" xml:space="preserve">
<value>Optimized</value>
</data>
<data name="OptimizedGPUTooltip" xml:space="preserve">
<value>Switch to Eco on battery and to Standard when plugged in</value>
</data>
<data name="OptimizedUSBC" xml:space="preserve">
<value>Keep GPU disabled on USB-C charger in Optimized mode</value>
</data>
<data name="Other" xml:space="preserve">
<value>Other</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>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>
<data name="PPTExperimental" xml:space="preserve">
<value>Power Limits is an experimental feature. Use carefully and at your own risk!</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>Quit</value>
</data>
<data name="Reset" xml:space="preserve">
<value>Reset</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="RSDeadzones" xml:space="preserve">
<value>Right Stick Deadzones</value>
</data>
<data name="RTDeadzones" xml:space="preserve">
<value>Right Trigger Deadzones</value>
</data>
<data name="RunOnStartup" xml:space="preserve">
<value>Run on Startup</value>
</data>
<data name="ScalingQuality" xml:space="preserve">
<value>Scaling Quality</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>
<data name="Silent" xml:space="preserve">
<value>Silent</value>
</data>
<data name="Sleep" xml:space="preserve">
<value>Sleep</value>
</data>
<data name="StandardGPUTooltip" xml:space="preserve">
<value>Enables dGPU for standard use</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>Starting Services</value>
</data>
<data name="StartupError" xml:space="preserve">
<value>Startup Error</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>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>
<data name="ToggleMiniled" xml:space="preserve">
<value>Toggle Miniled (if supported)</value>
</data>
<data name="ToggleScreen" xml:space="preserve">
<value>Toggle Screen</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>
<data name="TurnedOff" xml:space="preserve">
<value>Turned off</value>
</data>
<data name="TurnOffOnBattery" xml:space="preserve">
<value>Disable on battery</value>
</data>
<data name="UltimateGPUTooltip" xml:space="preserve">
<value>Routes laptop screen to dGPU, maximizing FPS</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="Unmuted" xml:space="preserve">
<value>Unmuted</value>
</data>
<data name="Updates" xml:space="preserve">
<value>Updates</value>
</data>
<data name="VersionLabel" xml:space="preserve">
<value>Version</value>
</data>
<data name="VibrationStrength" xml:space="preserve">
<value>Vibration Strength</value>
</data>
<data name="VisualMode" xml:space="preserve">
<value>Visual Mode</value>
</data>
<data name="VisualModesHDR" xml:space="preserve">
<value>Visual Modes are not available when HDR is active</value>
</data>
<data name="VisualModesScreen" xml:space="preserve">
<value>Visual Modes are not available when laptop screen is off</value>
</data>
<data name="VolumeDown" xml:space="preserve">
<value>Volume Down</value>
</data>
<data name="VolumeMute" xml:space="preserve">
<value>Volume Mute</value>
</data>
<data name="VolumeUp" xml:space="preserve">
<value>Volume Up</value>
</data>
<data name="WindowTop" xml:space="preserve">
<value>Keep app window always on top</value>
</data>
<data name="Zoom" xml:space="preserve">
<value>Zoom</value>
</data>
</root>

View File

@@ -740,6 +740,12 @@
<data name="ToggleScreen" xml:space="preserve">
<value>화면 전환 키</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>터보</value>
</data>
@@ -794,4 +800,4 @@
<data name="Zoom" xml:space="preserve">
<value>확대/축소</value>
</data>
</root>
</root>

View File

@@ -127,7 +127,7 @@
<value>Restart your device to apply changes</value>
</data>
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
<value>Restart now?</value>
<value>Paleisti iš naujo?</value>
</data>
<data name="AlertDGPU" xml:space="preserve">
<value>Panašu, kad jūsų GPU yra intensyviai naudojamas. Išjungti jį?</value>
@@ -289,10 +289,10 @@
<value>Binding</value>
</data>
<data name="BindingPrimary" xml:space="preserve">
<value>Primary</value>
<value>Pirminis</value>
</data>
<data name="BindingSecondary" xml:space="preserve">
<value>Secondary</value>
<value>Antrinis</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>BIOS ir tvarkyklių naujinimai</value>
@@ -740,6 +740,12 @@ Vis tiek norite tęsti?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Perjungti ekraną</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>
@@ -768,10 +774,10 @@ Vis tiek norite tęsti?</value>
<value>Versija</value>
</data>
<data name="VibrationStrength" xml:space="preserve">
<value>Vibration Strength</value>
<value>Vibracijos stiprumas</value>
</data>
<data name="VisualMode" xml:space="preserve">
<value>Visual Mode</value>
<value>Vizualinis režimas</value>
</data>
<data name="VisualModesHDR" xml:space="preserve">
<value>Visual Modes are not available when HDR is active</value>
@@ -794,4 +800,4 @@ Vis tiek norite tęsti?</value>
<data name="Zoom" xml:space="preserve">
<value>Zoom</value>
</data>
</root>
</root>

View File

@@ -740,6 +740,12 @@ Nadal chcesz kontynuować?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Przełącz ekran</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Włącz/wyłącz ekran dotykowy</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>
@@ -794,4 +800,4 @@ Nadal chcesz kontynuować?</value>
<data name="Zoom" xml:space="preserve">
<value>Przybliżenie</value>
</data>
</root>
</root>

View File

@@ -740,6 +740,12 @@ Do you still want to continue?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Alternar Tela</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>
@@ -794,4 +800,4 @@ Do you still want to continue?</value>
<data name="Zoom" xml:space="preserve">
<value>Zoom</value>
</data>
</root>
</root>

View File

@@ -740,6 +740,12 @@ Quer prosseguir?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Alternar Ecrã</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>
@@ -794,4 +800,4 @@ Quer prosseguir?</value>
<data name="Zoom" xml:space="preserve">
<value>Zoom</value>
</data>
</root>
</root>

View File

@@ -624,7 +624,7 @@ Do you still want to continue?</value>
<value>Optimized</value>
</data>
<data name="OptimizedGPUTooltip" xml:space="preserve">
<value>Switch to Eco on battery and to Standard when plugged</value>
<value>Switch to Eco on battery and to Standard when plugged in</value>
</data>
<data name="OptimizedUSBC" xml:space="preserve">
<value>Keep GPU disabled on USB-C charger in Optimized mode</value>
@@ -800,4 +800,4 @@ Do you still want to continue?</value>
<data name="Zoom" xml:space="preserve">
<value>Zoom</value>
</data>
</root>
</root>

View File

@@ -740,6 +740,12 @@
<data name="ToggleScreen" xml:space="preserve">
<value>Toggle Ecran</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>
@@ -794,4 +800,4 @@
<data name="Zoom" xml:space="preserve">
<value>Zoom</value>
</data>
</root>
</root>

View File

@@ -585,10 +585,10 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Fare ile eşitle</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>Çok Bölgeli</value>
<value>Çoklu Bölge</value>
</data>
<data name="MultizoneStrong" xml:space="preserve">
<value>Çok Bölgeli (Güçlü)</value>
<value>Çoklu Bölge Güçlü</value>
</data>
<data name="Muted" xml:space="preserve">
<value>Susturuldu</value>
@@ -615,7 +615,7 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Açık</value>
</data>
<data name="OneZone" xml:space="preserve">
<value>Tek Bölgeli</value>
<value>Tek Bölge</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>G-Helper penceresini aç</value>
@@ -624,7 +624,7 @@ Yine de devam etmek istiyor musunuz?</value>
<value>İyileştirilmiş</value>
</data>
<data name="OptimizedGPUTooltip" xml:space="preserve">
<value>Pil ile çalışırken Eko moda, şarjda Standart moda geçiş yap</value>
<value>Pil ile çalışırken Eco moda, Elektrik ile Standart moda geçilir</value>
</data>
<data name="OptimizedUSBC" xml:space="preserve">
<value>İyileştirilmiş modda USB-C şarj cihazı bağlıyken, GPU devre dışı kalsın</value>
@@ -726,20 +726,26 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Hizmetler Durduruluyor</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<value>Aura'yı Kullan</value>
<value>Aura Değiştir</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>
<value>Fn-Lock Değiştir</value>
</data>
<data name="ToggleMiniled" xml:space="preserve">
<value>Miniled'i Aç (destekliyorsa)</value>
<value>Miniled Değiştir (destekleniyorsa)</value>
</data>
<data name="ToggleScreen" xml:space="preserve">
<value>Ekranı Değiştir</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Dokunmatik Ekranı Değiştir</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>
@@ -750,7 +756,7 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Pille çalışırken kapat</value>
</data>
<data name="UltimateGPUTooltip" xml:space="preserve">
<value>Dizüstü ekranını dGPU üstüne yönlendirerek FPS en üst düzeye çıkar</value>
<value>Dizüstü ekranı doğrudan dGPU üstünden çalışır FPS artar</value>
</data>
<data name="UltimateMode" xml:space="preserve">
<value>Ultimate</value>
@@ -794,4 +800,4 @@ Yine de devam etmek istiyor musunuz?</value>
<data name="Zoom" xml:space="preserve">
<value>Yakınlaştır</value>
</data>
</root>
</root>

View File

@@ -507,7 +507,7 @@
<value>Ілюмінація</value>
</data>
<data name="LockScreen" xml:space="preserve">
<value>Lock Screen</value>
<value>Блокування екрану</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Лого</value>
@@ -740,6 +740,12 @@
<data name="ToggleScreen" xml:space="preserve">
<value>Вимкнути екран</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Сенсорний екран</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Турбо</value>
</data>
@@ -794,4 +800,4 @@
<data name="Zoom" xml:space="preserve">
<value>Зум</value>
</data>
</root>
</root>

View File

@@ -740,6 +740,12 @@ Do you still want to continue?</value>
<data name="ToggleScreen" xml:space="preserve">
<value>Bật tắt màn hình</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>
@@ -794,4 +800,4 @@ Do you still want to continue?</value>
<data name="Zoom" xml:space="preserve">
<value>Zoom</value>
</data>
</root>
</root>

View File

@@ -740,6 +740,12 @@
<data name="ToggleScreen" xml:space="preserve">
<value>关闭屏幕</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>Toggle Touchscreen</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>增强模式</value>
</data>
@@ -794,4 +800,4 @@
<data name="Zoom" xml:space="preserve">
<value>缩放</value>
</data>
</root>
</root>

View File

@@ -121,7 +121,7 @@
<value>滑鼠加速</value>
</data>
<data name="ACPIError" xml:space="preserve">
<value>無法連結到華碩 ACPI。 没有它,應用程式無法執行。 嘗試安裝Asus System Control Interface</value>
<value>無法連結到華碩 ACPI應用程式無法執行。 嘗試安裝 Asus System Control Interface</value>
</data>
<data name="AlertAPUMemoryRestart" xml:space="preserve">
<value>重新啟動裝置以套用變更</value>
@@ -130,7 +130,7 @@
<value>現在重新啟動?</value>
</data>
<data name="AlertDGPU" xml:space="preserve">
<value>看起 GPU 正在大量使用,是否禁用?</value>
<value>看起 GPU 正在被重度使用,是否禁用?</value>
</data>
<data name="AlertDGPUTitle" xml:space="preserve">
<value>節能模式</value>
@@ -139,10 +139,10 @@
<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="AllyController" xml:space="preserve">
<value>Ally控制器</value>
@@ -151,13 +151,13 @@
<value>動畫速度</value>
</data>
<data name="AnimeMatrix" xml:space="preserve">
<value>AniMeMatrix</value>
<value>AniMeMatrix</value>
</data>
<data name="AppAlreadyRunning" xml:space="preserve">
<value>程式正在執行</value>
<value>程式正在執行</value>
</data>
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper已經在執行。 請確認右下工作列中的圖示。</value>
<value>G-Helper在執行。 請檢查右下系統匣。</value>
</data>
<data name="Apply" xml:space="preserve">
<value>套用</value>
@@ -187,7 +187,7 @@
<value>順時針</value>
</data>
<data name="AuraColorCycle" xml:space="preserve">
<value>色循環</value>
<value>色循環</value>
</data>
<data name="AuraComet" xml:space="preserve">
<value>彗星</value>
@@ -244,7 +244,7 @@
<value>自動</value>
</data>
<data name="AutoRefreshTooltip" xml:space="preserve">
<value>電池模式時自動60Hz</value>
<value>使用電池時設定為 60Hz並在插上電源時恢復</value>
</data>
<data name="Awake" xml:space="preserve">
<value>喚醒時</value>
@@ -271,7 +271,7 @@
<value>閒置時關閉燈光(充電模式)</value>
</data>
<data name="Balanced" xml:space="preserve">
<value>平衡模式</value>
<value>效能</value>
</data>
<data name="BatteryCharge" xml:space="preserve">
<value>充電</value>
@@ -346,13 +346,13 @@
<value>停用控制器</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value>
<value>蓋上螢幕時取消</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>禁用螢幕加速OD</value>
</data>
<data name="Discharging" xml:space="preserve">
<value>正在釋放電力</value>
<value>使用電池中</value>
</data>
<data name="DownloadColorProfiles" xml:space="preserve">
<value>下載色彩設定檔</value>
@@ -370,7 +370,7 @@
<value>節能模式</value>
</data>
<data name="EnableGPUOnShutdown" xml:space="preserve">
<value>關機前啟動顯卡(解決切換顯卡節能模式&amp;標準模式和亮度的某些問題)</value>
<value>關機前啟動顯卡(解決切換顯卡節能模式&amp;混合輸出和亮度的某些問題)</value>
</data>
<data name="EnableOptimusText" xml:space="preserve">
<value>「Nvidia控制面板」中的顯示模式未設置為自動切換時透過G-Helper的節能模式禁用獨顯可能導致螢幕亮度控制出現問題直到下次重新開機後。
@@ -405,10 +405,10 @@
<value>GPU 風扇設定檔</value>
</data>
<data name="FanProfileMid" xml:space="preserve">
<value>中等風扇設</value>
<value>風扇設定檔</value>
</data>
<data name="FanProfiles" xml:space="preserve">
<value>風扇設</value>
<value>風扇設定檔</value>
</data>
<data name="FansAndPower" xml:space="preserve">
<value>風扇和電源</value>
@@ -417,13 +417,13 @@
<value>風扇</value>
</data>
<data name="FansPower" xml:space="preserve">
<value>自定義設置</value>
<value>自定義</value>
</data>
<data name="FlickerFreeDimming" xml:space="preserve">
<value>不閃屏調光(Flicker-free Dimming)</value>
</data>
<data name="FnLock" xml:space="preserve">
<value>使用Fn+F1~F12功能時按下Fn鍵</value>
<value>使用 Fn + F1~F12 功能時無須按下Fn鍵</value>
</data>
<data name="FnLockOff" xml:space="preserve">
<value>Fn鎖定解除</value>
@@ -432,7 +432,7 @@
<value>Fn鎖定</value>
</data>
<data name="GPUBoost" xml:space="preserve">
<value>動態加速</value>
<value>動態加速 (Dynamic Boost)</value>
</data>
<data name="GPUChanging" xml:space="preserve">
<value>切換中...</value>
@@ -489,7 +489,7 @@
<value>背光</value>
</data>
<data name="LaptopKeyboard" xml:space="preserve">
<value>鍵盤背光:</value>
<value>鍵盤背光</value>
</data>
<data name="LaptopScreen" xml:space="preserve">
<value>螢幕顯示</value>
@@ -621,13 +621,13 @@
<value>開啟G-Helper視窗</value>
</data>
<data name="Optimized" xml:space="preserve">
<value>自動模式</value>
<value>自動調節</value>
</data>
<data name="OptimizedGPUTooltip" xml:space="preserve">
<value>使用電池切換到節能模式,插入電源時切換到標準模式</value>
<value>使用電池切換到,插入電源時切換到標準模式</value>
</data>
<data name="OptimizedUSBC" xml:space="preserve">
<value>自動模式下使用USB-C充電時持續關閉獨顯</value>
<value>自動調節模式下使用USB-C充電時持續關閉獨顯</value>
</data>
<data name="Other" xml:space="preserve">
<value>其他</value>
@@ -636,7 +636,7 @@
<value>OD</value>
</data>
<data name="PerformanceMode" xml:space="preserve">
<value>性能模式:</value>
<value>性能模式</value>
</data>
<data name="Peripherals" xml:space="preserve">
<value>週邊設備</value>
@@ -648,7 +648,7 @@
<value>播放/暫停</value>
</data>
<data name="PollingRate" xml:space="preserve">
<value>輪率</value>
<value>輪率</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>功率限制</value>
@@ -669,10 +669,10 @@
<value>重設</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>有其他程式正在使用獨顯導致無法切換至節能模式. 是否讓G-Helper重新啟動獨顯? * 請自行評估風險</value>
<value>有其他程式正在使用獨顯導致無法切換至節能模式. 是否讓 G-Helper 於裝置管理員重新啟動獨顯? (請自行評估風險)</value>
</data>
<data name="RPM" xml:space="preserve">
<value>每分鐘轉數</value>
<value>RPM</value>
</data>
<data name="RSDeadzones" xml:space="preserve">
<value>右搖桿死區</value>
@@ -681,7 +681,7 @@
<value>右扳機(RT)死區</value>
</data>
<data name="RunOnStartup" xml:space="preserve">
<value>開機自動開啟</value>
<value>開機自動執行</value>
</data>
<data name="ScalingQuality" xml:space="preserve">
<value>縮放品質</value>
@@ -696,19 +696,19 @@
<value>關機時</value>
</data>
<data name="Silent" xml:space="preserve">
<value>安靜模式</value>
<value>靜音</value>
</data>
<data name="Sleep" xml:space="preserve">
<value>睡眠時</value>
</data>
<data name="StandardGPUTooltip" xml:space="preserve">
<value>標準模式會啟用獨顯</value>
<value>自動切換獨立顯卡以及整合式顯卡 (MS-Hybrid)</value>
</data>
<data name="StandardMode" xml:space="preserve">
<value>標準模式</value>
</data>
<data name="Start" xml:space="preserve">
<value>開始</value>
<value>啟動</value>
</data>
<data name="StartingServices" xml:space="preserve">
<value>正在啟動服務</value>
@@ -726,22 +726,28 @@
<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鍵使用Fn+F1~F12功能</value>
<value>切換 Fn-Lock</value>
</data>
<data name="ToggleMiniled" xml:space="preserve">
<value>切換Miniled(若有支援)</value>
<value>切換 mini-LED (若有支援)</value>
</data>
<data name="ToggleScreen" xml:space="preserve">
<value>切換螢幕</value>
</data>
<data name="ToggleTouchscreen" xml:space="preserve">
<value>切換螢幕觸控</value>
</data>
<data name="Touchscreen" xml:space="preserve">
<value/>
</data>
<data name="Turbo" xml:space="preserve">
<value>極速模式</value>
<value>極速</value>
</data>
<data name="TurnedOff" xml:space="preserve">
<value>已關閉</value>
@@ -750,10 +756,10 @@
<value>電池模式時關閉</value>
</data>
<data name="UltimateGPUTooltip" xml:space="preserve">
<value>開啟獨顯直連獲得最佳幀數</value>
<value>開啟獨顯輸出獲得最佳幀數</value>
</data>
<data name="UltimateMode" xml:space="preserve">
<value>獨顯直連</value>
<value>獨顯輸出</value>
</data>
<data name="UndervoltingRisky" xml:space="preserve">
<value>降壓是一項實驗性且有風險的功能,若設定的值過低,可能造成系統不穩定甚至無預警關機,建議可先嘗試較小的降壓數值,並點擊"套用"來測試適合你的使用狀況</value>
@@ -794,4 +800,4 @@
<data name="Zoom" xml:space="preserve">
<value>縮放</value>
</data>
</root>
</root>

View File

@@ -68,6 +68,7 @@ namespace GHelper
panelGPU = new Panel();
labelTipGPU = new Label();
tableAMD = new TableLayoutPanel();
buttonAutoTDP = new RButton();
buttonOverlay = new RButton();
buttonFPS = new RButton();
tableGPU = new TableLayoutPanel();
@@ -94,6 +95,7 @@ namespace GHelper
pictureScreen = new PictureBox();
labelSreen = new Label();
panelKeyboard = new Panel();
labelDynamicLighting = new Label();
tableLayoutKeyboard = new TableLayoutPanel();
buttonKeyboard = new RButton();
panelColor = new Panel();
@@ -135,7 +137,6 @@ namespace GHelper
labelGamma = new Label();
pictureGamma = new PictureBox();
labelGammaTitle = new Label();
buttonAutoTDP = new RButton();
panelMatrix.SuspendLayout();
panelMatrixAuto.SuspendLayout();
tableLayoutMatrix.SuspendLayout();
@@ -370,7 +371,7 @@ namespace GHelper
panelBattery.Controls.Add(sliderBattery);
panelBattery.Controls.Add(panelBatteryTitle);
panelBattery.Dock = DockStyle.Top;
panelBattery.Location = new Point(11, 1725);
panelBattery.Location = new Point(11, 1765);
panelBattery.Margin = new Padding(0);
panelBattery.Name = "panelBattery";
panelBattery.Padding = new Padding(20, 20, 20, 11);
@@ -462,7 +463,7 @@ namespace GHelper
panelFooter.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelFooter.Controls.Add(tableButtons);
panelFooter.Dock = DockStyle.Top;
panelFooter.Location = new Point(11, 1901);
panelFooter.Location = new Point(11, 1941);
panelFooter.Margin = new Padding(0);
panelFooter.Name = "panelFooter";
panelFooter.Padding = new Padding(20);
@@ -780,6 +781,28 @@ namespace GHelper
tableAMD.TabIndex = 24;
tableAMD.Visible = false;
//
// buttonAutoTDP
//
buttonAutoTDP.Activated = false;
buttonAutoTDP.BackColor = SystemColors.ControlLightLight;
buttonAutoTDP.BorderColor = Color.Transparent;
buttonAutoTDP.BorderRadius = 5;
buttonAutoTDP.Dock = DockStyle.Fill;
buttonAutoTDP.FlatAppearance.BorderSize = 0;
buttonAutoTDP.FlatStyle = FlatStyle.Flat;
buttonAutoTDP.ForeColor = SystemColors.ControlText;
buttonAutoTDP.Image = Properties.Resources.icons8_gauge_32;
buttonAutoTDP.ImageAlign = ContentAlignment.MiddleRight;
buttonAutoTDP.Location = new Point(528, 4);
buttonAutoTDP.Margin = new Padding(4);
buttonAutoTDP.Name = "buttonAutoTDP";
buttonAutoTDP.Secondary = false;
buttonAutoTDP.Size = new Size(255, 72);
buttonAutoTDP.TabIndex = 13;
buttonAutoTDP.Text = "AutoTDP";
buttonAutoTDP.TextImageRelation = TextImageRelation.ImageBeforeText;
buttonAutoTDP.UseVisualStyleBackColor = false;
//
// buttonOverlay
//
buttonOverlay.Activated = false;
@@ -1077,6 +1100,7 @@ namespace GHelper
tableScreen.Name = "tableScreen";
tableScreen.RowCount = 1;
tableScreen.RowStyles.Add(new RowStyle(SizeType.Absolute, 80F));
tableScreen.RowStyles.Add(new RowStyle(SizeType.Absolute, 20F));
tableScreen.Size = new Size(787, 100);
tableScreen.TabIndex = 23;
//
@@ -1229,6 +1253,7 @@ namespace GHelper
panelKeyboard.AccessibleRole = AccessibleRole.Grouping;
panelKeyboard.AutoSize = true;
panelKeyboard.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelKeyboard.Controls.Add(labelDynamicLighting);
panelKeyboard.Controls.Add(tableLayoutKeyboard);
panelKeyboard.Controls.Add(panelKeyboardTitle);
panelKeyboard.Dock = DockStyle.Top;
@@ -1236,10 +1261,25 @@ namespace GHelper
panelKeyboard.Margin = new Padding(0);
panelKeyboard.Name = "panelKeyboard";
panelKeyboard.Padding = new Padding(20);
panelKeyboard.Size = new Size(827, 132);
panelKeyboard.Size = new Size(827, 172);
panelKeyboard.TabIndex = 4;
panelKeyboard.TabStop = true;
//
// labelDynamicLighting
//
labelDynamicLighting.Cursor = Cursors.Hand;
labelDynamicLighting.Dock = DockStyle.Top;
labelDynamicLighting.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point);
labelDynamicLighting.ForeColor = SystemColors.GrayText;
labelDynamicLighting.Location = new Point(20, 112);
labelDynamicLighting.Margin = new Padding(4, 0, 4, 0);
labelDynamicLighting.Name = "labelDynamicLighting";
labelDynamicLighting.Padding = new Padding(4);
labelDynamicLighting.Size = new Size(787, 40);
labelDynamicLighting.TabIndex = 43;
labelDynamicLighting.Text = "Please disable Windows > Dynamic Lighting";
labelDynamicLighting.Visible = false;
//
// tableLayoutKeyboard
//
tableLayoutKeyboard.AutoSize = true;
@@ -1416,7 +1456,7 @@ namespace GHelper
panelVersion.Controls.Add(labelCharge);
panelVersion.Controls.Add(checkStartup);
panelVersion.Dock = DockStyle.Top;
panelVersion.Location = new Point(11, 1845);
panelVersion.Location = new Point(11, 1885);
panelVersion.Margin = new Padding(4);
panelVersion.Name = "panelVersion";
panelVersion.Size = new Size(827, 56);
@@ -1442,7 +1482,7 @@ namespace GHelper
panelPeripherals.Controls.Add(tableLayoutPeripherals);
panelPeripherals.Controls.Add(panelPeripheralsTile);
panelPeripherals.Dock = DockStyle.Top;
panelPeripherals.Location = new Point(11, 1526);
panelPeripherals.Location = new Point(11, 1566);
panelPeripherals.Margin = new Padding(0);
panelPeripherals.Name = "panelPeripherals";
panelPeripherals.Padding = new Padding(20, 20, 20, 11);
@@ -1895,28 +1935,6 @@ namespace GHelper
labelGammaTitle.TabIndex = 37;
labelGammaTitle.Text = "Flicker-free Dimming";
//
// buttonAutoTDP
//
buttonAutoTDP.Activated = false;
buttonAutoTDP.BackColor = SystemColors.ControlLightLight;
buttonAutoTDP.BorderColor = Color.Transparent;
buttonAutoTDP.BorderRadius = 5;
buttonAutoTDP.Dock = DockStyle.Fill;
buttonAutoTDP.FlatAppearance.BorderSize = 0;
buttonAutoTDP.FlatStyle = FlatStyle.Flat;
buttonAutoTDP.ForeColor = SystemColors.ControlText;
buttonAutoTDP.Image = Properties.Resources.icons8_gauge_32;
buttonAutoTDP.ImageAlign = ContentAlignment.MiddleRight;
buttonAutoTDP.Location = new Point(528, 4);
buttonAutoTDP.Margin = new Padding(4);
buttonAutoTDP.Name = "buttonAutoTDP";
buttonAutoTDP.Secondary = false;
buttonAutoTDP.Size = new Size(255, 72);
buttonAutoTDP.TabIndex = 13;
buttonAutoTDP.Text = "AutoTDP";
buttonAutoTDP.TextImageRelation = TextImageRelation.ImageBeforeText;
buttonAutoTDP.UseVisualStyleBackColor = false;
//
// SettingsForm
//
AutoScaleDimensions = new SizeF(192F, 192F);
@@ -2120,5 +2138,6 @@ namespace GHelper
private Label labelVisual;
private RButton buttonFHD;
private RButton buttonAutoTDP;
private Label labelDynamicLighting;
}
}

View File

@@ -24,7 +24,7 @@ namespace GHelper
public GPUModeControl gpuControl;
public AllyControl allyControl;
ScreenControl screenControl = new ScreenControl();
ScreenControl screenControl = new ScreenControl();
AutoUpdateControl updateControl;
AsusMouseSettings? mouseSettings;
@@ -224,6 +224,7 @@ namespace GHelper
sliderBattery.MouseUp += SliderBattery_MouseUp;
sliderBattery.KeyUp += SliderBattery_KeyUp;
sliderBattery.ValueChanged += SliderBattery_ValueChanged;
Program.trayIcon.MouseMove += TrayIcon_MouseMove;
@@ -251,7 +252,7 @@ namespace GHelper
buttonFPS.Click += ButtonFPS_Click;
buttonOverlay.Click += ButtonOverlay_Click;
buttonAutoTDP.Click += ButtonAutoTDP_Click;
buttonAutoTDP.BorderColor = colorTurbo;
@@ -268,15 +269,27 @@ namespace GHelper
labelVisual.Click += LabelVisual_Click;
labelCharge.Click += LabelCharge_Click;
labelDynamicLighting.Click += LabelDynamicLighting_Click;
panelPerformance.Focus();
InitVisual();
}
private void LabelDynamicLighting_Click(object? sender, EventArgs e)
{
DynamicLightingHelper.OpenSettings();
}
private void ButtonFHD_Click(object? sender, EventArgs e)
{
screenControl.ToogleFHD();
}
private void SliderBattery_ValueChanged(object? sender, EventArgs e)
{
VisualiseBatteryTitle(sliderBattery.Value);
}
private void SliderBattery_KeyUp(object? sender, KeyEventArgs e)
{
BatteryControl.SetBatteryChargeLimit(sliderBattery.Value);
@@ -319,7 +332,8 @@ namespace GHelper
sliderGamma.ValueChanged += SliderGamma_ValueChanged;
sliderGamma.MouseUp += SliderGamma_ValueChanged;
} else
}
else
{
labelGammaTitle.Text = Properties.Strings.VisualMode;
}
@@ -331,7 +345,8 @@ namespace GHelper
{
tableVisual.ColumnCount = 3;
buttonInstallColor.Visible = false;
} else
}
else
{
// If it's possible to retrieve color profiles
if (ColorProfileHelper.ProfileExists())
@@ -391,7 +406,7 @@ namespace GHelper
public void CycleVisualMode()
{
if (comboVisual.Items.Count < 1) return ;
if (comboVisual.Items.Count < 1) return;
if (comboVisual.SelectedIndex < comboVisual.Items.Count - 1)
comboVisual.SelectedIndex += 1;
@@ -409,14 +424,11 @@ namespace GHelper
private void ComboGamut_SelectedValueChanged(object? sender, EventArgs e)
{
AppConfig.Set("gamut", (int)comboGamut.SelectedValue);
VisualControl.SetGamut((int)comboGamut.SelectedValue);
}
private void ComboVisual_SelectedValueChanged(object? sender, EventArgs e)
{
AppConfig.Set("visual", (int)comboVisual.SelectedValue);
AppConfig.Set("color_temp", (int)comboColorTemp.SelectedValue);
VisualControl.SetVisual((SplendidCommand)comboVisual.SelectedValue, (int)comboColorTemp.SelectedValue);
}
@@ -431,6 +443,14 @@ namespace GHelper
});
}
public void VisualiseGamut()
{
Invoke(delegate
{
if (comboGamut.Items.Count > 0) comboGamut.SelectedIndex = 0;
});
}
private void SliderGamma_ValueChanged(object? sender, EventArgs e)
{
if (sliderGammaIgnore) return;
@@ -654,7 +674,7 @@ namespace GHelper
break;
case 1:
Logger.WriteLine("Monitor Power On");
Program.SetAutoModes();
if (!Program.SetAutoModes()) BatteryControl.AutoBattery();
break;
case 2:
Logger.WriteLine("Monitor Dimmed");
@@ -797,7 +817,7 @@ namespace GHelper
private void ButtonFHD_MouseHover(object? sender, EventArgs e)
{
labelTipScreen.Text = "Switch to "+ ((buttonFHD.Text == "FHD") ? "UHD" : "FHD") + " Mode";
labelTipScreen.Text = "Switch to " + ((buttonFHD.Text == "FHD") ? "UHD" : "FHD") + " Mode";
}
private void Button120Hz_MouseHover(object? sender, EventArgs e)
@@ -1074,21 +1094,26 @@ namespace GHelper
});
}
private void _VisualiseAura()
{
pictureColor.BackColor = Aura.Color1;
pictureColor2.BackColor = Aura.Color2;
pictureColor2.Visible = Aura.HasSecondColor();
if (AppConfig.IsDynamicLighting())
{
labelDynamicLighting.Visible = DynamicLightingHelper.IsEnabled();
labelDynamicLighting.ForeColor = colorStandard;
this.OnResize(null);
}
}
public void VisualiseAura()
{
if (InvokeRequired)
Invoke(delegate
{
pictureColor.BackColor = Aura.Color1;
pictureColor2.BackColor = Aura.Color2;
pictureColor2.Visible = Aura.HasSecondColor();
});
Invoke(_VisualiseAura);
else
{
pictureColor.BackColor = Aura.Color1;
pictureColor2.BackColor = Aura.Color2;
pictureColor2.Visible = Aura.HasSecondColor();
}
_VisualiseAura();
}
public void InitMatrix()
@@ -1269,7 +1294,8 @@ namespace GHelper
labelVisual.Width = tableVisual.Width;
labelVisual.Height = tableVisual.Height;
labelVisual.Visible = true;
} else
}
else
{
labelVisual.Visible = false;
}
@@ -1296,6 +1322,8 @@ namespace GHelper
if (updatesForm != null && updatesForm.Text != "") updatesForm.Close();
if (matrixForm != null && matrixForm.Text != "") matrixForm.Close();
if (handheldForm != null && handheldForm.Text != "") handheldForm.Close();
if (mouseSettings != null && mouseSettings.Text != "") mouseSettings.Close();
}
/// <summary>
@@ -1713,9 +1741,14 @@ namespace GHelper
but.BackColor = but.Enabled ? Color.FromArgb(255, but.BackColor) : Color.FromArgb(100, but.BackColor);
}
public void VisualiseBattery(int limit)
public void VisualiseBatteryTitle(int limit)
{
labelBatteryTitle.Text = Properties.Strings.BatteryChargeLimit + ": " + limit.ToString() + "%";
}
public void VisualiseBattery(int limit)
{
VisualiseBatteryTitle(limit);
sliderBattery.Value = limit;
sliderBattery.AccessibleName = Properties.Strings.BatteryChargeLimit + ": " + limit.ToString() + "%";

View File

@@ -1,7 +1,6 @@
using GHelper.Gpu;
using GHelper.Helpers;
using GHelper.Input;
using GHelper.Peripherals;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;
@@ -81,9 +80,9 @@ namespace GHelper.USB
public static Color Color2 = Color.Black;
static bool isACPI = AppConfig.IsTUF() || AppConfig.IsVivoZenbook() || AppConfig.IsProArt();
static bool isStrix = AppConfig.IsStrix() && !AppConfig.IsNoDirectRGB();
static bool isStrix = AppConfig.IsAdvancedRGB() && !AppConfig.IsNoDirectRGB();
static bool isStrix4Zone = AppConfig.IsStrixLimitedRGB();
static bool isStrix4Zone = AppConfig.Is4ZoneRGB();
static bool isStrixNumpad = AppConfig.IsStrixNumpad();
static public bool isSingleColor = false;
@@ -184,7 +183,7 @@ namespace GHelper.USB
return _modes;
}
if (AppConfig.IsStrix() && !AppConfig.IsStrixLimitedRGB())
if (AppConfig.IsAdvancedRGB() && !AppConfig.Is4ZoneRGB())
{
return _modesStrix;
}
@@ -242,20 +241,20 @@ namespace GHelper.USB
}
public static byte[] AuraMessage(AuraMode mode, Color color, Color color2, int speed, bool mono = false, byte zoneByte = 0x00)
public static byte[] AuraMessage(AuraMode mode, Color color, Color color2, int speed, bool mono = false)
{
byte[] msg = new byte[17];
msg[0] = AsusHid.AURA_ID;
msg[1] = 0xB3;
msg[2] = zoneByte; // Zone
msg[2] = 0x00; // Zone
msg[3] = (byte)mode; // Aura Mode
msg[4] = color.R; // R
msg[5] = mono ? (byte)0 : color.G; // G
msg[6] = mono ? (byte)0 : color.B; // B
msg[7] = (byte)speed; // aura.speed as u8;
msg[8] = 0x00; // aura.direction as u8;
msg[9] = mode == AuraMode.AuraBreathe ? (byte)1 : (byte)0;
msg[9] = (color.R == 0 && color.G == 0 && color.B == 0) ? (byte)0xFF : (byte)0x00; // random color flag
msg[10] = color2.R; // R
msg[11] = mono ? (byte)0 : color2.G; // G
msg[12] = mono ? (byte)0 : color2.B; // B
@@ -355,34 +354,36 @@ namespace GHelper.USB
public static void ApplyPower()
{
bool backlightBattery = AppConfig.IsBacklightZones() && (SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online);
AuraPower flags = new();
// Keyboard
flags.AwakeKeyb = AppConfig.IsNotFalse("keyboard_awake");
flags.AwakeKeyb = backlightBattery ? AppConfig.IsOnBattery("keyboard_awake") : AppConfig.IsNotFalse("keyboard_awake");
flags.BootKeyb = AppConfig.IsNotFalse("keyboard_boot");
flags.SleepKeyb = AppConfig.IsNotFalse("keyboard_sleep");
flags.ShutdownKeyb = AppConfig.IsNotFalse("keyboard_shutdown");
// Logo
flags.AwakeLogo = AppConfig.IsNotFalse("keyboard_awake_logo");
flags.AwakeLogo = backlightBattery ? AppConfig.IsOnBattery("keyboard_awake_logo") : AppConfig.IsNotFalse("keyboard_awake_logo");
flags.BootLogo = AppConfig.IsNotFalse("keyboard_boot_logo");
flags.SleepLogo = AppConfig.IsNotFalse("keyboard_sleep_logo");
flags.ShutdownLogo = AppConfig.IsNotFalse("keyboard_shutdown_logo");
// Lightbar
flags.AwakeBar = AppConfig.IsNotFalse("keyboard_awake_bar");
flags.AwakeBar = backlightBattery ? AppConfig.IsOnBattery("keyboard_awake_bar") : AppConfig.IsNotFalse("keyboard_awake_bar");
flags.BootBar = AppConfig.IsNotFalse("keyboard_boot_bar");
flags.SleepBar = AppConfig.IsNotFalse("keyboard_sleep_bar");
flags.ShutdownBar = AppConfig.IsNotFalse("keyboard_shutdown_bar");
// Lid
flags.AwakeLid = AppConfig.IsNotFalse("keyboard_awake_lid");
flags.AwakeLid = backlightBattery ? AppConfig.IsOnBattery("keyboard_awake_lid") : AppConfig.IsNotFalse("keyboard_awake_lid");
flags.BootLid = AppConfig.IsNotFalse("keyboard_boot_lid");
flags.SleepLid = AppConfig.IsNotFalse("keyboard_sleep_lid");
flags.ShutdownLid = AppConfig.IsNotFalse("keyboard_shutdown_lid");
// Rear Bar
flags.AwakeRear = AppConfig.IsNotFalse("keyboard_awake_lid");
flags.AwakeRear = backlightBattery ? AppConfig.IsOnBattery("keyboard_awake_lid") : AppConfig.IsNotFalse("keyboard_awake_lid");
flags.BootRear = AppConfig.IsNotFalse("keyboard_boot_lid");
flags.SleepRear = AppConfig.IsNotFalse("keyboard_sleep_lid");
flags.ShutdownRear = AppConfig.IsNotFalse("keyboard_shutdown_lid");
@@ -768,12 +769,6 @@ namespace GHelper.USB
{
if (isStrix) ApplyDirect(AmbientData.result, init);
else ApplyDirect(AmbientData.result[0], init);
foreach (var mouse in PeripheralsProvider.ConnectedMice)
{
mouse.SetColor(AmbientData.result[0]);
}
}
}

View File

@@ -7,15 +7,16 @@ namespace GHelper.USB
{
public static class XGM
{
const int XGM_ID = 0x1970;
const int ASUS_ID = 0x0b05;
static int[] deviceIds = { 0x1970, 0x1a9a};
public static void Write(byte[] data)
{
HidDeviceLoader loader = new HidDeviceLoader();
try
{
HidDevice device = loader.GetDevices(ASUS_ID, XGM_ID).Where(device => device.CanOpen && device.GetMaxFeatureReportLength() >= 300).FirstOrDefault();
HidDevice device = loader.GetDevices(ASUS_ID).Where(device => deviceIds.Contains(device.ProductID) && device.CanOpen && device.GetMaxFeatureReportLength() >= 300).FirstOrDefault();
if (device is null)
{

View File

@@ -60,14 +60,16 @@ namespace GHelper
ClearTable(tableBios);
ClearTable(tableDrivers);
string rogParam = AppConfig.IsROG() ? "&systemCode=rog" : "";
Task.Run(async () =>
{
DriversAsync($"https://rog.asus.com/support/webapi/product/GetPDBIOS?website=global&model={model}&cpu={model}", 1, tableBios);
DriversAsync($"https://rog.asus.com/support/webapi/product/GetPDBIOS?website=global&model={model}&cpu={model}{rogParam}", 1, tableBios);
});
Task.Run(async () =>
{
DriversAsync($"https://rog.asus.com/support/webapi/product/GetPDDrivers?website=global&model={model}&cpu={model}&osid=52", 0, tableDrivers);
DriversAsync($"https://rog.asus.com/support/webapi/product/GetPDDrivers?website=global&model={model}&cpu={model}&osid=52{rogParam}", 0, tableDrivers);
});
}

View File

@@ -1,5 +1,2 @@
{
"sdk": {
"version": "7.0.406"
}
}

View File

@@ -4,16 +4,29 @@
[![Github all releases](https://img.shields.io/github/downloads/seerge/g-helper/total)](https://GitHub.com/seerge/g-helper/releases/) [![GitHub stars](https://img.shields.io/github/stars/seerge/g-helper.svg?style=social)](https://GitHub.com/seerge/g-helper/stargazers/) <sup>[中文版点这里](https://github.com/seerge/g-helper/blob/main/docs/README.zh-CN.md)</sup>
Small and lightweight Armoury Crate alternative for Asus laptops offering almost same functionality without extra load and unnecessary services.
Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, Flow Z13, TUF Series, Strix / Scar Series, ProArt, Vivobook, Zenbook, ROG Ally and many more!
# [:floppy_disk:Download](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
**⭐ If you like the app - please spread the word about it online**
<table>
<tr>
<td><b>Support Project</b></td>
<td >
<a href="https://bit.ly/4c0ZWs9"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/paypal-eur.png" height="36" alt="PayPal EUR"></a>&nbsp;
<a href="https://bit.ly/4aGTyW8"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/paypal-usd.png" height="36" alt="PayPal USD"></a>&nbsp;
<a href="https://buy.stripe.com/bIY4hl8HbalH3G8bIJ"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/stripe.png" height="36" alt="Stripe"></a>&nbsp;
<a href="https://buy.stripe.com/bIY4hl8HbalH3G8bIJ"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/alipay.png" height="36" alt="Alipay"></a>
</td>
</tr>
</table>
- [FAQ](https://github.com/seerge/g-helper/wiki/FAQ)
- [Setup and Requirements](https://github.com/seerge/g-helper/wiki/Requirements)
- [Troubleshooting](https://github.com/seerge/g-helper/wiki/Troubleshooting)
- [Power User Settings](https://github.com/seerge/g-helper/wiki/Power-user-settings)
### Support project : [:euro: Paypal EUR](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA) | [💵 Paypal USD](https://www.paypal.com/donate/?hosted_button_id=SRM6QUX6ACXDY)
[![G-Helper Download](https://github.com/seerge/g-helper/assets/5920850/4d98465a-63a5-4498-ae14-afb3e67e7e82)](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
@@ -23,8 +36,8 @@ Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13
| [Josh Cravey](https://www.youtube.com/watch?v=hqe-PjuE-K8) | [cbutters Tech](https://www.youtube.com/watch?v=6aVdwJKZSSc) |
## 📰 Articles
1. https://binaryfork.com/ghelper-armoury-crate-alternative-10216/
2. https://www.digitaltrends.com/computing/g-helper-armoury-crate-alternative/
1. https://www.digitaltrends.com/computing/g-helper-armoury-crate-alternative/
2. https://binaryfork.com/ghelper-armoury-crate-alternative-10216/
## :gift: Advantages
@@ -44,7 +57,7 @@ Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13
4. Custom fan curve editor, power limits and turbo boost selection for every performance mode
5. Anime Matrix or Slash Lighting control including animated GIFs, clock and Audio visualizer
6. Backlight animation modes and colors
7. Custom hotkeys (M-keys, FN+X keys)
7. Hotkey handling
8. Monitor CPU and GPU temperature, fan speeds and battery status
9. Battery charge limit to preserve battery health
10. NVidia GPU overclocking and undervolting
@@ -92,18 +105,25 @@ Each BIOS mode is paired with matching Windows Power Mode. You can adjust this s
- ROG Chakram X (P708)
- ROG Chakram Core (P511)
- ROG Gladius II and Gladius II Origin (P502 and P504)
- ROG Gladius II Wireless
- ROG Gladius III
- ROG Gladius III Wireless
- ROG Harpe Ace Aim Lab Edition
- ROG Keris Wireless
- ROG Keris II Ace
- ROG Strix Carry (P508)
- ROG Strix III Gladius III Aimpoint Wireless (P711)
- ROG Strix Impact III (P518)
- ROG Spatha
- ROG Strix Impact II Wireless
- ROG Pugio
- ROG Pugio II
- TUF Gaming M4 Wireless (P306)
- TUF Gaming M3
- TUF Gaming M3 Gen II
- TUF Gaming M4 AIR
- TUF Gaming M5
- TX Gaming Mini
Huge thanks to [@IceStormNG](https://github.com/IceStormNG) 👑 for contribution and research (!).
@@ -137,13 +157,6 @@ Huge thanks to [@IceStormNG](https://github.com/IceStormNG) 👑 for contributio
- ``M + X`` - Screenshot
- ``M + Right Stick Click`` - Controller Mode
------------------
#### If you like the app you can make a Donation
| [Paypal in EUR](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA) | [Paypal in USD](https://www.paypal.com/donate/?hosted_button_id=SRM6QUX6ACXDY) |
| ------------------------------------------ | ----------------------------------------------- |
| [![QR Code](https://user-images.githubusercontent.com/5920850/233658717-0441494d-fede-4a2c-b4f2-4b16a184a69a.png)](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA) | [![QR Code](https://github-production-user-asset-6210df.s3.amazonaws.com/5920850/239492811-b487e89a-3df6-42ea-bdb8-24c455ab2310.png)](https://www.paypal.com/donate/?hosted_button_id=SRM6QUX6ACXDY) |
------------------
### 🔖 Important Notice
@@ -164,6 +177,6 @@ The role of G-Helper for your laptop is similar to the role of a remote control
- [AsusCtl](https://gitlab.com/asus-linux/asusctl) for inspiration and some reverse engineering
### Disclaimers
"ROG", "TUF", and "Armoury Crate" are trademarked by and belong to AsusTek Computer, Inc. I make no claims to these or any assets belonging to AsusTek Computer and use them purely for informational purposes only.
"Asus", "ROG", "TUF", and "Armoury Crate" are trademarked by and belong to AsusTek Computer, Inc. I make no claims to these or any assets belonging to AsusTek Computer and use them purely for informational purposes only.
THE SOFTWARE IS PROVIDED “AS IS” AND WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. MISUSE OF THIS SOFTWARE COULD CAUSE SYSTEM INSTABILITY OR MALFUNCTION.

View File

@@ -12,6 +12,17 @@ G-helper兼容所有主流型号例如 ROG 幻14、幻15、幻16、幻13、
# [:floppy_disk:下载应用](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
<table>
<tr>
<td><b>支持此项目</b></td>
<td >
<a href="https://bit.ly/4c0ZWs9"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/paypal.png" height="36" alt="PayPal"></a>&nbsp;
<a href="https://buy.stripe.com/bIY4hl8HbalH3G8bIJ"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/stripe.png" height="36" alt="Stripe"></a>&nbsp;
<a href="https://buy.stripe.com/bIY4hl8HbalH3G8bIJ"><img src="https://raw.githubusercontent.com/seerge/g-helper/main/docs/alipay.png" height="36" alt="Alipay"></a>
</td>
</tr>
</table>
如果你喜欢这个应用,请[给这个项目⭐️](https://github.com/seerge/g-helper) 或者向别人推荐它!
[常见问题解答(FAQ)](#常见问题解答)
@@ -20,8 +31,6 @@ G-helper兼容所有主流型号例如 ROG 幻14、幻15、幻16、幻13、
[高级用户设置](#高级用户设置)
### 通过paypal支持本项目[:euro: EUR](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA)或者[💵 USD](https://www.paypal.com/donate/?hosted_button_id=SRM6QUX6ACXDY)
[![G-Helper Download](https://github.com/pasical/g-helper/assets/112304778/03f442b9-29e8-4e99-a095-8eaa533c995b)](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
_如果你在别的地方提到这个软件-请记得加上这个项目的网址。十分感谢。_

BIN
docs/alipay.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
docs/paypal-eur.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
docs/paypal-usd.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
docs/paypal.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
docs/stripe.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB