public void RegisterKeyAction(Keys key, HotkeyModifiers modifier, Action action) { var hotkeyCombination = new HotkeyCombination { Key = key, Modifier = modifier }; hotkeyActions[hotkeyCombination] = action; }
private IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN) { Keys keyPressed = (Keys)Marshal.ReadInt32(lParam); var modifier = HotkeyModifiers.None; if (GetCtrlPressed()) { modifier |= HotkeyModifiers.Ctrl; } if (GetAltPressed()) { modifier |= HotkeyModifiers.Alt; } if (GetAltPressed()) { modifier |= HotkeyModifiers.Shift; } var hotkeyCombination = new HotkeyCombination { Key = keyPressed, Modifier = modifier }; if (hotkeyActions.TryGetValue(hotkeyCombination, out Action hotkeyAction)) { hotkeyAction?.Invoke(); } } return(WinApi.WinApi.CallNextHookEx( keyboardProcHook, nCode, wParam, lParam)); }
public bool Equals(HotkeyCombination hotkeyCombination) { return(hotkeyCombination != null && hotkeyCombination.Key == Key && hotkeyCombination.Modifier == Modifier); }