namespace XFEExtension.NetCore.InputSimulator;
/// 可替换的输入发送后端。实现必须同步发送,失败时抛出异常。
/// 由 InputController 串行调用;不要在多个控制器之间共享同一后端实例。
public interface IInputBackend : IDisposable
{
/// 后端名称。
string Name { get; }
/// 是否支持 Unicode 文本事件。
bool SupportsUnicodeText { get; }
/// 发送物理按键。isKeyUp 为 true 时释放。
void SendKey(ScanCode key, bool isKeyUp);
/// 发送一个 UTF-16 码元的按下或释放事件;不支持时抛出 NotSupportedException。
void SendUnicode(char codeUnit, bool isKeyUp);
/// 移动鼠标。绝对模式下 x/y 为 0..65535,virtualDesktop 决定映射至整个桌面或主屏。
void MoveMouse(int x, int y, bool absolute, bool virtualDesktop);
/// 发送鼠标按键事件。
void SendMouseButton(MouseButton button, bool isKeyUp);
/// 滚动鼠标;120 为一格,水平正值向右,垂直正值向上。
void ScrollMouse(int delta, bool horizontal);
}