- Lightweight low-level global keyboard hook with minimal dependencies.
- Designed to work with modern UI frameworks (WPF, MAUI, WinUI 3) out of the box - no fiddling with outdated namespaces and Key types.
- Uses PInvoke signatures in order to avoid reliance on CsWin32 source generator.
- Source code is commented and thoroughly explained to allow you to expand functionality.
- Proper garbage disposal of unmanaged code to prevent memory leaks.
- Usage guide below allows you to get up and running quickly.
It is essentially the same as the code for the console application above. You can omit System.Windows.Threading.Dispatcher.Run();
as UI frameworks already have a message queue. You can initialize the keyboard hook wherever you choose, whether it be upon a click or when the screen is initialized. Please remember to dispose (kbh.Dispose();
) when you no longer require the hook.
KeyboardHookEventArgs
contains the property KeyPressType
and InputEvent
which is of type LowLevelKeyboardInputEvent
. See below for what that entails. If you would like to add further functionality, you can do so by adding properties to the KeyboardHookEventArgs
class.
MIT