private void KeyboardHook_OnKeyboardEvent(KeyState state, VirtualKeyCode key) { if (OnKeyboardEvent != null) { Task.Factory.StartNew(() => { OnKeyboardEvent?.Invoke(state, key); }); } if (mapKeyState.ContainsKey(key)) { mapKeyState[key] = state == KeyState.Up && mapKeyState[key] == KeyState.Down ? KeyState.Pressed : state; } Task.Factory.StartNew(() => { var currentKeyCallbackDict = singleKeyCallback; // create a temp var to avoid locking if (currentKeyCallbackDict != null && currentKeyCallbackDict.Count != 0) { if (currentKeyCallbackDict.ContainsKey(key)) { var currentList = currentKeyCallbackDict[key]; foreach (var callback in currentList) { callback(state, key); } } } }); }
private void InvokeEventListeners(KeyState state, VirtualKeyCode key) { Task.Factory.StartNew(() => { OnKeyboardEvent?.Invoke(state, key); }); }
private IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) { Boolean IsDown = wParam == (IntPtr)EWindowsMessage.KEYDOWN || wParam == (IntPtr)EWindowsMessage.SYSKEYDOWN; int vkCode = Marshal.ReadInt32(lParam); OnKeyboardEvent?.Invoke(vkCode, IsDown); return(CallNextHookEx(HookID, nCode, wParam, lParam)); }