From a0c15e6732695f268fc8bce5e54a99161370f8ba Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Sat, 11 May 2024 18:42:31 +0200 Subject: [PATCH] Touchscreen toggle binding https://github.com/seerge/g-helper/issues/2575 --- app/Extra.cs | 1 + app/Helpers/TouchscreenHelper.cs | 23 +++++++++++++++++++++++ app/Input/InputDispatcher.cs | 5 +++++ app/Properties/Strings.Designer.cs | 18 ++++++++++++++++++ app/Properties/Strings.resx | 6 ++++++ 5 files changed, 53 insertions(+) create mode 100644 app/Helpers/TouchscreenHelper.cs diff --git a/app/Extra.cs b/app/Extra.cs index 64aebc1e..ed3d4d41 100644 --- a/app/Extra.cs +++ b/app/Extra.cs @@ -36,6 +36,7 @@ namespace GHelper {"brightness_down", Properties.Strings.BrightnessDown}, {"brightness_up", Properties.Strings.BrightnessUp}, {"visual", Properties.Strings.VisualMode}, + {"touchscreen", Properties.Strings.ToggleTouchscreen }, {"ghelper", Properties.Strings.OpenGHelper}, {"custom", Properties.Strings.Custom} }; diff --git a/app/Helpers/TouchscreenHelper.cs b/app/Helpers/TouchscreenHelper.cs new file mode 100644 index 00000000..aafb8d7b --- /dev/null +++ b/app/Helpers/TouchscreenHelper.cs @@ -0,0 +1,23 @@ +using GHelper.Helpers; + +public static class TouchscreenHelper +{ + public static bool? ToggleTouchscreen() + { + try + { + ProcessHelper.RunAsAdmin(); + + var status = !ProcessHelper.RunCMD("powershell", "(Get-PnpDevice -FriendlyName '*touch*screen*').Status").Contains("OK"); + ProcessHelper.RunCMD("powershell", (status ? "Enable-PnpDevice" : "Disable-PnpDevice") + " -InstanceId (Get-PnpDevice -FriendlyName '*touch*screen*').InstanceId -Confirm:$false"); + + return status; + } + catch (Exception ex) + { + Logger.WriteLine($"Can't toggle touchscreen: {ex.Message}"); + return null; + } + + } +} diff --git a/app/Input/InputDispatcher.cs b/app/Input/InputDispatcher.cs index f714d57e..1f9f8ddd 100644 --- a/app/Input/InputDispatcher.cs +++ b/app/Input/InputDispatcher.cs @@ -544,6 +544,11 @@ namespace GHelper.Input case "controller": Program.settingsForm.BeginInvoke(Program.settingsForm.allyControl.ToggleModeHotkey); break; + case "touchscreen": + var touchscreenStatus = TouchscreenHelper.ToggleTouchscreen(); + if (touchscreenStatus is not null) + Program.toast.RunToast(Properties.Strings.Touchscreen + " " + ((bool)touchscreenStatus ? Properties.Strings.On : Properties.Strings.Off), ToastIcon.Touchpad); + break; default: break; } diff --git a/app/Properties/Strings.Designer.cs b/app/Properties/Strings.Designer.cs index 430929a1..9a6b11b4 100644 --- a/app/Properties/Strings.Designer.cs +++ b/app/Properties/Strings.Designer.cs @@ -1925,6 +1925,24 @@ namespace GHelper.Properties { } } + /// + /// Looks up a localized string similar to Toggle Touchscreen. + /// + internal static string ToggleTouchscreen { + get { + return ResourceManager.GetString("ToggleTouchscreen", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to . + /// + internal static string Touchscreen { + get { + return ResourceManager.GetString("Touchscreen", resourceCulture); + } + } + /// /// Looks up a localized string similar to Turbo. /// diff --git a/app/Properties/Strings.resx b/app/Properties/Strings.resx index 21359f52..81b8c1ec 100644 --- a/app/Properties/Strings.resx +++ b/app/Properties/Strings.resx @@ -740,6 +740,12 @@ Do you still want to continue? Toggle Screen + + Toggle Touchscreen + + + + Turbo