@winput/mouse
v1.0.11
Published
Windows mouse automation for Bun - simulate clicks, movements, and listen to mouse events
Maintainers
Readme
@winput/mouse 🖱️
Mouse automation for Windows - move, click, drag, scroll, and monitor mouse state.
Requirements
- OS: Windows 64-bit
- Runtime: Bun (npm not supported)
Installation
bun add @winput/mouseUsage
import { mouse, LEFT, RIGHT, MIDDLE } from "@winput/mouse";
mouse.moveTo(500, 300);
mouse.click();
await mouse.smoothMoveTo(1000, 500, 0.5, "easeOutQuad");
mouse.listener.on.down((e) => console.log(e.button));
mouse.listener.start();API
mouse
| Method | Params | Returns | Description |
| --------------------------------------------- | ----------------------------------------------------------- | ----------------------- | ------------------ |
| position | - | Position | Cursor coordinates |
| moveTo(x, y, relative?) | number, number, boolean | Mouse | Move to position |
| moveRel(dx, dy) | number, number | Mouse | Move relative |
| smoothMoveTo(x, y, duration?, easing?) | number, number, number, Easing | Promise<Mouse> | Animated move |
| click(button?, repeat?, delay?) | MouseButton, number, number | Mouse | Click button |
| clickAt(x, y, button?) | number, number, MouseButton | Mouse | Move and click |
| press(button) | MouseButton | Mouse | Press button |
| release(button) | MouseButton | Mouse | Release button |
| hold(button, duration) | MouseButton, number | Mouse | Hold button |
| dragTo(x, y, button?, duration?) | number, number, MouseButton, number | Mouse | Drag to position |
| dragRel(dx, dy, button?, duration?) | number, number, MouseButton, number | Mouse | Drag relative |
| scroll(clicks, direction?) | number, Direction | Mouse | Scroll wheel |
| isPressed(button) | MouseButton | boolean | Check state |
| isAtPosition(x, y, tolerance?) | number, number, number | boolean | Check position |
| waitForPosition(x, y, timeout?, tolerance?) | number, number, number, number | Promise<boolean> | Wait for pos |
| waitForPress(button, timeout?) | MouseButton, number | Promise<boolean> | Wait for press |
| waitForRelease(button, timeout?) | MouseButton, number | Promise<boolean> | Wait for release |
| listener | - | Listener | Event listener |
Listener
| Method | Params | Returns | Description |
| ------------------ | ------------------------------- | ------- | --------------- |
| on.move(handler) | MouseHandler | void | Mouse moved |
| on.down(handler) | MouseHandler | void | Button pressed |
| on.up(handler) | MouseHandler | void | Button released |
| start() | - | void | Start listening |
| stop() | - | void | Stop listening |
Types
Position
{
x: number;
y: number;
}MouseButton
type MouseButton = "left" | "right" | "middle" | "x1" | "x2";Direction
type Direction = "vertical" | "horizontal";Easing
type Easing =
| "linear"
| "easeInQuad"
| "easeOutQuad"
| "easeInOutQuad"
| "easeInCubic"
| "easeOutCubic"
| "easeInOutCubic";MouseEvent
{
x: number;
y: number;
button: MouseButton;
event: string;
}MouseHandler
type MouseHandler = (event: MouseEvent) => void;Exports
| Export | Type | Description |
| ------------------------- | ----------------------------- | --------------------- |
| mouse | Mouse | Main mouse operations |
| LEFT, RIGHT, MIDDLE | MouseButton | Button constants |
| X1, X2 | MouseButton | Extended buttons |
