From a269739949b2103ffa9f6839afccae594464c88b Mon Sep 17 00:00:00 2001
From: NaBian <836904362@qq.com>
Date: Fri, 24 May 2019 00:27:40 +0800
Subject: [PATCH] completed the branch
---
.../HandyControlDemo_Shared/MainWindow.xaml | 4 +-
.../ViewModel/Main/MainViewModel.cs | 4 +-
.../Tools/GlobalShortcut.cs | 41 +++----------------
.../Tools/Hook/KeyboardHook.cs | 14 ++-----
4 files changed, 14 insertions(+), 49 deletions(-)
diff --git a/src/Shared/HandyControlDemo_Shared/MainWindow.xaml b/src/Shared/HandyControlDemo_Shared/MainWindow.xaml
index 51e33d9b..cde47eb6 100644
--- a/src/Shared/HandyControlDemo_Shared/MainWindow.xaml
+++ b/src/Shared/HandyControlDemo_Shared/MainWindow.xaml
@@ -24,8 +24,8 @@
d:DesignHeight="800"
d:DesignWidth="1400">
-
-
+
+
diff --git a/src/Shared/HandyControlDemo_Shared/ViewModel/Main/MainViewModel.cs b/src/Shared/HandyControlDemo_Shared/ViewModel/Main/MainViewModel.cs
index 6382450c..5b3c1691 100644
--- a/src/Shared/HandyControlDemo_Shared/ViewModel/Main/MainViewModel.cs
+++ b/src/Shared/HandyControlDemo_Shared/ViewModel/Main/MainViewModel.cs
@@ -102,8 +102,8 @@ namespace HandyControlDemo.ViewModel
public RelayCommand GlobalShortcutInfoCmd => new Lazy(() =>
new RelayCommand(() => Growl.Info("Global Shortcut Info"))).Value;
- public RelayCommand GlobalShortcutErrorCmd => new Lazy(() =>
- new RelayCommand(() => Growl.Info("Global Shortcut Error"))).Value;
+ public RelayCommand GlobalShortcutWarningCmd => new Lazy(() =>
+ new RelayCommand(() => Growl.Warning("Global Shortcut Warning"))).Value;
#endregion
diff --git a/src/Shared/HandyControl_Shared/Tools/GlobalShortcut.cs b/src/Shared/HandyControl_Shared/Tools/GlobalShortcut.cs
index 2c51ef61..ce248ba5 100644
--- a/src/Shared/HandyControl_Shared/Tools/GlobalShortcut.cs
+++ b/src/Shared/HandyControl_Shared/Tools/GlobalShortcut.cs
@@ -1,5 +1,4 @@
-using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Windows;
using System.Windows.Input;
using HandyControl.Data;
@@ -8,8 +7,6 @@ namespace HandyControl.Tools
{
public class GlobalShortcut
{
- private static ModifierKeys ModifierKeys;
-
private static readonly Dictionary CommandDic = new Dictionary();
static GlobalShortcut()
@@ -21,16 +18,11 @@ namespace HandyControl.Tools
private static void HitTest(Key key)
{
- Console.WriteLine(key.ToString());
- if (IsModifierKey(key))
- {
- ModifierKeys |= GetModifierKey(key);
- }
- else
- {
- var keyStr = ModifierKeys != ModifierKeys.None ? $"{ModifierKeys.ToString()}, {key.ToString()}" : key.ToString();
- ExecuteCommand(keyStr);
- }
+ if (IsModifierKey(key)) return;
+
+ var modifierKeys = Keyboard.Modifiers;
+ var keyStr = modifierKeys != ModifierKeys.None ? $"{modifierKeys.ToString()}, {key.ToString()}" : key.ToString();
+ ExecuteCommand(keyStr);
}
private static void ExecuteCommand(string key)
@@ -47,27 +39,6 @@ namespace HandyControl.Tools
}
}
- private static ModifierKeys GetModifierKey(Key key)
- {
- switch (key)
- {
- case Key.LeftCtrl:
- case Key.RightCtrl:
- return ModifierKeys.Control;
- case Key.LeftAlt:
- case Key.RightAlt:
- return ModifierKeys.Alt;
- case Key.LeftShift:
- case Key.RightShift:
- return ModifierKeys.Shift;
- case Key.LWin:
- case Key.RWin:
- return ModifierKeys.Windows;
- default:
- return ModifierKeys.None;
- }
- }
-
private static bool IsModifierKey(Key key)
{
return key == Key.LeftCtrl || key == Key.LeftAlt || key == Key.LeftShift || key == Key.LWin ||
diff --git a/src/Shared/HandyControl_Shared/Tools/Hook/KeyboardHook.cs b/src/Shared/HandyControl_Shared/Tools/Hook/KeyboardHook.cs
index 9f171d48..32bb8dcf 100644
--- a/src/Shared/HandyControl_Shared/Tools/Hook/KeyboardHook.cs
+++ b/src/Shared/HandyControl_Shared/Tools/Hook/KeyboardHook.cs
@@ -76,20 +76,14 @@ namespace HandyControl.Tools
else if (wParam == KeyUpIntPtr)
{
var virtualKey = Marshal.ReadInt32(lParam);
- if (VirtualKey != virtualKey)
- {
- VirtualKey = virtualKey;
- KeyUp?.Invoke(null, new KeyboardHookEventArgs(virtualKey, false));
- }
+ VirtualKey = -1;
+ KeyUp?.Invoke(null, new KeyboardHookEventArgs(virtualKey, false));
}
else if (wParam == SyskeyUpIntPtr)
{
var virtualKey = Marshal.ReadInt32(lParam);
- if (VirtualKey != virtualKey)
- {
- VirtualKey = virtualKey;
- KeyUp?.Invoke(null, new KeyboardHookEventArgs(virtualKey, true));
- }
+ VirtualKey = -1;
+ KeyUp?.Invoke(null, new KeyboardHookEventArgs(virtualKey, true));
}
}
return UnsafeNativeMethods.CallNextHookEx(HookId, nCode, wParam, lParam);