DeftSharp.Windows.Input
0.10.0
dotnet add package DeftSharp.Windows.Input --version 0.10.0
NuGet\Install-Package DeftSharp.Windows.Input -Version 0.10.0
<PackageReference Include="DeftSharp.Windows.Input" Version="0.10.0" />
paket add DeftSharp.Windows.Input --version 0.10.0
#r "nuget: DeftSharp.Windows.Input, 0.10.0"
// Install DeftSharp.Windows.Input as a Cake Addin #addin nuget:?package=DeftSharp.Windows.Input&version=0.10.0 // Install DeftSharp.Windows.Input as a Cake Tool #tool nuget:?package=DeftSharp.Windows.Input&version=0.10.0
DeftSharp.Windows.Input
A powerful .NET library designed to control and manage the keyboard and mouse in the Windows OS. It is intended for use in various UI frameworks such as WPF, WinUI, Avalonia, and MAUI, providing a universal solution for all types of Windows applications.
The library offers a wide range of features including event subscriptions, bindings, preventing input events, device information and a lot of other things. It also provides flexible custom interceptors, allowing users to define their own logic.
The main goal of this library is to provide maximum user-friendliness so that you don't have to write a lot of code. Therefore, it includes many convenient methods that facilitate an intuitive and efficient process of working with input events.
You can read the full documentation here
Main Features
- Subscribe to global keyboard and mouse events
- Simulation of input from the code
- Prevent specific input events
- Change key bindings
- Custom interceptors
- Device information
Examples
Simple key subscription
You can subscribe to global keyboard events. Including their sequence and combination.
var keyboardListener = new KeyboardListener();
// Subscription for each click
keyboardListener.Subscribe(Key.Space, key => Trace.WriteLine($"The {key} was pressed"));
// One-time subscription
keyboardListener.SubscribeOnce(Key.Space, key => Trace.WriteLine($"The {key} was pressed"));
// Subscription to the combination
keyboardListener.SubscribeCombination([Key.LeftShift, Key.W], () =>
Trace.WriteLine($"The Shift + W was pressed"));
Input control from the code
You can simulate the operation of your keyboard and mouse by calling different input actions.
var keyboard = new KeyboardManipulator();
var mouse = new MouseManipulator();
keyboard.Press(Key.Escape);
keyboard.Press(Key.LeftCtrl, Key.V);
mouse.Click();
mouse.DoubleClick();
mouse.Scroll(150);
Prevent input events
You can prevent input events by default or with some condition.
var keyboard = new KeyboardManipulator();
var mouse = new MouseManipulator();
// Each press of this button will be ignored
keyboard.Prevent(Key.Delete);
// Prevent with condition
keyboard.Prevent(Key.Escape, () =>
{
var currentTime = DateTime.Now;
return currentTime.Minute > 30;
});
// Prevent mouse scroll
mouse.Prevent(PreventMouseEvent.Scroll);
Subscription to mouse move and get current coordinates
var mouseListener = new MouseListener();
mouseListener.Subscribe(MouseEvent.Move, () =>
Label.Text = $"X: {mouseListener.Position.X} Y: {mouseListener.Position.Y}");
Requirements
- .NET 8.0 for Windows
- Any UI framework (WPF, WinUI, MAUI, Avalonia)
License
This project is licensed under the terms of the MIT license. See the LICENSE file for details.
Contributing
We welcome any contributions to the development of this project. Whether you want to report a bug, suggest a new feature, or contribute code improvements, your input is highly valued. Please feel free to submit issues or pull requests through GitHub. Let's make this library even better together!
You can also use this e-mail deftsharp@gmail.com, if you have any ideas or suggestions.
If you want to support this library, you can put a star on this repository!
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0-windows7.0 is compatible. |
-
net8.0-windows7.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
You can see all the changes in the release changelog of our GitHub repository!