This library allows you to tap keyboard and mouse, to detect and record their activity even when an application is inactive and runs in background.
- Windows: .Net 4.0+
nuget install MouseKeyHook
private IKeyboardMouseEvents m_GlobalHook;
public void Subscribe()
{
// Note: for the application hook, use the Hook.AppEvents() instead
m_GlobalHook = Hook.GlobalEvents();
m_GlobalHook.MouseDownExt += GlobalHookMouseDownExt;
m_GlobalHook.KeyPress += GlobalHookKeyPress;
}
private void GlobalHookKeyPress(object sender, KeyPressEventArgs e)
{
Console.WriteLine("MouseDown: \t{0}", e.KeyChar);
}
private void GlobalHookMouseDownExt(object sender, MouseEventExtArgs e)
{
Console.WriteLine("MouseDown: \t{0}; \t System Timestamp: \t{1}", e.Button, e.Timestamp);
// uncommenting the following line will suppress the middle mouse button click
// if (e.Buttons == MouseButtons.Middle) { e.Handled = true; }
}
public void Unsubscribe()
{
m_GlobalHook.MouseDownExt -= GlobalHookMouseDownExt;
m_GlobalHook.KeyPress -= GlobalHookKeyPress;
//It is recommened to dispose it
m_GlobalHook.Dispose();
}
This library attaches to windows global hooks, tracks keyboard and mouse clicks and movement and raises common .NET events with KeyEventArgs and MouseEventArgs, so you can easily retrieve any information you need:
- Mouse coordinates
- Mouse buttons clicked
- Mouse wheel scrolls
- Key presses and releases
- Special key states
Additionally, there are MouseEventExtArgs
and KeyEventExtArgs
which provide further options:
- Input suppression
- Timestamp
- IsMouseDown/Up
- IsKeyDown/Up.
- Usage or programming related question? Post it on StackOverflow using the tag mousekeyhook
- Found a bug or missing a feature? Feed the issue tracker
The CI builds are generously hosted and run on the Travis and AppVeyor infrastructures.
Travis-CI | AppVeyor | |
---|---|---|
master | ||
vNext |
Year | URL |
---|---|
2000 - 2008 | http://www.codeproject.com/KB/cs/globalhook.aspx |
2008 - 2015 | https://globalmousekeyhook.codeplex.com/ |
2015 - now | https://github.com/gmamaladze/globalmousekeyhook |
- Fork and clone locally
- Create a topic specific branch. Add some nice feature.
- Send a Pull Request to spread the fun!
The MIT license (Refer to the LICENSE.md file)