private IntPtr LowLevelKeyboardCallback( int hookCode, IntPtr keyPressEventType, KeyboardLowLevelInputEvent keyboardEvent) { var hookResult = CallNextHookEx( (IntPtr)0, hookCode, keyPressEventType, keyboardEvent); if (hookCode < 0) { return(hookResult); } try { UpdateModifierKeys( keyPressEventType, keyboardEvent.VirtualKeyCode); // We only care about key down #pragma warning disable IDE0078 // Use pattern matching if (keyPressEventType == (IntPtr)KeyPressEventType.KeyDown || keyPressEventType == (IntPtr)KeyPressEventType.SysKeyDown) #pragma warning restore IDE0078 // Use pattern matching { var localRef = RegisteredHotkeys; var hotkey = new Hotkey { Key = keyboardEvent.VirtualKeyCode, ModifierKeys = CurrentModifierKeys, }; if (localRef.Contains(hotkey)) { OnHotkeyPressed(hotkey.Key, CurrentModifierKeys); } } } catch (Exception) { CurrentModifierKeys = ModifierKeys.None; } return(hookResult); }
private static extern IntPtr CallNextHookEx( IntPtr hookHandle, int hookCode, IntPtr keyPressEventType, KeyboardLowLevelInputEvent keyboardEvent);