mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
New Ally bindings and Touch Keyboard Support
This commit is contained in:
@@ -81,6 +81,7 @@ namespace GHelper.Ally
|
|||||||
public const string BindShift = "02-88";
|
public const string BindShift = "02-88";
|
||||||
public const string BindCtrl = "02-8C";
|
public const string BindCtrl = "02-8C";
|
||||||
public const string BindAlt = "02-8A";
|
public const string BindAlt = "02-8A";
|
||||||
|
public const string BindWin = "02-82";
|
||||||
|
|
||||||
public const string BindTaskManager = "04-03-8C-88-76";
|
public const string BindTaskManager = "04-03-8C-88-76";
|
||||||
public const string BindCloseWindow = "04-02-8A-0C";
|
public const string BindCloseWindow = "04-02-8A-0C";
|
||||||
@@ -98,6 +99,10 @@ namespace GHelper.Ally
|
|||||||
|
|
||||||
public const string BindPrintScrn = "02-C3";
|
public const string BindPrintScrn = "02-C3";
|
||||||
|
|
||||||
|
public const string BindScreenshot = "04-03-82-88-1B";
|
||||||
|
|
||||||
|
public const string BindShowKeyboard = "05-19";
|
||||||
|
|
||||||
static byte[] CommandReady = new byte[] { AsusHid.INPUT_ID, 0xd1, 0x0a, 0x01 };
|
static byte[] CommandReady = new byte[] { AsusHid.INPUT_ID, 0xd1, 0x0a, 0x01 };
|
||||||
static byte[] CommandSave = new byte[] { AsusHid.INPUT_ID, 0xd1, 0x0f, 0x20 };
|
static byte[] CommandSave = new byte[] { AsusHid.INPUT_ID, 0xd1, 0x0f, 0x20 };
|
||||||
|
|
||||||
@@ -137,13 +142,15 @@ namespace GHelper.Ally
|
|||||||
{ BindBrightnessUp, "Bright Up" },
|
{ BindBrightnessUp, "Bright Up" },
|
||||||
{ BindBrightnessDown, "Bright Down" },
|
{ BindBrightnessDown, "Bright Down" },
|
||||||
|
|
||||||
|
{ BindShowKeyboard, "Show Keyboard" },
|
||||||
|
{ BindScreenshot, "Screenshot" },
|
||||||
|
|
||||||
{ BindOverlay, "AMD Overlay" },
|
{ BindOverlay, "AMD Overlay" },
|
||||||
{ BindTaskManager, "Task Manager" },
|
{ BindTaskManager, "Task Manager" },
|
||||||
{ BindCloseWindow, "Close Window" },
|
{ BindCloseWindow, "Close Window" },
|
||||||
{ BindShiftTab, "Shift-Tab" },
|
{ BindShiftTab, "Shift-Tab" },
|
||||||
{ BindAltTab, "Alt-Tab" },
|
{ BindAltTab, "Alt-Tab" },
|
||||||
|
|
||||||
{ BindPrintScrn, "PrntScn" },
|
|
||||||
{ BindEsc, "Esc" },
|
{ BindEsc, "Esc" },
|
||||||
{ BindBack, "Backspace" },
|
{ BindBack, "Backspace" },
|
||||||
{ BindTab, "Tab" },
|
{ BindTab, "Tab" },
|
||||||
@@ -151,6 +158,8 @@ namespace GHelper.Ally
|
|||||||
{ BindShift, "LShift" },
|
{ BindShift, "LShift" },
|
||||||
{ BindAlt, "LAlt" },
|
{ BindAlt, "LAlt" },
|
||||||
{ BindCtrl, "LCtl" },
|
{ BindCtrl, "LCtl" },
|
||||||
|
{ BindWin, "WIN" },
|
||||||
|
{ BindPrintScrn, "PrntScn" },
|
||||||
|
|
||||||
{ BindPgU, "PgUp" },
|
{ BindPgU, "PgUp" },
|
||||||
{ BindPgD, "PgDwn" },
|
{ BindPgD, "PgDwn" },
|
||||||
@@ -218,7 +227,6 @@ namespace GHelper.Ally
|
|||||||
{ "02-41", "," },
|
{ "02-41", "," },
|
||||||
{ "02-49", "." },
|
{ "02-49", "." },
|
||||||
{ "02-89", "RShift" },
|
{ "02-89", "RShift" },
|
||||||
{ "02-82", "Meta" },
|
|
||||||
{ "02-29", "Space" },
|
{ "02-29", "Space" },
|
||||||
{ "02-8B", "RAlt" },
|
{ "02-8B", "RAlt" },
|
||||||
{ "02-84", "App menu" },
|
{ "02-84", "App menu" },
|
||||||
@@ -252,8 +260,8 @@ namespace GHelper.Ally
|
|||||||
{ "03-04", "Mouse scroll up" },
|
{ "03-04", "Mouse scroll up" },
|
||||||
{ "03-05", "Mouse scroll down" },
|
{ "03-05", "Mouse scroll down" },
|
||||||
|
|
||||||
{ "05-16", "Screenshot" },
|
//{ "05-16", "Screenshot" },
|
||||||
{ "05-19", "Show keyboard" },
|
|
||||||
{ "05-1C", "Show desktop" },
|
{ "05-1C", "Show desktop" },
|
||||||
{ "05-1E", "Begin recording" },
|
{ "05-1E", "Begin recording" },
|
||||||
{ "05-01", "Mic off" },
|
{ "05-01", "Mic off" },
|
||||||
@@ -393,14 +401,14 @@ namespace GHelper.Ally
|
|||||||
case BindingZone.DPadUpDown:
|
case BindingZone.DPadUpDown:
|
||||||
KeyL1 = AppConfig.GetString("bind_du", desktop ? BindKBU : BindDU);
|
KeyL1 = AppConfig.GetString("bind_du", desktop ? BindKBU : BindDU);
|
||||||
KeyR1 = AppConfig.GetString("bind_dd", desktop ? BindKBD : BindDD);
|
KeyR1 = AppConfig.GetString("bind_dd", desktop ? BindKBD : BindDD);
|
||||||
KeyL2 = AppConfig.GetString("bind2_du", BindBrightnessUp);
|
KeyL2 = AppConfig.GetString("bind2_du", BindShowKeyboard);
|
||||||
KeyR2 = AppConfig.GetString("bind2_dd", BindBrightnessDown);
|
KeyR2 = AppConfig.GetString("bind2_dd", BindAltTab);
|
||||||
break;
|
break;
|
||||||
case BindingZone.DPadLeftRight:
|
case BindingZone.DPadLeftRight:
|
||||||
KeyL1 = AppConfig.GetString("bind_dl", desktop ? BindKBL : BindDL);
|
KeyL1 = AppConfig.GetString("bind_dl", desktop ? BindKBL : BindDL);
|
||||||
KeyR1 = AppConfig.GetString("bind_dr", desktop ? BindKBR : BindDR);
|
KeyR1 = AppConfig.GetString("bind_dr", desktop ? BindKBR : BindDR);
|
||||||
KeyL2 = AppConfig.GetString("bind2_dl");
|
KeyL2 = AppConfig.GetString("bind2_dl", BindBrightnessDown);
|
||||||
KeyR2 = AppConfig.GetString("bind2_dr");
|
KeyR2 = AppConfig.GetString("bind2_dr", BindBrightnessUp);
|
||||||
break;
|
break;
|
||||||
case BindingZone.StickClick:
|
case BindingZone.StickClick:
|
||||||
KeyL1 = AppConfig.GetString("bind_ls", desktop ? BindShift : BindLS);
|
KeyL1 = AppConfig.GetString("bind_ls", desktop ? BindShift : BindLS);
|
||||||
@@ -423,7 +431,7 @@ namespace GHelper.Ally
|
|||||||
case BindingZone.XY:
|
case BindingZone.XY:
|
||||||
KeyL1 = AppConfig.GetString("bind_x", desktop ? BindPgD : BindX);
|
KeyL1 = AppConfig.GetString("bind_x", desktop ? BindPgD : BindX);
|
||||||
KeyR1 = AppConfig.GetString("bind_y", desktop ? BindPgU : BindY);
|
KeyR1 = AppConfig.GetString("bind_y", desktop ? BindPgU : BindY);
|
||||||
KeyL2 = AppConfig.GetString("bind2_x");
|
KeyL2 = AppConfig.GetString("bind2_x", BindScreenshot);
|
||||||
KeyR2 = AppConfig.GetString("bind2_y", BindOverlay);
|
KeyR2 = AppConfig.GetString("bind2_y", BindOverlay);
|
||||||
break;
|
break;
|
||||||
case BindingZone.ViewMenu:
|
case BindingZone.ViewMenu:
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
||||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||||
<AssemblyVersion>0.149</AssemblyVersion>
|
<AssemblyVersion>0.149.1</AssemblyVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||||
|
|||||||
176
app/Helpers/OnScreenKeyboard.cs
Normal file
176
app/Helpers/OnScreenKeyboard.cs
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
using System.Diagnostics;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
namespace GHelper.Helpers
|
||||||
|
{
|
||||||
|
public static class OnScreenKeyboard
|
||||||
|
{
|
||||||
|
static OnScreenKeyboard()
|
||||||
|
{
|
||||||
|
var version = Environment.OSVersion.Version;
|
||||||
|
switch (version.Major)
|
||||||
|
{
|
||||||
|
case 6:
|
||||||
|
switch (version.Minor)
|
||||||
|
{
|
||||||
|
case 2:
|
||||||
|
// Windows 10 (ok)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void StartTabTip()
|
||||||
|
{
|
||||||
|
var p = Process.Start(@"C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe");
|
||||||
|
int handle = 0;
|
||||||
|
while ((handle = NativeMethods.FindWindow("IPTIP_Main_Window", "")) <= 0)
|
||||||
|
{
|
||||||
|
Thread.Sleep(100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ToggleVisibility()
|
||||||
|
{
|
||||||
|
var type = Type.GetTypeFromCLSID(Guid.Parse("4ce576fa-83dc-4F88-951c-9d0782b4e376"));
|
||||||
|
var instance = (ITipInvocation)Activator.CreateInstance(type);
|
||||||
|
instance.Toggle(NativeMethods.GetDesktopWindow());
|
||||||
|
Marshal.ReleaseComObject(instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Show()
|
||||||
|
{
|
||||||
|
int handle = NativeMethods.FindWindow("IPTIP_Main_Window", "");
|
||||||
|
if (handle <= 0) // nothing found
|
||||||
|
{
|
||||||
|
StartTabTip();
|
||||||
|
Thread.Sleep(100);
|
||||||
|
}
|
||||||
|
// on some devices starting TabTip don't show keyboard, on some does ¯\_(ツ)_/¯
|
||||||
|
if (!IsOpen())
|
||||||
|
{
|
||||||
|
ToggleVisibility();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Hide()
|
||||||
|
{
|
||||||
|
if (IsOpen())
|
||||||
|
{
|
||||||
|
ToggleVisibility();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static bool Close()
|
||||||
|
{
|
||||||
|
// find it
|
||||||
|
int handle = NativeMethods.FindWindow("IPTIP_Main_Window", "");
|
||||||
|
bool active = handle > 0;
|
||||||
|
if (active)
|
||||||
|
{
|
||||||
|
// don't check style - just close
|
||||||
|
NativeMethods.SendMessage(handle, NativeMethods.WM_SYSCOMMAND, NativeMethods.SC_CLOSE, 0);
|
||||||
|
}
|
||||||
|
return active;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool IsOpen()
|
||||||
|
{
|
||||||
|
return GetIsOpen1709() ?? GetIsOpenLegacy();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[DllImport("user32.dll", SetLastError = false)]
|
||||||
|
private static extern IntPtr FindWindowEx(IntPtr parent, IntPtr after, string className, string title = null);
|
||||||
|
|
||||||
|
[DllImport("user32.dll", SetLastError = false)]
|
||||||
|
private static extern uint GetWindowLong(IntPtr wnd, int index);
|
||||||
|
|
||||||
|
private static bool? GetIsOpen1709()
|
||||||
|
{
|
||||||
|
// if there is a top-level window - the keyboard is closed
|
||||||
|
var wnd = FindWindowEx(IntPtr.Zero, IntPtr.Zero, WindowClass1709, WindowCaption1709);
|
||||||
|
if (wnd != IntPtr.Zero)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
var parent = IntPtr.Zero;
|
||||||
|
for (; ; )
|
||||||
|
{
|
||||||
|
parent = FindWindowEx(IntPtr.Zero, parent, WindowParentClass1709);
|
||||||
|
if (parent == IntPtr.Zero)
|
||||||
|
return null; // no more windows, keyboard state is unknown
|
||||||
|
|
||||||
|
// if it's a child of a WindowParentClass1709 window - the keyboard is open
|
||||||
|
wnd = FindWindowEx(parent, IntPtr.Zero, WindowClass1709, WindowCaption1709);
|
||||||
|
if (wnd != IntPtr.Zero)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool GetIsOpenLegacy()
|
||||||
|
{
|
||||||
|
var wnd = FindWindowEx(IntPtr.Zero, IntPtr.Zero, WindowClass);
|
||||||
|
if (wnd == IntPtr.Zero)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
var style = GetWindowStyle(wnd);
|
||||||
|
return style.HasFlag(WindowStyle.Visible)
|
||||||
|
&& !style.HasFlag(WindowStyle.Disabled);
|
||||||
|
}
|
||||||
|
|
||||||
|
private const string WindowClass = "IPTip_Main_Window";
|
||||||
|
private const string WindowParentClass1709 = "ApplicationFrameWindow";
|
||||||
|
private const string WindowClass1709 = "Windows.UI.Core.CoreWindow";
|
||||||
|
private const string WindowCaption1709 = "Microsoft Text Input Application";
|
||||||
|
|
||||||
|
private enum WindowStyle : uint
|
||||||
|
{
|
||||||
|
Disabled = 0x08000000,
|
||||||
|
Visible = 0x10000000,
|
||||||
|
}
|
||||||
|
|
||||||
|
private static WindowStyle GetWindowStyle(IntPtr wnd)
|
||||||
|
{
|
||||||
|
return (WindowStyle)GetWindowLong(wnd, -16);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[ComImport]
|
||||||
|
[Guid("37c994e7-432b-4834-a2f7-dce1f13b834b")]
|
||||||
|
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||||
|
interface ITipInvocation
|
||||||
|
{
|
||||||
|
void Toggle(IntPtr hwnd);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static class NativeMethods
|
||||||
|
{
|
||||||
|
[DllImport("user32.dll", EntryPoint = "FindWindow")]
|
||||||
|
internal static extern int FindWindow(string lpClassName, string lpWindowName);
|
||||||
|
|
||||||
|
[DllImport("user32.dll", EntryPoint = "SendMessage")]
|
||||||
|
internal static extern int SendMessage(int hWnd, uint Msg, int wParam, int lParam);
|
||||||
|
|
||||||
|
[DllImport("user32.dll", EntryPoint = "GetDesktopWindow", SetLastError = false)]
|
||||||
|
internal static extern IntPtr GetDesktopWindow();
|
||||||
|
|
||||||
|
[DllImport("user32.dll", EntryPoint = "GetWindowLong")]
|
||||||
|
internal static extern int GetWindowLong(int hWnd, int nIndex);
|
||||||
|
|
||||||
|
internal const int GWL_STYLE = -16;
|
||||||
|
internal const int GWL_EXSTYLE = -20;
|
||||||
|
internal const int WM_SYSCOMMAND = 0x0112;
|
||||||
|
internal const int SC_CLOSE = 0xF060;
|
||||||
|
|
||||||
|
internal const int WS_DISABLED = 0x08000000;
|
||||||
|
|
||||||
|
internal const int WS_VISIBLE = 0x10000000;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -602,6 +602,9 @@ namespace GHelper.Input
|
|||||||
case 56:
|
case 56:
|
||||||
KeyProcess("m4");
|
KeyProcess("m4");
|
||||||
return;
|
return;
|
||||||
|
case 162:
|
||||||
|
OnScreenKeyboard.Show();
|
||||||
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -318,7 +318,7 @@ namespace GHelper.Mode
|
|||||||
int memory = AppConfig.GetMode("gpu_memory");
|
int memory = AppConfig.GetMode("gpu_memory");
|
||||||
int clock_limit = AppConfig.GetMode("gpu_clock_limit");
|
int clock_limit = AppConfig.GetMode("gpu_clock_limit");
|
||||||
|
|
||||||
//if (core == -1 && memory == -1 && clock_limit == -1) return;
|
if (core == -1 && memory == -1 && clock_limit == -1) return;
|
||||||
//if ((gpu_core > -5 && gpu_core < 5) && (gpu_memory > -5 && gpu_memory < 5)) launchAsAdmin = false;
|
//if ((gpu_core > -5 && gpu_core < 5) && (gpu_memory > -5 && gpu_memory < 5)) launchAsAdmin = false;
|
||||||
|
|
||||||
if (Program.acpi.DeviceGet(AsusACPI.GPUEco) == 1) { Logger.WriteLine("Clocks: Eco"); return; }
|
if (Program.acpi.DeviceGet(AsusACPI.GPUEco) == 1) { Logger.WriteLine("Clocks: Eco"); return; }
|
||||||
|
|||||||
@@ -261,9 +261,23 @@ namespace GHelper.USB
|
|||||||
public static void Init()
|
public static void Init()
|
||||||
{
|
{
|
||||||
AsusHid.Write(new List<byte[]> {
|
AsusHid.Write(new List<byte[]> {
|
||||||
new byte[] { AsusHid.AURA_ID, 0xb9 },
|
new byte[] { AsusHid.AURA_ID, 0xB9 },
|
||||||
Encoding.ASCII.GetBytes("]ASUS Tech.Inc."),
|
Encoding.ASCII.GetBytes("]ASUS Tech.Inc."),
|
||||||
new byte[] { AsusHid.AURA_ID, 0x05, 0x20, 0x31, 0, 0x1a },
|
new byte[] { AsusHid.AURA_ID, 0x05, 0x20, 0x31, 0, 0x1A },
|
||||||
|
|
||||||
|
// Random data AC sends to keyboard on start
|
||||||
|
new byte[] { AsusHid.AURA_ID, 0x9F, 0x01 },
|
||||||
|
new byte[] { AsusHid.AURA_ID, 0xBF },
|
||||||
|
|
||||||
|
new byte[] { AsusHid.AURA_ID, 0x05, 0x20, 0x31, 0, 0x10 },
|
||||||
|
new byte[] { AsusHid.AURA_ID, 0x05, 0x20, 0x31, 0, 0x20 },
|
||||||
|
|
||||||
|
new byte[] { AsusHid.AURA_ID, 0xC0, 0x03, 0x01},
|
||||||
|
new byte[] { AsusHid.AURA_ID, 0x9E, 0x01, 0x20 },
|
||||||
|
|
||||||
|
Encoding.ASCII.GetBytes("]ASUS Tech.Inc."),
|
||||||
|
new byte[] { AsusHid.AURA_ID, 0x05, 0x20, 0x31, 0, 0x1A },
|
||||||
|
new byte[] { AsusHid.AURA_ID, 0xC0, 0x00, 0x01},
|
||||||
}, "Init");
|
}, "Init");
|
||||||
|
|
||||||
AsusHid.WriteInput(Encoding.ASCII.GetBytes("ZASUS Tech.Inc."));
|
AsusHid.WriteInput(Encoding.ASCII.GetBytes("ZASUS Tech.Inc."));
|
||||||
|
|||||||
Reference in New Issue
Block a user