mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
314d25c751 | ||
|
|
b52163949c | ||
|
|
f0ee2b8aac | ||
|
|
1603f625ed | ||
|
|
8f66006791 | ||
|
|
39387041fe | ||
|
|
400b2cd6cb | ||
|
|
b20442e61f | ||
|
|
6d219511fc | ||
|
|
2282820453 | ||
|
|
d4fcfe8895 |
@@ -60,7 +60,7 @@ public static class AppConfig
|
|||||||
{
|
{
|
||||||
|
|
||||||
GetModel();
|
GetModel();
|
||||||
return (_model is not null && _model.Contains(contains));
|
return (_model is not null && _model.ToLower().Contains(contains.ToLower()));
|
||||||
|
|
||||||
}
|
}
|
||||||
private static void initConfig()
|
private static void initConfig()
|
||||||
|
|||||||
@@ -83,6 +83,7 @@ public class AsusACPI
|
|||||||
public const int TUF_KB_STATE = 0x00100057;
|
public const int TUF_KB_STATE = 0x00100057;
|
||||||
|
|
||||||
public const int TabletState = 0x00060077;
|
public const int TabletState = 0x00060077;
|
||||||
|
public const int FnLock = 0x00100023;
|
||||||
|
|
||||||
public const int Tablet_Notebook = 0;
|
public const int Tablet_Notebook = 0;
|
||||||
public const int Tablet_Tablet = 1;
|
public const int Tablet_Tablet = 1;
|
||||||
|
|||||||
30
app/Extra.Designer.cs
generated
30
app/Extra.Designer.cs
generated
@@ -83,6 +83,7 @@ namespace GHelper
|
|||||||
checkSleepLid = new CheckBox();
|
checkSleepLid = new CheckBox();
|
||||||
checkShutdownLid = new CheckBox();
|
checkShutdownLid = new CheckBox();
|
||||||
groupOther = new GroupBox();
|
groupOther = new GroupBox();
|
||||||
|
checkFnLock = new CheckBox();
|
||||||
checkGpuApps = new CheckBox();
|
checkGpuApps = new CheckBox();
|
||||||
checkAutoApplyWindowsPowerMode = new CheckBox();
|
checkAutoApplyWindowsPowerMode = new CheckBox();
|
||||||
checkKeyboardAuto = new CheckBox();
|
checkKeyboardAuto = new CheckBox();
|
||||||
@@ -684,6 +685,7 @@ namespace GHelper
|
|||||||
//
|
//
|
||||||
// groupOther
|
// groupOther
|
||||||
//
|
//
|
||||||
|
groupOther.Controls.Add(checkFnLock);
|
||||||
groupOther.Controls.Add(checkGpuApps);
|
groupOther.Controls.Add(checkGpuApps);
|
||||||
groupOther.Controls.Add(checkAutoApplyWindowsPowerMode);
|
groupOther.Controls.Add(checkAutoApplyWindowsPowerMode);
|
||||||
groupOther.Controls.Add(checkKeyboardAuto);
|
groupOther.Controls.Add(checkKeyboardAuto);
|
||||||
@@ -693,15 +695,26 @@ namespace GHelper
|
|||||||
groupOther.Dock = DockStyle.Top;
|
groupOther.Dock = DockStyle.Top;
|
||||||
groupOther.Location = new Point(10, 897);
|
groupOther.Location = new Point(10, 897);
|
||||||
groupOther.Name = "groupOther";
|
groupOther.Name = "groupOther";
|
||||||
groupOther.Size = new Size(954, 310);
|
groupOther.Size = new Size(954, 352);
|
||||||
groupOther.TabIndex = 2;
|
groupOther.TabIndex = 2;
|
||||||
groupOther.TabStop = false;
|
groupOther.TabStop = false;
|
||||||
groupOther.Text = "Other";
|
groupOther.Text = "Other";
|
||||||
//
|
//
|
||||||
|
// checkFnLock
|
||||||
|
//
|
||||||
|
checkFnLock.AutoSize = true;
|
||||||
|
checkFnLock.Location = new Point(25, 89);
|
||||||
|
checkFnLock.MaximumSize = new Size(780, 0);
|
||||||
|
checkFnLock.Name = "checkFnLock";
|
||||||
|
checkFnLock.Size = new Size(397, 36);
|
||||||
|
checkFnLock.TabIndex = 49;
|
||||||
|
checkFnLock.Text = "Process Fn+F hotkeys without Fn";
|
||||||
|
checkFnLock.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
// checkGpuApps
|
// checkGpuApps
|
||||||
//
|
//
|
||||||
checkGpuApps.AutoSize = true;
|
checkGpuApps.AutoSize = true;
|
||||||
checkGpuApps.Location = new Point(25, 220);
|
checkGpuApps.Location = new Point(25, 128);
|
||||||
checkGpuApps.Name = "checkGpuApps";
|
checkGpuApps.Name = "checkGpuApps";
|
||||||
checkGpuApps.Size = new Size(544, 36);
|
checkGpuApps.Size = new Size(544, 36);
|
||||||
checkGpuApps.TabIndex = 48;
|
checkGpuApps.TabIndex = 48;
|
||||||
@@ -711,7 +724,7 @@ namespace GHelper
|
|||||||
// checkAutoApplyWindowsPowerMode
|
// checkAutoApplyWindowsPowerMode
|
||||||
//
|
//
|
||||||
checkAutoApplyWindowsPowerMode.AutoSize = true;
|
checkAutoApplyWindowsPowerMode.AutoSize = true;
|
||||||
checkAutoApplyWindowsPowerMode.Location = new Point(25, 268);
|
checkAutoApplyWindowsPowerMode.Location = new Point(25, 296);
|
||||||
checkAutoApplyWindowsPowerMode.Name = "checkAutoApplyWindowsPowerMode";
|
checkAutoApplyWindowsPowerMode.Name = "checkAutoApplyWindowsPowerMode";
|
||||||
checkAutoApplyWindowsPowerMode.Size = new Size(416, 36);
|
checkAutoApplyWindowsPowerMode.Size = new Size(416, 36);
|
||||||
checkAutoApplyWindowsPowerMode.TabIndex = 47;
|
checkAutoApplyWindowsPowerMode.TabIndex = 47;
|
||||||
@@ -721,7 +734,7 @@ namespace GHelper
|
|||||||
// checkKeyboardAuto
|
// checkKeyboardAuto
|
||||||
//
|
//
|
||||||
checkKeyboardAuto.AutoSize = true;
|
checkKeyboardAuto.AutoSize = true;
|
||||||
checkKeyboardAuto.Location = new Point(25, 40);
|
checkKeyboardAuto.Location = new Point(25, 50);
|
||||||
checkKeyboardAuto.MaximumSize = new Size(780, 0);
|
checkKeyboardAuto.MaximumSize = new Size(780, 0);
|
||||||
checkKeyboardAuto.Name = "checkKeyboardAuto";
|
checkKeyboardAuto.Name = "checkKeyboardAuto";
|
||||||
checkKeyboardAuto.Size = new Size(712, 36);
|
checkKeyboardAuto.Size = new Size(712, 36);
|
||||||
@@ -732,7 +745,7 @@ namespace GHelper
|
|||||||
// checkUSBC
|
// checkUSBC
|
||||||
//
|
//
|
||||||
checkUSBC.AutoSize = true;
|
checkUSBC.AutoSize = true;
|
||||||
checkUSBC.Location = new Point(25, 85);
|
checkUSBC.Location = new Point(25, 170);
|
||||||
checkUSBC.Name = "checkUSBC";
|
checkUSBC.Name = "checkUSBC";
|
||||||
checkUSBC.Size = new Size(659, 36);
|
checkUSBC.Size = new Size(659, 36);
|
||||||
checkUSBC.TabIndex = 4;
|
checkUSBC.TabIndex = 4;
|
||||||
@@ -742,7 +755,7 @@ namespace GHelper
|
|||||||
// checkNoOverdrive
|
// checkNoOverdrive
|
||||||
//
|
//
|
||||||
checkNoOverdrive.AutoSize = true;
|
checkNoOverdrive.AutoSize = true;
|
||||||
checkNoOverdrive.Location = new Point(25, 130);
|
checkNoOverdrive.Location = new Point(25, 212);
|
||||||
checkNoOverdrive.Name = "checkNoOverdrive";
|
checkNoOverdrive.Name = "checkNoOverdrive";
|
||||||
checkNoOverdrive.Size = new Size(307, 36);
|
checkNoOverdrive.Size = new Size(307, 36);
|
||||||
checkNoOverdrive.TabIndex = 3;
|
checkNoOverdrive.TabIndex = 3;
|
||||||
@@ -752,7 +765,7 @@ namespace GHelper
|
|||||||
// checkTopmost
|
// checkTopmost
|
||||||
//
|
//
|
||||||
checkTopmost.AutoSize = true;
|
checkTopmost.AutoSize = true;
|
||||||
checkTopmost.Location = new Point(25, 175);
|
checkTopmost.Location = new Point(25, 254);
|
||||||
checkTopmost.Name = "checkTopmost";
|
checkTopmost.Name = "checkTopmost";
|
||||||
checkTopmost.Size = new Size(390, 36);
|
checkTopmost.Size = new Size(390, 36);
|
||||||
checkTopmost.TabIndex = 1;
|
checkTopmost.TabIndex = 1;
|
||||||
@@ -765,7 +778,7 @@ namespace GHelper
|
|||||||
AutoScaleMode = AutoScaleMode.Font;
|
AutoScaleMode = AutoScaleMode.Font;
|
||||||
AutoSize = true;
|
AutoSize = true;
|
||||||
AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||||
ClientSize = new Size(974, 1220);
|
ClientSize = new Size(974, 1262);
|
||||||
Controls.Add(groupOther);
|
Controls.Add(groupOther);
|
||||||
Controls.Add(groupLight);
|
Controls.Add(groupLight);
|
||||||
Controls.Add(groupBindings);
|
Controls.Add(groupBindings);
|
||||||
@@ -859,5 +872,6 @@ namespace GHelper
|
|||||||
private NumericUpDown numericBacklightPluggedTime;
|
private NumericUpDown numericBacklightPluggedTime;
|
||||||
private Label labelBacklightTimeoutPlugged;
|
private Label labelBacklightTimeoutPlugged;
|
||||||
private CheckBox checkGpuApps;
|
private CheckBox checkGpuApps;
|
||||||
|
private CheckBox checkFnLock;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
13
app/Extra.cs
13
app/Extra.cs
@@ -1,4 +1,5 @@
|
|||||||
using CustomControls;
|
using CustomControls;
|
||||||
|
using Microsoft.VisualBasic.Devices;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
|
||||||
namespace GHelper
|
namespace GHelper
|
||||||
@@ -93,6 +94,7 @@ namespace GHelper
|
|||||||
checkTopmost.Text = Properties.Strings.WindowTop;
|
checkTopmost.Text = Properties.Strings.WindowTop;
|
||||||
checkUSBC.Text = Properties.Strings.OptimizedUSBC;
|
checkUSBC.Text = Properties.Strings.OptimizedUSBC;
|
||||||
checkAutoApplyWindowsPowerMode.Text = Properties.Strings.ApplyWindowsPowerPlan;
|
checkAutoApplyWindowsPowerMode.Text = Properties.Strings.ApplyWindowsPowerPlan;
|
||||||
|
checkFnLock.Text = Properties.Strings.FnLock;
|
||||||
|
|
||||||
labelBacklight.Text = Properties.Strings.Keyboard;
|
labelBacklight.Text = Properties.Strings.Keyboard;
|
||||||
labelBacklightBar.Text = Properties.Strings.Lightbar;
|
labelBacklightBar.Text = Properties.Strings.Lightbar;
|
||||||
@@ -222,6 +224,17 @@ namespace GHelper
|
|||||||
checkGpuApps.Checked = AppConfig.isConfig("kill_gpu_apps");
|
checkGpuApps.Checked = AppConfig.isConfig("kill_gpu_apps");
|
||||||
checkGpuApps.CheckedChanged += CheckGpuApps_CheckedChanged;
|
checkGpuApps.CheckedChanged += CheckGpuApps_CheckedChanged;
|
||||||
|
|
||||||
|
checkFnLock.Checked = AppConfig.isConfig("fn_lock");
|
||||||
|
checkFnLock.CheckedChanged += CheckFnLock_CheckedChanged; ;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CheckFnLock_CheckedChanged(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
int fnLock = checkFnLock.Checked ? 1 : 0;
|
||||||
|
AppConfig.setConfig("fn_lock", fnLock);
|
||||||
|
Program.acpi.DeviceSet(AsusACPI.FnLock, (fnLock == 1) ? 0 : 1, "FnLock");
|
||||||
|
|
||||||
|
Program.inputDispatcher.RegisterKeys();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CheckGpuApps_CheckedChanged(object? sender, EventArgs e)
|
private void CheckGpuApps_CheckedChanged(object? sender, EventArgs e)
|
||||||
|
|||||||
@@ -417,7 +417,6 @@ namespace GHelper
|
|||||||
|
|
||||||
powerVisible = panelPower.Visible = modeA0;
|
powerVisible = panelPower.Visible = modeA0;
|
||||||
panelB0.Visible = modeB0;
|
panelB0.Visible = modeB0;
|
||||||
panelC1.Visible = modeC1;
|
|
||||||
|
|
||||||
|
|
||||||
// All AMD version has B0 but doesn't have C0 (Nvidia GPU) settings
|
// All AMD version has B0 but doesn't have C0 (Nvidia GPU) settings
|
||||||
@@ -431,6 +430,7 @@ namespace GHelper
|
|||||||
{
|
{
|
||||||
labelLeftA0.Text = "CPU Slow (SPL + sPPT)";
|
labelLeftA0.Text = "CPU Slow (SPL + sPPT)";
|
||||||
labelLeftC1.Text = "CPU Fast (fPPT)";
|
labelLeftC1.Text = "CPU Fast (fPPT)";
|
||||||
|
panelC1.Visible = modeC1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int limit_total;
|
int limit_total;
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
||||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||||
<AssemblyVersion>0.73</AssemblyVersion>
|
<AssemblyVersion>0.75</AssemblyVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||||
|
|||||||
@@ -1,13 +1,9 @@
|
|||||||
using NvAPIWrapper;
|
using NvAPIWrapper.GPU;
|
||||||
using NvAPIWrapper.GPU;
|
|
||||||
using NvAPIWrapper.Native;
|
using NvAPIWrapper.Native;
|
||||||
using NvAPIWrapper.Native.Delegates;
|
|
||||||
using NvAPIWrapper.Native.GPU;
|
using NvAPIWrapper.Native.GPU;
|
||||||
using NvAPIWrapper.Native.GPU.Structures;
|
using NvAPIWrapper.Native.GPU.Structures;
|
||||||
using NvAPIWrapper.Native.Interfaces.GPU;
|
using NvAPIWrapper.Native.Interfaces.GPU;
|
||||||
using System;
|
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Management;
|
|
||||||
using static NvAPIWrapper.Native.GPU.Structures.PerformanceStates20InfoV1;
|
using static NvAPIWrapper.Native.GPU.Structures.PerformanceStates20InfoV1;
|
||||||
|
|
||||||
namespace GHelper.Gpu;
|
namespace GHelper.Gpu;
|
||||||
@@ -58,7 +54,7 @@ public class NvidiaGpuControl : IGpuControl
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Process[] processes = internalGpu.GetActiveApplications();
|
Process[] processes = internalGpu.GetActiveApplications();
|
||||||
foreach (Process process in processes)
|
foreach (Process process in processes)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -98,10 +94,11 @@ public class NvidiaGpuControl : IGpuControl
|
|||||||
Logger.WriteLine($"GET GPU CLOCKS: {core}, {memory}");
|
Logger.WriteLine($"GET GPU CLOCKS: {core}, {memory}");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
} catch (Exception ex)
|
}
|
||||||
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.WriteLine("GET GPU CLOCKS:" + ex.Message);
|
Logger.WriteLine("GET GPU CLOCKS:" + ex.Message);
|
||||||
core = memory = 0;
|
core = memory = 0;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -155,7 +152,7 @@ public class NvidiaGpuControl : IGpuControl
|
|||||||
//Thread.Sleep(2000);
|
//Thread.Sleep(2000);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch (Exception ex )
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.WriteLine(ex.ToString());
|
Logger.WriteLine(ex.ToString());
|
||||||
return false;
|
return false;
|
||||||
@@ -195,7 +192,7 @@ public class NvidiaGpuControl : IGpuControl
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.WriteLine("SET GPU CLOCKS: "+ex.Message);
|
Logger.WriteLine("SET GPU CLOCKS: " + ex.Message);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,9 +19,12 @@ public static class HardwareControl
|
|||||||
public static int GetFanMax()
|
public static int GetFanMax()
|
||||||
{
|
{
|
||||||
int max = 58;
|
int max = 58;
|
||||||
|
int configMax = AppConfig.getConfig("fan_max");
|
||||||
|
if (configMax > 100) configMax = 0; // skipping inadvequate settings
|
||||||
|
|
||||||
if (AppConfig.ContainsModel("401")) max = 72;
|
if (AppConfig.ContainsModel("401")) max = 72;
|
||||||
else if (AppConfig.ContainsModel("503")) max = 68;
|
else if (AppConfig.ContainsModel("503")) max = 68;
|
||||||
return Math.Max(max, AppConfig.getConfig("fan_max"));
|
return Math.Max(max, configMax);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SetFanMax(int fan)
|
public static void SetFanMax(int fan)
|
||||||
@@ -179,4 +182,38 @@ public static class HardwareControl
|
|||||||
Debug.WriteLine(ex.ToString());
|
Debug.WriteLine(ex.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void KillGPUApps()
|
||||||
|
{
|
||||||
|
|
||||||
|
List<string> tokill = new() { "EADesktop", "RadeonSoftware", "epicgameslauncher" };
|
||||||
|
|
||||||
|
if (AppConfig.isConfig("kill_gpu_apps"))
|
||||||
|
{
|
||||||
|
tokill.Add("nvdisplay.container");
|
||||||
|
tokill.Add("nvcontainer");
|
||||||
|
tokill.Add("nvcplui");
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (string kill in tokill)
|
||||||
|
foreach (var process in Process.GetProcessesByName(kill))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
process.Kill();
|
||||||
|
Logger.WriteLine($"Stopped: {process.ProcessName}");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.WriteLine($"Failed to stop: {process.ProcessName} {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (AppConfig.isConfig("kill_gpu_apps") && GpuControl is not null && GpuControl.IsNvidia)
|
||||||
|
{
|
||||||
|
NvidiaGpuControl nvControl = (NvidiaGpuControl)GpuControl;
|
||||||
|
nvControl.KillGPUApps();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
using HidLibrary;
|
using HidLibrary;
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
using NAudio.CoreAudioApi;
|
using NAudio.CoreAudioApi;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Management;
|
using System.Management;
|
||||||
using Tools;
|
|
||||||
|
|
||||||
namespace GHelper
|
namespace GHelper
|
||||||
{
|
{
|
||||||
@@ -57,34 +55,22 @@ namespace GHelper
|
|||||||
System.Timers.Timer timer = new System.Timers.Timer(1000);
|
System.Timers.Timer timer = new System.Timers.Timer(1000);
|
||||||
public bool backlight = true;
|
public bool backlight = true;
|
||||||
|
|
||||||
private static nint windowHandle;
|
|
||||||
|
|
||||||
public static Keys keyProfile = Keys.F5;
|
public static Keys keyProfile = Keys.F5;
|
||||||
public static Keys keyApp = Keys.F12;
|
public static Keys keyApp = Keys.F12;
|
||||||
|
|
||||||
KeyboardListener listener;
|
KeyboardListener listener;
|
||||||
|
KeyboardHook hook = new KeyboardHook();
|
||||||
|
|
||||||
KeyHandler m1, m2, handlerProfile, handlerApp;
|
public InputDispatcher()
|
||||||
|
|
||||||
public InputDispatcher(nint handle)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
windowHandle = handle;
|
|
||||||
|
|
||||||
byte[] result = Program.acpi.DeviceInit();
|
byte[] result = Program.acpi.DeviceInit();
|
||||||
Debug.WriteLine($"Init: {BitConverter.ToString(result)}");
|
Debug.WriteLine($"Init: {BitConverter.ToString(result)}");
|
||||||
|
|
||||||
Program.acpi.SubscribeToEvents(WatcherEventArrived);
|
Program.acpi.SubscribeToEvents(WatcherEventArrived);
|
||||||
//Task.Run(Program.acpi.RunListener);
|
//Task.Run(Program.acpi.RunListener);
|
||||||
|
|
||||||
// CTRL + SHIFT + F5 to cycle profiles
|
hook.KeyPressed += new EventHandler<KeyPressedEventArgs>(KeyPressed);
|
||||||
if (AppConfig.getConfig("keybind_profile") != -1) keyProfile = (Keys)AppConfig.getConfig("keybind_profile");
|
|
||||||
|
|
||||||
handlerProfile = new KeyHandler(KeyHandler.SHIFT | KeyHandler.CTRL, keyProfile, windowHandle);
|
|
||||||
handlerApp = new KeyHandler(KeyHandler.SHIFT | KeyHandler.CTRL, keyApp, windowHandle);
|
|
||||||
|
|
||||||
m1 = new KeyHandler(KeyHandler.NOMOD, Keys.VolumeDown, windowHandle);
|
|
||||||
m2 = new KeyHandler(KeyHandler.NOMOD, Keys.VolumeUp, windowHandle);
|
|
||||||
|
|
||||||
RegisterKeys();
|
RegisterKeys();
|
||||||
|
|
||||||
@@ -100,7 +86,7 @@ namespace GHelper
|
|||||||
|
|
||||||
if (SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online)
|
if (SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online)
|
||||||
kb_timeout = AppConfig.getConfig("keyboard_ac_timeout", 0);
|
kb_timeout = AppConfig.getConfig("keyboard_ac_timeout", 0);
|
||||||
else
|
else
|
||||||
kb_timeout = AppConfig.getConfig("keyboard_timeout", 60);
|
kb_timeout = AppConfig.getConfig("keyboard_timeout", 60);
|
||||||
|
|
||||||
if (kb_timeout == 0) return;
|
if (kb_timeout == 0) return;
|
||||||
@@ -142,20 +128,26 @@ namespace GHelper
|
|||||||
|
|
||||||
public void RegisterKeys()
|
public void RegisterKeys()
|
||||||
{
|
{
|
||||||
|
hook.UnregisterAll();
|
||||||
|
|
||||||
|
// CTRL + SHIFT + F5 to cycle profiles
|
||||||
|
if (AppConfig.getConfig("keybind_profile") != -1) keyProfile = (Keys)AppConfig.getConfig("keybind_profile");
|
||||||
|
if (AppConfig.getConfig("keybind_app") != -1) keyApp = (Keys)AppConfig.getConfig("keybind_app");
|
||||||
|
|
||||||
string actionM1 = AppConfig.getConfigString("m1");
|
string actionM1 = AppConfig.getConfigString("m1");
|
||||||
string actionM2 = AppConfig.getConfigString("m2");
|
string actionM2 = AppConfig.getConfigString("m2");
|
||||||
|
|
||||||
handlerProfile.Unregiser();
|
if (keyProfile != Keys.None) hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control, keyProfile);
|
||||||
m1.Unregiser();
|
if (keyApp != Keys.None) hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control, keyApp);
|
||||||
m2.Unregiser();
|
|
||||||
|
|
||||||
if (keyProfile != Keys.None) handlerProfile.Register();
|
if (!AppConfig.ContainsModel("Z13"))
|
||||||
if (keyApp != Keys.None) handlerApp.Register();
|
if (actionM1 is not null && actionM1.Length > 0) hook.RegisterHotKey(ModifierKeys.None, Keys.VolumeDown);
|
||||||
|
if (actionM2 is not null && actionM2.Length > 0) hook.RegisterHotKey(ModifierKeys.None, Keys.VolumeUp);
|
||||||
|
|
||||||
if (actionM1 is not null && actionM1.Length > 0) m1.Register();
|
// FN-Lock group
|
||||||
|
|
||||||
if (actionM2 is not null && actionM2.Length > 0) m2.Register();
|
if (AppConfig.isConfig("fn_lock") && !AppConfig.ContainsModel("VivoBook"))
|
||||||
|
for (Keys i = Keys.F1; i <= Keys.F11; i++) hook.RegisterHotKey(ModifierKeys.None, i);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -175,12 +167,102 @@ namespace GHelper
|
|||||||
|
|
||||||
|
|
||||||
if (intKey > 0)
|
if (intKey > 0)
|
||||||
NativeMethods.KeyPress(intKey);
|
KeyboardHook.KeyPress((Keys)intKey);
|
||||||
else
|
else
|
||||||
LaunchProcess(command);
|
LaunchProcess(command);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void KeyPressed(object sender, KeyPressedEventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (e.Modifier == ModifierKeys.None)
|
||||||
|
{
|
||||||
|
Logger.WriteLine(e.Key.ToString());
|
||||||
|
|
||||||
|
if (AppConfig.ContainsModel("Z13"))
|
||||||
|
{
|
||||||
|
switch (e.Key)
|
||||||
|
{
|
||||||
|
case Keys.F2:
|
||||||
|
KeyboardHook.KeyPress(Keys.VolumeDown);
|
||||||
|
return;
|
||||||
|
case Keys.F3:
|
||||||
|
KeyboardHook.KeyPress(Keys.VolumeUp);
|
||||||
|
return;
|
||||||
|
case Keys.F4:
|
||||||
|
KeyProcess("m3");
|
||||||
|
return;
|
||||||
|
case Keys.F11:
|
||||||
|
OptimizationEvent(199);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
switch (e.Key)
|
||||||
|
{
|
||||||
|
case Keys.F1:
|
||||||
|
KeyboardHook.KeyPress(Keys.VolumeMute);
|
||||||
|
break;
|
||||||
|
case Keys.F2:
|
||||||
|
OptimizationEvent(197);
|
||||||
|
break;
|
||||||
|
case Keys.F3:
|
||||||
|
OptimizationEvent(196);
|
||||||
|
break;
|
||||||
|
case Keys.F4:
|
||||||
|
KeyProcess("fnf4");
|
||||||
|
break;
|
||||||
|
case Keys.F5:
|
||||||
|
KeyProcess("fnf5");
|
||||||
|
break;
|
||||||
|
case Keys.F6:
|
||||||
|
KeyboardHook.KeyPress(Keys.Snapshot);
|
||||||
|
break;
|
||||||
|
case Keys.F7:
|
||||||
|
if (AppConfig.ContainsModel("TUF"))
|
||||||
|
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, ScreenBrightness.Adjust(-10) + "%", ToastIcon.BrightnessDown);
|
||||||
|
OptimizationEvent(16);
|
||||||
|
break;
|
||||||
|
case Keys.F8:
|
||||||
|
if (AppConfig.ContainsModel("TUF"))
|
||||||
|
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, ScreenBrightness.Adjust(+10) + "%", ToastIcon.BrightnessUp);
|
||||||
|
OptimizationEvent(32);
|
||||||
|
break;
|
||||||
|
case Keys.F9:
|
||||||
|
KeyboardHook.KeyWinPress(Keys.P);
|
||||||
|
break;
|
||||||
|
case Keys.F10:
|
||||||
|
OptimizationEvent(107);
|
||||||
|
break;
|
||||||
|
case Keys.F11:
|
||||||
|
OptimizationEvent(108);
|
||||||
|
break;
|
||||||
|
case Keys.F12:
|
||||||
|
KeyboardHook.KeyWinPress(Keys.A);
|
||||||
|
break;
|
||||||
|
case Keys.VolumeDown:
|
||||||
|
KeyProcess("m1");
|
||||||
|
break;
|
||||||
|
case Keys.VolumeUp:
|
||||||
|
KeyProcess("m2");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (e.Modifier == (ModifierKeys.Control | ModifierKeys.Shift))
|
||||||
|
{
|
||||||
|
if (e.Key == keyProfile) Program.settingsForm.CyclePerformanceMode();
|
||||||
|
if (e.Key == keyApp) Program.SettingsToggle();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void KeyProcess(string name = "m3")
|
public static void KeyProcess(string name = "m3")
|
||||||
{
|
{
|
||||||
string action = AppConfig.getConfigString(name);
|
string action = AppConfig.getConfigString(name);
|
||||||
@@ -200,13 +282,13 @@ namespace GHelper
|
|||||||
switch (action)
|
switch (action)
|
||||||
{
|
{
|
||||||
case "mute":
|
case "mute":
|
||||||
NativeMethods.KeyPress(NativeMethods.VK_VOLUME_MUTE);
|
KeyboardHook.KeyPress(Keys.VolumeMute);
|
||||||
break;
|
break;
|
||||||
case "play":
|
case "play":
|
||||||
NativeMethods.KeyPress(NativeMethods.VK_MEDIA_PLAY_PAUSE);
|
KeyboardHook.KeyPress(Keys.MediaPlayPause);
|
||||||
break;
|
break;
|
||||||
case "screenshot":
|
case "screenshot":
|
||||||
NativeMethods.KeyPress(NativeMethods.VK_SNAPSHOT);
|
KeyboardHook.KeyPress(Keys.Snapshot);
|
||||||
break;
|
break;
|
||||||
case "screen":
|
case "screen":
|
||||||
NativeMethods.TurnOffScreen(Program.settingsForm.Handle);
|
NativeMethods.TurnOffScreen(Program.settingsForm.Handle);
|
||||||
@@ -252,6 +334,13 @@ namespace GHelper
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void ToggleFnLock()
|
||||||
|
{
|
||||||
|
int fnLock = AppConfig.isConfig("fn_lock") ? 0 : 1;
|
||||||
|
AppConfig.setConfig("fn_lock", fnLock);
|
||||||
|
Program.acpi.DeviceSet(AsusACPI.FnLock, (fnLock == 1) ? 0 : 1, "FnLock");
|
||||||
|
}
|
||||||
|
|
||||||
static void TabletMode()
|
static void TabletMode()
|
||||||
{
|
{
|
||||||
bool touchpadState = GetTouchpadState();
|
bool touchpadState = GetTouchpadState();
|
||||||
@@ -283,9 +372,16 @@ namespace GHelper
|
|||||||
case 189: // Tablet mode
|
case 189: // Tablet mode
|
||||||
TabletMode();
|
TabletMode();
|
||||||
return;
|
return;
|
||||||
|
case 78: // Fn + ESC
|
||||||
|
ToggleFnLock();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (OptimizationService.IsRunning()) return;
|
if (!OptimizationService.IsRunning()) OptimizationEvent(EventID);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void OptimizationEvent(int EventID)
|
||||||
|
{
|
||||||
|
|
||||||
// Asus Optimization service Events
|
// Asus Optimization service Events
|
||||||
|
|
||||||
|
|||||||
173
app/KeyboardHook.cs
Normal file
173
app/KeyboardHook.cs
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
public sealed class KeyboardHook : IDisposable
|
||||||
|
{
|
||||||
|
// Registers a hot key with Windows.
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
private static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk);
|
||||||
|
// Unregisters the hot key with Windows.
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
private static extern bool UnregisterHotKey(IntPtr hWnd, int id);
|
||||||
|
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam);
|
||||||
|
|
||||||
|
[DllImport("user32.dll", SetLastError = true)]
|
||||||
|
public static extern void keybd_event(byte virtualKey, byte scanCode, uint flags, IntPtr extraInfo);
|
||||||
|
|
||||||
|
public const int KEYEVENTF_EXTENDEDKEY = 1;
|
||||||
|
public const int KEYEVENTF_KEYUP = 2;
|
||||||
|
private const byte VK_LWIN = 0x5B;
|
||||||
|
|
||||||
|
public static void KeyPress(Keys key)
|
||||||
|
{
|
||||||
|
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void KeyWinPress(Keys key)
|
||||||
|
{
|
||||||
|
keybd_event(VK_LWIN, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
|
||||||
|
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
|
||||||
|
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
|
||||||
|
keybd_event(VK_LWIN, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Represents the window that is used internally to get the messages.
|
||||||
|
/// </summary>
|
||||||
|
private class Window : NativeWindow, IDisposable
|
||||||
|
{
|
||||||
|
private static int WM_HOTKEY = 0x0312;
|
||||||
|
public static Keys? fakeKey;
|
||||||
|
|
||||||
|
public Window()
|
||||||
|
{
|
||||||
|
// create the handle for the window.
|
||||||
|
this.CreateHandle(new CreateParams());
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Overridden to get the notifications.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="m"></param>
|
||||||
|
protected override void WndProc(ref Message m)
|
||||||
|
{
|
||||||
|
base.WndProc(ref m);
|
||||||
|
|
||||||
|
// check if we got a hot key pressed.
|
||||||
|
if (m.Msg == WM_HOTKEY)
|
||||||
|
{
|
||||||
|
// get the keys.
|
||||||
|
Keys key = (Keys)(((int)m.LParam >> 16) & 0xFFFF);
|
||||||
|
ModifierKeys modifier = (ModifierKeys)((int)m.LParam & 0xFFFF);
|
||||||
|
|
||||||
|
// invoke the event to notify the parent.
|
||||||
|
if (KeyPressed != null)
|
||||||
|
KeyPressed(this, new KeyPressedEventArgs(modifier, key));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public event EventHandler<KeyPressedEventArgs> KeyPressed;
|
||||||
|
|
||||||
|
#region IDisposable Members
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
this.DestroyHandle();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
private Window _window = new Window();
|
||||||
|
private int _currentId;
|
||||||
|
|
||||||
|
public KeyboardHook()
|
||||||
|
{
|
||||||
|
// register the event of the inner native window.
|
||||||
|
_window.KeyPressed += delegate (object sender, KeyPressedEventArgs args)
|
||||||
|
{
|
||||||
|
if (KeyPressed != null)
|
||||||
|
KeyPressed(this, args);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Registers a hot key in the system.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="modifier">The modifiers that are associated with the hot key.</param>
|
||||||
|
/// <param name="key">The key itself that is associated with the hot key.</param>
|
||||||
|
public void RegisterHotKey(ModifierKeys modifier, Keys key)
|
||||||
|
{
|
||||||
|
// increment the counter.
|
||||||
|
_currentId = _currentId + 1;
|
||||||
|
|
||||||
|
// register the hot key.
|
||||||
|
if (!RegisterHotKey(_window.Handle, _currentId, (uint)modifier, (uint)key))
|
||||||
|
Logger.WriteLine("Couldn’t register " + key);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A hot key has been pressed.
|
||||||
|
/// </summary>
|
||||||
|
public event EventHandler<KeyPressedEventArgs> KeyPressed;
|
||||||
|
|
||||||
|
#region IDisposable Members
|
||||||
|
|
||||||
|
public void UnregisterAll()
|
||||||
|
{
|
||||||
|
// unregister all the registered hot keys.
|
||||||
|
for (int i = _currentId; i > 0; i--)
|
||||||
|
{
|
||||||
|
UnregisterHotKey(_window.Handle, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
UnregisterAll();
|
||||||
|
// dispose the inner native window.
|
||||||
|
_window.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Event Args for the event that is fired after the hot key has been pressed.
|
||||||
|
/// </summary>
|
||||||
|
public class KeyPressedEventArgs : EventArgs
|
||||||
|
{
|
||||||
|
private ModifierKeys _modifier;
|
||||||
|
private Keys _key;
|
||||||
|
|
||||||
|
internal KeyPressedEventArgs(ModifierKeys modifier, Keys key)
|
||||||
|
{
|
||||||
|
_modifier = modifier;
|
||||||
|
_key = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ModifierKeys Modifier
|
||||||
|
{
|
||||||
|
get { return _modifier; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public Keys Key
|
||||||
|
{
|
||||||
|
get { return _key; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The enumeration of possible modifiers.
|
||||||
|
/// </summary>
|
||||||
|
[Flags]
|
||||||
|
public enum ModifierKeys : uint
|
||||||
|
{
|
||||||
|
None = 0,
|
||||||
|
Alt = 1,
|
||||||
|
Control = 2,
|
||||||
|
Shift = 4,
|
||||||
|
Win = 8
|
||||||
|
}
|
||||||
@@ -1,54 +1,11 @@
|
|||||||
using GHelper;
|
using System.ComponentModel;
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement.TrackBar;
|
|
||||||
using static Tools.ScreenInterrogatory;
|
using static Tools.ScreenInterrogatory;
|
||||||
|
|
||||||
namespace Tools
|
namespace Tools
|
||||||
{
|
{
|
||||||
|
|
||||||
public class KeyHandler
|
|
||||||
{
|
|
||||||
|
|
||||||
public const int NOMOD = 0x0000;
|
|
||||||
public const int ALT = 0x0001;
|
|
||||||
public const int CTRL = 0x0002;
|
|
||||||
public const int SHIFT = 0x0004;
|
|
||||||
public const int WIN = 0x0008;
|
|
||||||
|
|
||||||
public const int WM_HOTKEY_MSG_ID = 0x0312;
|
|
||||||
|
|
||||||
|
|
||||||
[DllImport("user32.dll")]
|
|
||||||
private static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vk);
|
|
||||||
[DllImport("user32.dll")]
|
|
||||||
private static extern bool UnregisterHotKey(IntPtr hWnd, int id);
|
|
||||||
|
|
||||||
private int modifier;
|
|
||||||
private int key;
|
|
||||||
private IntPtr hWnd;
|
|
||||||
private int id;
|
|
||||||
public KeyHandler(int modifier, Keys key, nint handle)
|
|
||||||
{
|
|
||||||
this.modifier = modifier;
|
|
||||||
this.key = (int)key;
|
|
||||||
this.hWnd = handle;
|
|
||||||
id = this.GetHashCode();
|
|
||||||
}
|
|
||||||
public override int GetHashCode()
|
|
||||||
{
|
|
||||||
return modifier ^ key ^ hWnd.ToInt32();
|
|
||||||
}
|
|
||||||
public bool Register()
|
|
||||||
{
|
|
||||||
return RegisterHotKey(hWnd, id, modifier, key);
|
|
||||||
}
|
|
||||||
public bool Unregiser()
|
|
||||||
{
|
|
||||||
return UnregisterHotKey(hWnd, id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class ScreenInterrogatory
|
public static class ScreenInterrogatory
|
||||||
{
|
{
|
||||||
@@ -459,24 +416,6 @@ public class NativeMethods
|
|||||||
public static extern bool SetSuspendState(bool hiberate, bool forceCritical, bool disableWakeEvent);
|
public static extern bool SetSuspendState(bool hiberate, bool forceCritical, bool disableWakeEvent);
|
||||||
|
|
||||||
|
|
||||||
public const int KEYEVENTF_EXTENDEDKEY = 1;
|
|
||||||
public const int KEYEVENTF_KEYUP = 2;
|
|
||||||
|
|
||||||
public const int VK_MEDIA_NEXT_TRACK = 0xB0;
|
|
||||||
public const int VK_MEDIA_PLAY_PAUSE = 0xB3;
|
|
||||||
public const int VK_MEDIA_PREV_TRACK = 0xB1;
|
|
||||||
public const int VK_VOLUME_MUTE = 0xAD;
|
|
||||||
public const int VK_SNAPSHOT = 0x2C;
|
|
||||||
|
|
||||||
[DllImport("user32.dll", SetLastError = true)]
|
|
||||||
public static extern void keybd_event(byte virtualKey, byte scanCode, uint flags, IntPtr extraInfo);
|
|
||||||
|
|
||||||
public static void KeyPress(int key = VK_MEDIA_PLAY_PAUSE)
|
|
||||||
{
|
|
||||||
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
[DllImport("user32.dll")]
|
[DllImport("user32.dll")]
|
||||||
public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
|
public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
|
||||||
public const int SW_RESTORE = 9;
|
public const int SW_RESTORE = 9;
|
||||||
@@ -763,6 +702,8 @@ public class NativeMethods
|
|||||||
{
|
{
|
||||||
Guid activeSchemeGuid = GetActiveScheme();
|
Guid activeSchemeGuid = GetActiveScheme();
|
||||||
|
|
||||||
|
if (boost == GetCPUBoost()) return;
|
||||||
|
|
||||||
var hrAC = PowerWriteACValueIndex(
|
var hrAC = PowerWriteACValueIndex(
|
||||||
IntPtr.Zero,
|
IntPtr.Zero,
|
||||||
activeSchemeGuid,
|
activeSchemeGuid,
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ namespace GHelper
|
|||||||
|
|
||||||
trayIcon.MouseClick += TrayIcon_MouseClick;
|
trayIcon.MouseClick += TrayIcon_MouseClick;
|
||||||
|
|
||||||
inputDispatcher = new InputDispatcher(ds);
|
inputDispatcher = new InputDispatcher();
|
||||||
|
|
||||||
settingsForm.InitAura();
|
settingsForm.InitAura();
|
||||||
settingsForm.InitMatrix();
|
settingsForm.InitMatrix();
|
||||||
|
|||||||
9
app/Properties/Strings.Designer.cs
generated
9
app/Properties/Strings.Designer.cs
generated
@@ -510,6 +510,15 @@ namespace GHelper.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Process Fn+F hotkeys without Fn.
|
||||||
|
/// </summary>
|
||||||
|
internal static string FnLock {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("FnLock", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Dynamic Boost.
|
/// Looks up a localized string similar to Dynamic Boost.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -193,7 +193,7 @@
|
|||||||
<value>Apagar con batería tras (segundos)</value>
|
<value>Apagar con batería tras (segundos)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BacklightTimeoutPlugged" xml:space="preserve">
|
<data name="BacklightTimeoutPlugged" xml:space="preserve">
|
||||||
<value>Apagar cuando está enchufado tras (0 - siempre encendida)</value>
|
<value>Apagar cuando está enchufado tras (0 - nunca)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Balanced" xml:space="preserve">
|
<data name="Balanced" xml:space="preserve">
|
||||||
<value>Equilibrado</value>
|
<value>Equilibrado</value>
|
||||||
@@ -307,7 +307,7 @@
|
|||||||
<value>Bajar retroiluminación con batería</value>
|
<value>Bajar retroiluminación con batería</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="KillGpuApps" xml:space="preserve">
|
<data name="KillGpuApps" xml:space="preserve">
|
||||||
<value>Detener todas las aplicaciones que usan la GPU cuando se cambia a Eco</value>
|
<value>Detener todas las aplicaciones que usan la dGPU cuando se cambia a Eco</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LaptopBacklight" xml:space="preserve">
|
<data name="LaptopBacklight" xml:space="preserve">
|
||||||
<value>Retroiluminación</value>
|
<value>Retroiluminación</value>
|
||||||
|
|||||||
@@ -267,6 +267,9 @@
|
|||||||
<data name="FansPower" xml:space="preserve">
|
<data name="FansPower" xml:space="preserve">
|
||||||
<value>Fans + Power</value>
|
<value>Fans + Power</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FnLock" xml:space="preserve">
|
||||||
|
<value>Process Fn+F hotkeys without Fn</value>
|
||||||
|
</data>
|
||||||
<data name="GPUBoost" xml:space="preserve">
|
<data name="GPUBoost" xml:space="preserve">
|
||||||
<value>Dynamic Boost</value>
|
<value>Dynamic Boost</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -189,6 +189,12 @@
|
|||||||
<data name="Awake" xml:space="preserve">
|
<data name="Awake" xml:space="preserve">
|
||||||
<value>唤醒时</value>
|
<value>唤醒时</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="BacklightTimeout" xml:space="preserve">
|
||||||
|
<value>使用电池时的背光超时时间</value>
|
||||||
|
</data>
|
||||||
|
<data name="BacklightTimeoutPlugged" xml:space="preserve">
|
||||||
|
<value>插入电源时的背光超时时间 (0 - 始终开启)</value>
|
||||||
|
</data>
|
||||||
<data name="Balanced" xml:space="preserve">
|
<data name="Balanced" xml:space="preserve">
|
||||||
<value>平衡模式</value>
|
<value>平衡模式</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -258,6 +264,9 @@
|
|||||||
<data name="FansPower" xml:space="preserve">
|
<data name="FansPower" xml:space="preserve">
|
||||||
<value>风扇与电源设置</value>
|
<value>风扇与电源设置</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FnLock" xml:space="preserve">
|
||||||
|
<value>无需FN处理 Fn+F 热键</value>
|
||||||
|
</data>
|
||||||
<data name="GPUChanging" xml:space="preserve">
|
<data name="GPUChanging" xml:space="preserve">
|
||||||
<value>切换中...</value>
|
<value>切换中...</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -282,6 +291,9 @@
|
|||||||
<data name="KeyboardAuto" xml:space="preserve">
|
<data name="KeyboardAuto" xml:space="preserve">
|
||||||
<value>电池模式下降低键盘亮度以省电,并在插上电源时恢复</value>
|
<value>电池模式下降低键盘亮度以省电,并在插上电源时恢复</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="KillGpuApps" xml:space="preserve">
|
||||||
|
<value>当切换到集显模式时,停止所有正在使用dGPU的应用</value>
|
||||||
|
</data>
|
||||||
<data name="LaptopBacklight" xml:space="preserve">
|
<data name="LaptopBacklight" xml:space="preserve">
|
||||||
<value>背光</value>
|
<value>背光</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -324,6 +336,9 @@
|
|||||||
<data name="Multizone" xml:space="preserve">
|
<data name="Multizone" xml:space="preserve">
|
||||||
<value>多区域设置</value>
|
<value>多区域设置</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MuteMic" xml:space="preserve">
|
||||||
|
<value>静音麦克风</value>
|
||||||
|
</data>
|
||||||
<data name="OpenGHelper" xml:space="preserve">
|
<data name="OpenGHelper" xml:space="preserve">
|
||||||
<value>打开G-Helper窗口</value>
|
<value>打开G-Helper窗口</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -333,6 +348,9 @@
|
|||||||
<data name="OptimizedGPUTooltip" xml:space="preserve">
|
<data name="OptimizedGPUTooltip" xml:space="preserve">
|
||||||
<value>使用电池时切换到集显模式,并在插上电源后重新启用标准模式</value>
|
<value>使用电池时切换到集显模式,并在插上电源后重新启用标准模式</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="OptimizedUSBC" xml:space="preserve">
|
||||||
|
<value>在自动切换模式下,使用USB-C充电器时禁用GPU</value>
|
||||||
|
</data>
|
||||||
<data name="Other" xml:space="preserve">
|
<data name="Other" xml:space="preserve">
|
||||||
<value>其他</value>
|
<value>其他</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -405,10 +423,16 @@
|
|||||||
<data name="VersionLabel" xml:space="preserve">
|
<data name="VersionLabel" xml:space="preserve">
|
||||||
<value>版本</value>
|
<value>版本</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="VolumeDown" xml:space="preserve">
|
||||||
|
<value>音量降低</value>
|
||||||
|
</data>
|
||||||
<data name="VolumeMute" xml:space="preserve">
|
<data name="VolumeMute" xml:space="preserve">
|
||||||
<value>静音</value>
|
<value>静音</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="VolumeUp" xml:space="preserve">
|
||||||
|
<value>音量增加</value>
|
||||||
|
</data>
|
||||||
<data name="WindowTop" xml:space="preserve">
|
<data name="WindowTop" xml:space="preserve">
|
||||||
<value>窗口置顶</value>
|
<value>窗口置顶</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -209,26 +209,6 @@ namespace GHelper
|
|||||||
}
|
}
|
||||||
m.Result = (IntPtr)1;
|
m.Result = (IntPtr)1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case KeyHandler.WM_HOTKEY_MSG_ID:
|
|
||||||
|
|
||||||
Keys key = (Keys)(((int)m.LParam >> 16) & 0xFFFF);
|
|
||||||
|
|
||||||
switch (key)
|
|
||||||
{
|
|
||||||
case Keys.VolumeDown:
|
|
||||||
InputDispatcher.KeyProcess("m1");
|
|
||||||
break;
|
|
||||||
case Keys.VolumeUp:
|
|
||||||
InputDispatcher.KeyProcess("m2");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
if (key == InputDispatcher.keyProfile) CyclePerformanceMode();
|
|
||||||
if (key == InputDispatcher.keyApp) Program.SettingsToggle();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
@@ -338,7 +318,7 @@ namespace GHelper
|
|||||||
|
|
||||||
if (Program.acpi.DeviceGet(AsusACPI.GPUXG) == 1)
|
if (Program.acpi.DeviceGet(AsusACPI.GPUXG) == 1)
|
||||||
{
|
{
|
||||||
KillGPUApps();
|
HardwareControl.KillGPUApps();
|
||||||
DialogResult dialogResult = MessageBox.Show("Did you close all applications running on XG Mobile?", "Disabling XG Mobile", MessageBoxButtons.YesNo);
|
DialogResult dialogResult = MessageBox.Show("Did you close all applications running on XG Mobile?", "Disabling XG Mobile", MessageBoxButtons.YesNo);
|
||||||
if (dialogResult == DialogResult.Yes)
|
if (dialogResult == DialogResult.Yes)
|
||||||
{
|
{
|
||||||
@@ -973,8 +953,8 @@ namespace GHelper
|
|||||||
labelBattery.Text = battery;
|
labelBattery.Text = battery;
|
||||||
});
|
});
|
||||||
|
|
||||||
string trayTip = "CPU" + cpuTemp + HardwareControl.cpuFan;
|
string trayTip = "CPU" + cpuTemp + " " + HardwareControl.cpuFan;
|
||||||
if (gpuTemp.Length > 0) trayTip += "\nGPU" + gpuTemp + HardwareControl.gpuFan;
|
if (gpuTemp.Length > 0) trayTip += "\nGPU" + gpuTemp + " " + HardwareControl.gpuFan;
|
||||||
if (battery.Length > 0) trayTip += "\n" + battery;
|
if (battery.Length > 0) trayTip += "\n" + battery;
|
||||||
|
|
||||||
Program.trayIcon.Text = trayTip;
|
Program.trayIcon.Text = trayTip;
|
||||||
@@ -1304,9 +1284,10 @@ namespace GHelper
|
|||||||
|
|
||||||
if (AppConfig.isConfig("keyboard_auto") && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online)
|
if (AppConfig.isConfig("keyboard_auto") && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online)
|
||||||
AsusUSB.ApplyBrightness(0);
|
AsusUSB.ApplyBrightness(0);
|
||||||
else if (backlight >= 0)
|
else
|
||||||
AsusUSB.ApplyBrightness(backlight);
|
AsusUSB.ApplyBrightness(backlight);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AutoPerformance()
|
public void AutoPerformance()
|
||||||
@@ -1535,29 +1516,6 @@ namespace GHelper
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static void KillGPUApps()
|
|
||||||
{
|
|
||||||
string[] tokill = { "EADesktop", "RadeonSoftware", "epicgameslauncher", "nvdisplay.container", "nvcontainer", "nvcplui" };
|
|
||||||
|
|
||||||
foreach (string kill in tokill)
|
|
||||||
foreach (var process in Process.GetProcessesByName(kill))
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
process.Kill();
|
|
||||||
Logger.WriteLine($"Stopped: {process.ProcessName}");
|
|
||||||
} catch (Exception ex)
|
|
||||||
{
|
|
||||||
Logger.WriteLine($"Failed to stop: {process.ProcessName} {ex.Message}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (AppConfig.isConfig("kill_gpu_apps") && HardwareControl.GpuControl is not null && HardwareControl.GpuControl.IsNvidia)
|
|
||||||
{
|
|
||||||
NvidiaGpuControl nvControl = (NvidiaGpuControl)HardwareControl.GpuControl;
|
|
||||||
nvControl.KillGPUApps();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetGPUEco(int eco, bool hardWay = false)
|
public void SetGPUEco(int eco, bool hardWay = false)
|
||||||
{
|
{
|
||||||
@@ -1575,7 +1533,7 @@ namespace GHelper
|
|||||||
|
|
||||||
int status = 1;
|
int status = 1;
|
||||||
|
|
||||||
if (eco == 1) KillGPUApps();
|
if (eco == 1) HardwareControl.KillGPUApps();
|
||||||
|
|
||||||
Logger.WriteLine($"Running eco command {eco}");
|
Logger.WriteLine($"Running eco command {eco}");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user