mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
252cc9d868 | ||
|
|
0b03b62a2d | ||
|
|
ff7a5463d6 | ||
|
|
5134aaca9d | ||
|
|
2a5c2e02ac |
@@ -26,6 +26,7 @@ namespace GHelper.AnimeMatrix
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
mat = new AnimeMatrixDevice();
|
mat = new AnimeMatrixDevice();
|
||||||
|
Task.Run(mat.WakeUp);
|
||||||
matrixTimer = new System.Timers.Timer(100);
|
matrixTimer = new System.Timers.Timer(100);
|
||||||
matrixTimer.Elapsed += MatrixTimer_Elapsed;
|
matrixTimer.Elapsed += MatrixTimer_Elapsed;
|
||||||
}
|
}
|
||||||
@@ -122,6 +123,11 @@ namespace GHelper.AnimeMatrix
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
StopMatrixAudio();
|
||||||
|
}
|
||||||
|
|
||||||
void StopMatrixAudio()
|
void StopMatrixAudio()
|
||||||
{
|
{
|
||||||
if (AudioDevice is not null)
|
if (AudioDevice is not null)
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
using HidLibrary;
|
using HidLibrary;
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace GHelper
|
namespace GHelper
|
||||||
@@ -186,17 +185,23 @@ namespace GHelper
|
|||||||
private static HidDevice? GetInputDevice()
|
private static HidDevice? GetInputDevice()
|
||||||
{
|
{
|
||||||
HidDevice[] HidDeviceList = HidDevices.Enumerate(0x0b05, deviceIds).ToArray();
|
HidDevice[] HidDeviceList = HidDevices.Enumerate(0x0b05, deviceIds).ToArray();
|
||||||
|
HidDevice input = null;
|
||||||
|
|
||||||
foreach (HidDevice device in HidDeviceList)
|
foreach (HidDevice device in HidDeviceList)
|
||||||
if (device.ReadFeatureData(out byte[] data, HID_ID))
|
if (device.ReadFeatureData(out byte[] data, HID_ID))
|
||||||
return device;
|
{
|
||||||
return null;
|
input = device;
|
||||||
|
Logger.WriteLine("Input Events" + device.Capabilities.FeatureReportByteLength + "|" + device.Capabilities.InputReportByteLength + device.Description + device.DevicePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
return input;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void TouchpadToggle()
|
public static bool TouchpadToggle()
|
||||||
{
|
{
|
||||||
HidDevice? input = GetInputDevice();
|
HidDevice? input = GetInputDevice();
|
||||||
if (input != null) input.WriteFeatureData(new byte[] { HID_ID,0xf4,0x6b});
|
if (input != null) return input.WriteFeatureData(new byte[] { HID_ID, 0xf4, 0x6b });
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void RunListener(Action<int> KeyHandler)
|
public static void RunListener(Action<int> KeyHandler)
|
||||||
@@ -204,7 +209,7 @@ namespace GHelper
|
|||||||
HidDevice? input = GetInputDevice();
|
HidDevice? input = GetInputDevice();
|
||||||
if (input == null) return;
|
if (input == null) return;
|
||||||
|
|
||||||
Logger.WriteLine("Input Events " + input.DevicePath);
|
//Logger.WriteLine("Input Events " + input.DevicePath);
|
||||||
|
|
||||||
var task = Task.Run(() =>
|
var task = Task.Run(() =>
|
||||||
{
|
{
|
||||||
@@ -249,45 +254,41 @@ namespace GHelper
|
|||||||
|
|
||||||
public static void Init()
|
public static void Init()
|
||||||
{
|
{
|
||||||
|
Task.Run(() =>
|
||||||
var devices = GetHidDevices(deviceIds);
|
|
||||||
foreach (HidDevice device in devices)
|
|
||||||
{
|
{
|
||||||
device.OpenDevice();
|
var devices = GetHidDevices(deviceIds);
|
||||||
device.WriteFeatureData(LED_INIT1);
|
foreach (HidDevice device in devices)
|
||||||
device.WriteFeatureData(LED_INIT2);
|
{
|
||||||
device.WriteFeatureData(LED_INIT3);
|
device.OpenDevice();
|
||||||
device.WriteFeatureData(LED_INIT4);
|
device.WriteFeatureData(LED_INIT1);
|
||||||
device.WriteFeatureData(LED_INIT5);
|
device.WriteFeatureData(LED_INIT2);
|
||||||
device.CloseDevice();
|
device.WriteFeatureData(LED_INIT3);
|
||||||
}
|
device.WriteFeatureData(LED_INIT4);
|
||||||
|
device.WriteFeatureData(LED_INIT5);
|
||||||
|
device.CloseDevice();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void ApplyBrightness(int brightness)
|
public static void ApplyBrightness(int brightness)
|
||||||
{
|
{
|
||||||
byte[] msg = { 0x5d, 0xba, 0xc5, 0xc4, (byte)brightness };
|
Task.Run(() =>
|
||||||
|
|
||||||
var devices = GetHidDevices(deviceIds);
|
|
||||||
foreach (HidDevice device in devices)
|
|
||||||
{
|
{
|
||||||
|
byte[] msg = { 0x5d, 0xba, 0xc5, 0xc4, (byte)brightness };
|
||||||
|
|
||||||
|
var devices = GetHidDevices(deviceIds);
|
||||||
|
foreach (HidDevice device in devices)
|
||||||
|
{
|
||||||
|
device.OpenDevice();
|
||||||
|
device.WriteFeatureData(msg);
|
||||||
|
Logger.WriteLine("USB-KB " + device.Capabilities.FeatureReportByteLength + ":" + BitConverter.ToString(msg));
|
||||||
|
device.CloseDevice();
|
||||||
|
}
|
||||||
|
|
||||||
device.OpenDevice();
|
if (AppConfig.ContainsModel("TUF"))
|
||||||
|
Program.acpi.TUFKeyboardBrightness(brightness);
|
||||||
device.WriteFeatureData(LED_INIT1);
|
});
|
||||||
device.WriteFeatureData(LED_INIT2);
|
|
||||||
device.WriteFeatureData(LED_INIT3);
|
|
||||||
device.WriteFeatureData(LED_INIT4);
|
|
||||||
device.WriteFeatureData(LED_INIT5);
|
|
||||||
|
|
||||||
device.WriteFeatureData(msg);
|
|
||||||
Logger.WriteLine("USB-KB " + device.Capabilities.FeatureReportByteLength + ":" + BitConverter.ToString(msg));
|
|
||||||
device.CloseDevice();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (AppConfig.ContainsModel("TUF"))
|
|
||||||
Program.acpi.TUFKeyboardBrightness(brightness);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public static class HardwareControl
|
|||||||
if (fan > fanMax && fan < 110) SetFanMax(fan);
|
if (fan > fanMax && fan < 110) SetFanMax(fan);
|
||||||
|
|
||||||
if (AppConfig.getConfig("fan_rpm") == 1)
|
if (AppConfig.getConfig("fan_rpm") == 1)
|
||||||
return GHelper.Properties.Strings.FanSpeed + (fan * 100).ToString() + GHelper.Properties.Strings.RPM;
|
return GHelper.Properties.Strings.FanSpeed + (fan * 100).ToString() + "RPM";
|
||||||
else
|
else
|
||||||
return GHelper.Properties.Strings.FanSpeed + Math.Min(Math.Round((float)fan / fanMax * 100), 100).ToString() + "%"; // relatively to 6000 rpm
|
return GHelper.Properties.Strings.FanSpeed + Math.Min(Math.Round((float)fan / fanMax * 100), 100).ToString() + "%"; // relatively to 6000 rpm
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ using NAudio.CoreAudioApi;
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Management;
|
using System.Management;
|
||||||
using Tools;
|
using Tools;
|
||||||
using static NativeMethods;
|
|
||||||
|
|
||||||
namespace GHelper
|
namespace GHelper
|
||||||
{
|
{
|
||||||
@@ -212,17 +211,21 @@ namespace GHelper
|
|||||||
AsusUSB.ApplyBrightness(backlight);
|
AsusUSB.ApplyBrightness(backlight);
|
||||||
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, backlightNames[backlight], ToastIcon.BacklightUp);
|
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, backlightNames[backlight], ToastIcon.BacklightUp);
|
||||||
break;
|
break;
|
||||||
|
case 199: // ON Z13 - FN+F11 - cycles backlight
|
||||||
|
if (++backlight > 3) backlight = 0;
|
||||||
|
AppConfig.setConfig("keyboard_brightness", backlight);
|
||||||
|
AsusUSB.ApplyBrightness(backlight);
|
||||||
|
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, backlightNames[backlight], ToastIcon.BacklightUp);
|
||||||
|
break;
|
||||||
case 16: // FN+F7
|
case 16: // FN+F7
|
||||||
brightness = ScreenBrightness.Adjust(-10);
|
Program.acpi.DeviceSet(AsusACPI.UniversalControl, 0x10, "Brightness");
|
||||||
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, brightness + "%", ToastIcon.BrightnessDown);
|
|
||||||
break;
|
break;
|
||||||
case 32: // FN+F8
|
case 32: // FN+F8
|
||||||
brightness = ScreenBrightness.Adjust(+10);
|
Program.acpi.DeviceSet(AsusACPI.UniversalControl, 0x20, "Brightness");
|
||||||
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, brightness + "%", ToastIcon.BrightnessUp);
|
|
||||||
break;
|
break;
|
||||||
case 107: // FN+F10
|
case 107: // FN+F10
|
||||||
bool touchpadState = GetTouchpadState();
|
bool touchpadState = GetTouchpadState();
|
||||||
AsusUSB.TouchpadToggle();
|
if (!AsusUSB.TouchpadToggle()) Program.acpi.DeviceSet(AsusACPI.UniversalControl, 0x6B, "Touchpad");
|
||||||
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, touchpadState ? "Off" : "On", ToastIcon.Touchpad);
|
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, touchpadState ? "Off" : "On", ToastIcon.Touchpad);
|
||||||
break;
|
break;
|
||||||
case 108: // FN+F11
|
case 108: // FN+F11
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ namespace GHelper
|
|||||||
Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentUICulture;
|
Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentUICulture;
|
||||||
Debug.WriteLine(CultureInfo.CurrentUICulture);
|
Debug.WriteLine(CultureInfo.CurrentUICulture);
|
||||||
|
|
||||||
//Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("es");
|
//Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("uk");
|
||||||
|
|
||||||
CheckProcesses();
|
CheckProcesses();
|
||||||
|
|
||||||
@@ -65,7 +65,7 @@ namespace GHelper
|
|||||||
}
|
}
|
||||||
|
|
||||||
Logger.WriteLine("------------");
|
Logger.WriteLine("------------");
|
||||||
Logger.WriteLine("App launched: " + AppConfig.GetModel() + " :" + Assembly.GetExecutingAssembly().GetName().Version.ToString() + (IsUserAdministrator() ? "A" : ""));
|
Logger.WriteLine("App launched: " + AppConfig.GetModel() + " :" + Assembly.GetExecutingAssembly().GetName().Version.ToString() + CultureInfo.CurrentUICulture + (IsUserAdministrator() ? "A" : ""));
|
||||||
|
|
||||||
Application.EnableVisualStyles();
|
Application.EnableVisualStyles();
|
||||||
|
|
||||||
|
|||||||
2
app/Properties/Strings.Designer.cs
generated
2
app/Properties/Strings.Designer.cs
generated
@@ -169,7 +169,7 @@ namespace GHelper.Properties {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Auto adjust Windows Power Mode.
|
/// Looks up a localized string similar to Auto adjust Windows Power Modes.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string ApplyWindowsPowerPlan {
|
internal static string ApplyWindowsPowerPlan {
|
||||||
get {
|
get {
|
||||||
|
|||||||
@@ -154,7 +154,7 @@
|
|||||||
<value>Apply Power Limits</value>
|
<value>Apply Power Limits</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||||
<value>Auto adjust Windows Power Mode</value>
|
<value>Auto adjust Windows Power Modes</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraBreathe" xml:space="preserve">
|
<data name="AuraBreathe" xml:space="preserve">
|
||||||
<value>Breathe</value>
|
<value>Breathe</value>
|
||||||
|
|||||||
@@ -154,7 +154,7 @@
|
|||||||
<value>Застосувати потужність</value>
|
<value>Застосувати потужність</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||||
<value>Автоматично застосовувати Windows Power Mode</value>
|
<value>Автоматично застосовувати Windows Power Modes</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuraBreathe" xml:space="preserve">
|
<data name="AuraBreathe" xml:space="preserve">
|
||||||
<value>Дихання</value>
|
<value>Дихання</value>
|
||||||
|
|||||||
@@ -889,6 +889,7 @@ namespace GHelper
|
|||||||
|
|
||||||
private void ButtonQuit_Click(object? sender, EventArgs e)
|
private void ButtonQuit_Click(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
matrix.Dispose();
|
||||||
Close();
|
Close();
|
||||||
Program.trayIcon.Visible = false;
|
Program.trayIcon.Visible = false;
|
||||||
Application.Exit();
|
Application.Exit();
|
||||||
|
|||||||
@@ -101,13 +101,11 @@ Open "Event Viewer" from start menu, go to Windows Logs -> Application and check
|
|||||||
#### Battery charge limiter is not working
|
#### Battery charge limiter is not working
|
||||||
Open application log.text from ``%AppData%\GHelper`` . If you see something like ``BatteryLimit = 60 : OK`` there (with your selected limit). App has done everything it could to set a limit. It could be that MyASUS or other Asus services are overwriting this limit after. You may want to right click and save this [debloat.bat](https://raw.githubusercontent.com/seerge/g-helper/main/debloat.bat) and then right-click Run it As Admin. It will stop not mandatory asus services.
|
Open application log.text from ``%AppData%\GHelper`` . If you see something like ``BatteryLimit = 60 : OK`` there (with your selected limit). App has done everything it could to set a limit. It could be that MyASUS or other Asus services are overwriting this limit after. You may want to right click and save this [debloat.bat](https://raw.githubusercontent.com/seerge/g-helper/main/debloat.bat) and then right-click Run it As Admin. It will stop not mandatory asus services.
|
||||||
|
|
||||||
What you can also try is to open ``C:\ProgramData\ASUS\ASUS System Control Interface\ASUSOptimization\Customization.ini`` and find following section from that file : ``[BatteryHealthCharging] ... value=100`` and either delete it or put same value as you use in G-helper.
|
|
||||||
|
|
||||||
#### Can I use MyASUS app along with G-Helper?
|
#### Can I use MyASUS app along with G-Helper?
|
||||||
You can, the only problem is that MyASUS may override the battery charge limit that you set before. My advice in such a situation would be to set the same limit (i.e. 80%) in both MyASUS and G-Helper.
|
You can, the only problem is that MyASUS may override the battery charge limit that you set before. My advice in such a situation would be to set the same limit (i.e. 80%) in both MyASUS and G-Helper.
|
||||||
|
|
||||||
#### How do I set Mute Microphone to M3?
|
#### How do I set Mute Microphone to M3?
|
||||||
This function is handled by Asus Optimization Service (therefore G-helper doesn't interfere and doesn't touch this function). Make sure that this service is up and running
|
If you have Asus Optimization Service running, it's controlled by that service (therefore G-helper doesn't interfere and doesn't touch this function). Alternatively you can stop that service - and you can bind M3 to anything you want.
|
||||||
|
|
||||||
#### How do I set different "Visual styles"?
|
#### How do I set different "Visual styles"?
|
||||||
Personally, i'm not a big fan of them, as they make colors very inaccurate. But if you want so - you can adjust display colors using either Nvidia Control panel or AMD Adrenaline (appropriate display sections). If you really want you can also use [own ASUS utility from MS Store](https://apps.microsoft.com/store/detail/gamevisual/9P4K1LFTXSH8?hl=nl-nl&gl=nl&rtc=1)
|
Personally, i'm not a big fan of them, as they make colors very inaccurate. But if you want so - you can adjust display colors using either Nvidia Control panel or AMD Adrenaline (appropriate display sections). If you really want you can also use [own ASUS utility from MS Store](https://apps.microsoft.com/store/detail/gamevisual/9P4K1LFTXSH8?hl=nl-nl&gl=nl&rtc=1)
|
||||||
@@ -147,9 +145,7 @@ It's a lightweight Armoury Crate alternative for Asus laptops. A small utility t
|
|||||||
|
|
||||||
### Recommendations (optional)
|
### Recommendations (optional)
|
||||||
|
|
||||||
- I recommend keeping "Asus Optimization Service" running, as it keeps basic laptop hotkeys such as screen or keyboard brightness adjustment working.
|
- You can disable / remove unnecessary services. Ruight click and save [debloat.bat](https://raw.githubusercontent.com/seerge/g-helper/main/debloat.bat). Then right click and Run it as Admin. To restore services - save and run [bloat.bat](https://raw.githubusercontent.com/seerge/g-helper/main/bloat.bat) instead.
|
||||||
|
|
||||||
- Optionally(!) you can disable / remove unnecessary services. Ruight click and save [debloat.bat](https://raw.githubusercontent.com/seerge/g-helper/main/debloat.bat). Then right click and Run it as Admin. To restore services - save and run [bloat.bat](https://raw.githubusercontent.com/seerge/g-helper/main/bloat.bat) instead.
|
|
||||||
|
|
||||||
- It's not recommended to use an app in combination with Armoury Crate services, because they adjust the same settings. You can [uninstall it using it's own uninstall tool](https://dlcdnets.asus.com/pub/ASUS/mb/14Utilities/Armoury_Crate_Uninstall_Tool.zip?model=armoury%20crate). Just in case, you can always install it back later.
|
- It's not recommended to use an app in combination with Armoury Crate services, because they adjust the same settings. You can [uninstall it using it's own uninstall tool](https://dlcdnets.asus.com/pub/ASUS/mb/14Utilities/Armoury_Crate_Uninstall_Tool.zip?model=armoury%20crate). Just in case, you can always install it back later.
|
||||||
|
|
||||||
@@ -200,7 +196,7 @@ Full list of keycodes https://learn.microsoft.com/en-us/windows/win32/inputdev/v
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
### Workaround for [bugged bios on G15](https://github.com/seerge/g-helper/issues/253)
|
### Workaround for [bugged bios on G15](https://github.com/seerge/g-helper/issues/253) when external monitor is connected
|
||||||
|
|
||||||
Some people reported that on G15 model bios can be bugged and either not turn on or not turn off fans, when you set custom fan curve (in Armoury or g-helper, or any other app)
|
Some people reported that on G15 model bios can be bugged and either not turn on or not turn off fans, when you set custom fan curve (in Armoury or g-helper, or any other app)
|
||||||
I have added a very optional workaround as it was asked, on launch app will try to disable and re-enable dGPU when external monitor is connected, that seems to wake up fans :)
|
I have added a very optional workaround as it was asked, on launch app will try to disable and re-enable dGPU when external monitor is connected, that seems to wake up fans :)
|
||||||
|
|||||||
Reference in New Issue
Block a user