private void Keyboard_KeyIntercepted(object sender, KeyInterceptedEventArgs e) { Console.WriteLine($"-> {e.KeyName} Code: {e.KeyCode}"); var k = e.KeyCode; if (k == 162 || k == 13) { //control and return return; } if (k == 231) { //automation return; } if (k >= 48 && k <= 57) { if (KeyboardPInvoke.GetKeyState(VirtualKey.Control) != -127) { //pressed return; } e.CancelThisKey(); int id = k - 48; if (id == 0) { _active = false; Console.WriteLine($"NinjaDev Disabled"); return; } var snippet = _manager.GetSnippet(id); if (snippet == "") { Console.WriteLine("No snippet with ID " + id); return; } _currentDriver = new SnippetDriver(snippet); Console.WriteLine($"Snippet {id} active"); _active = true; return; } if (_active) { if (_currentDriver.Available) { e.CancelThisKey(); var letter = _currentDriver.Next(); if (letter == 10) { return; } if (letter == 13) { //enter _keyboard.KeyPress(VirtualKeyCode.RETURN); return; } _keyboard.TextEntry(letter); return; } else { Console.WriteLine("Snippet is over"); } } }
private IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) { int vkCode = Marshal.ReadInt32(lParam); if (vkCode == 231) { //automation return CallNextHookEx(_hookID, nCode, wParam, lParam); } if (nCode >= 0 && wParam == (IntPtr)WM_KEYUP) { if (_lasCancelledtDown == Marshal.ReadInt32(lParam)) { return (IntPtr)1; } } if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN) { vkCode = Marshal.ReadInt32(lParam); var args = new KeyInterceptedEventArgs(vkCode); Console.WriteLine("key-> " + vkCode); OnKeyIntercepted(args); if (args.KeyCancelled) { _lasCancelledtDown = vkCode; return (IntPtr)1; } } return CallNextHookEx(_hookID, nCode, wParam, lParam); }
protected virtual void OnKeyIntercepted(KeyInterceptedEventArgs e) { KeyIntercepted?.Invoke(this, e); }