DeftSharp.Windows.Input 0.9.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package DeftSharp.Windows.Input --version 0.9.0                
NuGet\Install-Package DeftSharp.Windows.Input -Version 0.9.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DeftSharp.Windows.Input" Version="0.9.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add DeftSharp.Windows.Input --version 0.9.0                
#r "nuget: DeftSharp.Windows.Input, 0.9.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install DeftSharp.Windows.Input as a Cake Addin
#addin nuget:?package=DeftSharp.Windows.Input&version=0.9.0

// Install DeftSharp.Windows.Input as a Cake Tool
#tool nuget:?package=DeftSharp.Windows.Input&version=0.9.0                

DeftSharp.Windows.Input

Nuget version GitHub License Join the chat at https://gitter.im/DeftSharp/DeftSharp GitHub Stars

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 7.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 Compatible and additional computed target framework versions.
.NET net7.0-windows7.0 is compatible.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net7.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.

Version Downloads Last updated
0.10.0 277 8/30/2024
0.9.0 251 4/16/2024
0.8.2 129 4/10/2024
0.8.1 126 4/7/2024
0.8.0 119 4/7/2024
0.7.1 140 4/1/2024
0.7.0 132 3/28/2024
0.6.0 142 3/24/2024
0.5.0 141 3/21/2024
0.4.0 123 3/18/2024
0.3.0 152 3/10/2024
0.2.0 149 3/6/2024
0.1.0 158 3/4/2024

You can see all the changes in the release changelog of our GitHub repository!