From 06da3c8c00a6201606ed96096966403ff7b55cde Mon Sep 17 00:00:00 2001 From: X9VoiD Date: Mon, 20 Jun 2022 14:22:23 +0800 Subject: [PATCH] Prevent pressure from being emitted when pen tip is not binded --- src/OutputMode/WindowsInk/Pointer/WinInkBasePointer.cs | 4 ++++ src/OutputMode/WindowsInk/WinInkButtonHandler.cs | 4 +++- src/OutputMode/WindowsInk/WindowsInkConstants.cs | 1 + src/VoiDPlugins.Library/VMulti/VMultiInstance.cs | 3 +-- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/OutputMode/WindowsInk/Pointer/WinInkBasePointer.cs b/src/OutputMode/WindowsInk/Pointer/WinInkBasePointer.cs index 3a00e96..88203b0 100644 --- a/src/OutputMode/WindowsInk/Pointer/WinInkBasePointer.cs +++ b/src/OutputMode/WindowsInk/Pointer/WinInkBasePointer.cs @@ -37,6 +37,7 @@ namespace VoiDPlugins.OutputMode SharedStore.TryAdd(POINTER, this); SharedStore.TryAdd(ERASER_STATE, false); SharedStore.TryAdd(MANUAL_ERASER, false); + SharedStore.TryAdd(TIP_PRESSED, false); RawPointer = Instance.Pointer; } else @@ -77,6 +78,9 @@ namespace VoiDPlugins.OutputMode { Dirty = false; + if (!SharedStore.Get(TIP_PRESSED)) + SetPressure(0); + if (ForcedSync) SyncOSCursor(); Instance.Write(); diff --git a/src/OutputMode/WindowsInk/WinInkButtonHandler.cs b/src/OutputMode/WindowsInk/WinInkButtonHandler.cs index 1f6ba4d..65ccb33 100644 --- a/src/OutputMode/WindowsInk/WinInkButtonHandler.cs +++ b/src/OutputMode/WindowsInk/WinInkButtonHandler.cs @@ -37,7 +37,7 @@ namespace VoiDPlugins.OutputMode } catch { - Log.Write("WinInk", + Log.WriteNotify("WinInk", "Windows Ink bindings are being used without an active Windows Ink output mode.", LogLevel.Error); } @@ -52,6 +52,7 @@ namespace VoiDPlugins.OutputMode switch (Button) { case "Pen Tip": + _sharedStore.Set(TIP_PRESSED, true); _instance.EnableButtonBit((int)(eraserState ? WindowsInkButtonFlags.Eraser : WindowsInkButtonFlags.Press)); break; @@ -80,6 +81,7 @@ namespace VoiDPlugins.OutputMode switch (Button) { case "Pen Tip": + _sharedStore.Set(TIP_PRESSED, false); _instance.DisableButtonBit((int)(WindowsInkButtonFlags.Press | WindowsInkButtonFlags.Eraser)); break; diff --git a/src/OutputMode/WindowsInk/WindowsInkConstants.cs b/src/OutputMode/WindowsInk/WindowsInkConstants.cs index ff6615e..7f28666 100644 --- a/src/OutputMode/WindowsInk/WindowsInkConstants.cs +++ b/src/OutputMode/WindowsInk/WindowsInkConstants.cs @@ -7,5 +7,6 @@ namespace VoiDPlugins.OutputMode public const int POINTER = 1; public const int ERASER_STATE = 2; public const int MANUAL_ERASER = 3; + public const int TIP_PRESSED = 4; } } \ No newline at end of file diff --git a/src/VoiDPlugins.Library/VMulti/VMultiInstance.cs b/src/VoiDPlugins.Library/VMulti/VMultiInstance.cs index 70d3c7e..26a759c 100644 --- a/src/VoiDPlugins.Library/VMulti/VMultiInstance.cs +++ b/src/VoiDPlugins.Library/VMulti/VMultiInstance.cs @@ -58,8 +58,7 @@ namespace VoiDPlugins.Library.VMulti if (VMultiDev == null) { - Log.Write(Name, "Cannot find VirtualHID", LogLevel.Error); - Log.Write(Name, "Install VMulti driver here: https://github.com/X9VoiD/vmulti-bin/releases/latest", LogLevel.Error); + Log.WriteNotify(Name, "Cannot find VirtualHID. Install VMulti driver here: https://github.com/X9VoiD/vmulti-bin/releases/latest", LogLevel.Error); } return VMultiDev;