I hope this helps you . No tutorial, but the API function is MSDN - SendInput. To use it from C#, you have to declare the function as DllImport. Bot don't worry, someone else already did all the typing for you: pinvoke.net: SendInput (user32).
Getting device input (mouse, keyboard ...) on LINUX
I wish did fix the issue. XInput is only for gamepads, and is deprecated on windows 10 for the new IGamepad interface For keyboards and mice, you are looking for raw input. It works with windows messaging, but allow you to poll events at a low level, to make use of high DPI devices, higher polling rate and no windows desktop acceleration system.
Can't see mouse and keyboard device with usbManager android